⭐️ 조건 : 입력값이 54321일 경우, 출력값이 43215가 되도록
#include <stdio.h>
int main(void) {
int n[5];
int i;
for(i=0; i<5; i++){
printf("숫자를 입력해주세요: ");
scanf("%d", &n[i]);
}
for(i=0; i<5; i++){
printf("%d", __________ );
}
return 0;
}
🖍 n[(i+1) % 5]
% 연산자 : 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자Shift operator
<<
: 왼쪽 값을 오르쪽 값만큼 비트를 왼쪽으로 이동하는 연산자
예)int x=11; printf("%d", x<<3);
① 11을 2진수로 바꾸면 1011,
② 왼쪽으로 3비트 이용하면 1011000,
③ 1011000를 10진수로 바꾸면 88.>>
: 왼쪽 값에 오르쪽 값만큼의 부호 비트를 채우면서 오른쪽으로 이동하는 연산자
예)int x=11; printf("%d", x>>1);
① 11을 2진수로 바꾸면 1011,
② 오른쪽으로 1비트 이용하면 101,
③ 101를 10진수로 바꾸면 5.
Bit operator
&
: AND 연산자,|
: OR 연산자, 비트 값이 하나라도 1이면 해당 비트 값은 1^
: XOR 연산자, 비트 값이 서로 다르면 해당 비트 값은 1~
: NOT 연산자, 비트의 값을 반대로 바꾸는 연산자
⭐️ 조건 : 돈이 총 46320원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 아래의 항목들을 사용하여 "최소한의 코드"를 작성
m
/
, %
[
, ]
, (
, )
1000
, 500
, 100
, 10
class HelloWorld {
public static void main(String[] args) {
int m = 4620;
int a = ____________;
int b = ____________;
int c = ____________;
int d = ____________;
System.out.println(a); // 천원짜리 4장 출력
System.out.println(b); // 오백원원짜리 1장 출력
System.out.println(c); // 백원짜리 1장 출력
System.out.println(d); // 십원짜리 2장 출력
}
}
🖍
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10
⭐️ 조건 : 입력값은 홍길동, 김철수, 박영희 순서로 주어짐
#include <stdio.h>
#include <stdlib.h>
char n[30];
char *test(){
printf("입력하세요: ");
gets(n);
return n;
}
int main() {
char * test1;
char * test2;
char * test3;
test1 = test();
test2 = test();
test3 = test();
printf("%s\n", test1);
printf("%s\n", test2);
printf("%s", test3);
}
🖍
박영희
박영희
박영희
1️⃣ test1, test2, test3는 char형 변수를 가리키는 포인터 변수 선언.
2️⃣test()
함수를 실행,test()
함수는char *
타입으로 리턴하며,n
은char *
타입으로 지정 됨.
3️⃣gets()
함수를 통해 입력 받은 문자열을 전역 변수n[30]
에 저장. (배열명 == 배열의 주소값)
4️⃣return n
에 의해 n의 주소값을 돌려줌.
5️⃣ test1에 n의 주소값을 저장.
6️⃣test2 = test();
의 구문에 의해gets(n)
의 함수가 다시 호출되면서 '홍길동'이라고 저장되어 있는 전역 변수n[30]
에 '김철수'를 덮어씀.
7️⃣ test2에 n의 주소값을 저장.
8️⃣test3 = test();
의 구문도 마찬가지로 test3에 n의 주소값을 저장.
9️⃣ ∴ test1, test2, test3 모두 같은 n의 주소값을 가지고 있으며, n은 마지막으로 저장된 '박영희' 값을 가지고 있음.
*
: 자료형 뒤에*
를 붙이면 주소를 저장하는 포인터 변수,
*
연산은 주소에 해당하는 값을 가리킴&
: 일반 변수명 뒤에&
를 붙이면 해당 변수의 주솟값
*(&)
과 같이 두 연산을 같이 쓰면 서로 상쇄 됌gets()
: scanf() 함수와 달리 문자열을 공백 단위로 끊지 않고 줄바꿈이 일어날 시 문자열 끝에 '\0'이 붙여, 공백을 포함한 문자열을 입력 받음.getchar()
: 문자를 입력 받음puts()
: 문자열(string)만을 출력하는 함수, 문자열 출력 후 줄 바꿈을 시전 함putchar()
: 문자를 출력
학번 | 이름 | 학년 | 전공 | 전화번호 |
---|---|---|---|---|
240416 | 푸바오 | 4 | 소프트웨어공학 | 010-0000-0000 |
⭐️ 조건 : 문자열의 경우 작은 따옴표('
) 사용
CREATE TABLE 학생(
학번 int,
이름 varchar(20),
학년 int,
전공 varchar(30),
전화번호 varchar(20),
)
🖍 INSERT INTO 학생(학번, 이름, 학년, 전공, 전화번호) VALUES(240416, '푸바오', 4, '소프트웨어공학', '010-0000-0000
');
- DML : DB 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- INSERT : 테이블에서 새로운 튜플 삽입
INSERT INTO 학생 VALUES('푸바오', 3);
#include <stdio.h>
int main() {
int n[3] = [73, 95, 82];
int sum = 0;
for(int i=0; i<3; i++){
sum += n[i];
}
switch(sum/3){
case 10:
case 9: printf("A");
case 8: printf("B");
case 7:
case 6: printf("C");
default: printf("D");
}
}
🖍 BCD
1️⃣ sum = 73 + 95 + 82 = 250.
2️⃣ sum / 3 = 250 / 3 = 8.
3️⃣ 8과 일치하는 값을case
문을 실행. ∴ B 출력.
4️⃣break
가 존재하지 않을 경우, 진입한case
부터break
를 만날 때까지 또는switch
문 끝까지 동작.
5️⃣ C 출력. D 출력.
break
: 반복문이나switch
문 안에서break
가 나오면 블록을 벗어남continue
: 반복문에서continue
가 나오면continue
이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김default
:case
의 어느 값도 만족하지 않으면default
로 진입해 명령문 실행
참고,
https://newbt.kr/시험/정보처리기사%20실기/2023년%202회/오소프트0506,
https://www.youtube.com/watch?v=czoWXdwEygc,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.