반응형

1번


값에 의한 호출 함수와 참조에 의한 호출함수를 구분하여 설명하시오



정답:


(책394)

값에 의한 호출 함수(Call by value)

함수를 호출할 때 매개체가 값만 필요로 하기 때문에 그 값을 그대로 메모리의 새로운 영역에 복사하여 사용하는 함수



참조에 의한 호출 함수(Call by reference

함수를 호출할 때 값 대신에 주소를 넘겨주어 원본 그대로 함수 내에서 조작하기위한 함수








2번


for-while 바꾸기



정답


for문


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
 
int main(void)
{
    int i;
    for (i = 0; i < 5; i++)
    {
        printf("for %d번 실행\n", i);
    }
 
    printf("\n");
 
    return 0;
}
cs

while문
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main(void)
{
    int j;
    j = 0;
    while (j < 5)
    {
        printf("%d번 실행\n", j);
        j++;
    }
}
 
cs



실행결과를 보자





for와 while을 쉽게 바꾸는 방법은!

for( i = 0 ; i < 5 ; i++)안의 3가지 i=0, i<5, i++를 while에 각각 위, 조건부분, 블록의 마지막에 배치시켜두면된다






3번



if elseif else문을 switch문으로 바꾸어보아라. a면 a입니다. b면 b입니다. 그밖의 문자라면 다른문자라고 출력하시오

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
 
int main(void)
{
    char in;
    scanf("%c"&in);
 
    if (in == 'a')
    {
        printf("a입니다\n");
    }
    else if (in == 'b')
    {
        printf("b입니다\n");
    }
    else
    {
        printf("다른 문자입니다\n");
    }
}
cs


정답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include<stdio.h>
 
int main(void)
{
    char in;
    scanf("%c"&in);
    switch (in)
    {
    case 'a':
        printf("a입니다\n");
        break;
    case 'b':
        printf("b입니다\n");
        break;
    default:
        printf("다른 문자입니다\n");
    }
}
cs






4번



if elseif else문을 switch문으로 바꾸어보아라. 
단 점수가 90점 이상이면 A, 80점 이상이면 B, 그미만이면 C를 출력하시오



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
#include<stdio.h>
 
int main(void)
{
    int input;
    scanf("%d"&input);
 
    if (input >= 90 && input <= 100)
    {
        printf("90점 이상 A\n");
    }
    else if (input >= 80)
    {
        printf("80점 이상 B\n");
    }
    else
    {
        printf("그미만 C\n");
    }
}
cs


switch 정답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 
#include<stdio.h>
 
int main(void)
{
    int input;
    scanf("%d"&input);
    input = input / 10// 이렇게하면 십의자리 숫자만 나올 것이다.
 
    switch (input)
    {
        // case 10에 break를 안주게되면 input이 10일때 break를 만날때 까지 실행한다
        // 따라서 input이 10일때 90점이상이 출력된다.
    case 10:
    case 9:
        printf("90점 이상 A\n");
        break;
    case 8:
        printf("80점 이상 B\n");
        break;
    default:
        printf("그미만 C\n");
    }
}
cs






5번

다음출력결과 쓰시오

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
#include<stdio.h>
 
int main(void)
{
    int a = 0;
    int b = 1;
    printf("%d\n", a++);
    printf("%d\n", a++);
    b = a++;
    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n"++a);
}
cs


정답





풀이 :

++이 뒤에 있는 경우(a++)는
문장의 끝 (세미콜론 ;)를 만나기 전까지는 원래의 값을 유지하고, 문장이 끝나면 그떄 1이 증가한다.
즉 첫번째 출력 후 1이 증가될 것이다.
첫번쨰 출력 -> 0   출력 후 a = 1;
두번째 출력 -> 1   출력 후 a = 2;

b = a++;도 마찬가지이다. ++은 세미콜론을 지나야 1이 증가된다. 현재는 a가 2이므로 b = 2가 되고, a = 3이 된다.
a = 3, b = 2 이다.

세번째 출력 -> 3  ( a = 3이므로)
네번째 출력 -> 2  ( b = 2이므로)

++a는 먼저 1 증가시킨다음에 a를 나타낸다.(a++과 다르다) 즉 a = 3이었으므로 먼저 1 증가시키어 a = 4가 된다.

다섯번째 출력 -> 4 ( a = 4 이다.)


반응형