하루 하나 c언어 문제 정리

2025. 5. 26. 09:45정처기 실기

(2020 1회차)

12. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오. 

 #include <stdio.h>
 void main(){
 	int i,j;
    int temp;
    int a[5] = {75,95,85,100,50};
    
    for(i=0; i<4; i++){
    	for(j=0; j<4-i; j++){
        	if(a[j] > a[j+1]){
            	temp=a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
             }
           }
        }
        
       	for(i=0; i<5; i++){
        	printf("%d", a[i]);
        }
  }

 

#정렬, #for문, #이중for문, #배열, #서식 지정자 주의

 

a[j] > a[j+1] 일 때 큰 수가 뒤로 가는 로직이 실행되고, 서식 지정자에서 다른 형식이 없으므로

출력 결과는 50758595100

 

 

 

 

(2020 3회차)

2. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
	void main(){
    	int i=0, c=0;
        while (i<10){
        i++;
        c*=i;
        }
        printf("%d",c);
   }

 

#while문 #후위 연산자

 

i = 0 시작 > i++로 인해 i = 1, c = 0 * 1 = 0

이후 i 값이 얼마나 늘어나든 0에 i를 곱하는 형태이므로

출력 결과는 0

 

 

 

 

(2020 3회차)

13. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.

#include <studio.h>
int r1(){
	return 4;
}
int r10(){
	return (30+r1());
}
int r100(){
	return (200+r10());
}
int main(){
	printf("%d\n", r100());
    return 0;
}

 

#함수 호출 #함수 호출 중첩

 

r100() 호출 > 200 + r10()

r10() 호출 > 30 + r1()

r1() 호출 > 4

 

r10() = 30 + 4 = 34

r100() = 200 + 34 = 234

출력 결과는 234

 

 

 

 

(2021 1회차)

15. 다음은 C언어 프로그램이다. 실행 결과를 쓰시오.

#include <stdio.h>

struct good {
	char name[10];
    int age;
 };
 
 void main(){
 	struct good s[] = {"Kim",28,"Lee",38,"Seo",50,"Park",35};
    
    struct good *p;
    p = s;
    p++;
    printf("%s\n", p-> name);
    printf("%d\n", p-> age);

 

#구조체 #포인터 #포인터연산 #후위연산자 #배열

 

p = s 로 포인터 변수 p는 배열 s의 첫 번째 값, s[0] ("kim", 28)의 주소를 저장한다.

그리고 p++ 로 인해 인덱스 하나 뒤의 값, s[1]의 주소를 저장한다.

즉 p = s + 1이 된다.

 

따라서 출력 결과는

Lee

38

 

 

 

(2021 2회차)

16. 다음은 C언어에 관한 소스코드이다. 실행 결과값을 작성하시오.

int main(){
   int res;
   res = mp(2,10);
   printf("%d",res);
   return 0;
}

int mp(int base, int exp) {
   int res = 1;
   for(int i=0; i < exp; i++){
      res = res * base;
   }
   
   return res;
}

 

#함수 #반복문 #return

 

res = mp(2, 10)

mp(2, 10) 은

 

{

int res = 1

for(int i = 0; i < 10; i++) { res = res * 2 }

}

 

이므로

 

1. res = 1 x 2
2. res = 2 x 2
3. res = 4 x 2
4. res = 8 x 2
5. res = 16 x 2
6. res = 32 x 2
7. res = 64 x 2
8. res = 128 x 2
9. res = 256 x 2
10. res = 512 x 2

 

따라서 1024 반환

 

출력 결과는 1024