각 라인의 실행이 끝났을때 quack의 값은 얼마인가?
예시 + (답안)
int quack = 2; (2)
quack += 5; (7)
quack *= 10; (70)
quack -= 6; (64)
quack /= 8; (8)
quack %= 3; (2)
value가 int형 값으로 주어질 때, 다음 루프는 무엇을 출력하는가?
예시
for (value = 36; value > 0; value /= 2)
printf("%3d", value);
답안
36 18 9 4 2 1
value가 int형이 아니라 double형 값이면, 무슨 일이 일어나는가?
답안
printf("%3f", value);으로 가정했을때
부동소수점까지 출력하므로 1이하로 값이 내려가 언더플로어 발생할때까지 반복된다.
다음과 같은 검사 조건을 나타내라.
예시
a. x는 5보다 크다.
b. scanf()가 (x라는) double형 변수에 하나의 수를 읽으려다 실패한다.
c. x는 값 5를 가진다.
답안
a. x > 5
b. scanf("%lf", &x) == 0
c. x = 5;
다음과 같은 검사 조건을 나타내라.
예시
a. scanf()가 하나의 정수값을 읽는데 성공한다.
b. x는 5가 아니다.
c. x는 20 또는 그보다 크다.
답안
a. scanf("%d", &x) == 1
b. x != 5
c. x >= 20
다음 프로그램은 완벽하지 않다고 생각된다. 에러를 찾을 수 있겠는가?
예시 + (답안 == 주석)
#include <stdio.h>
int main(void)
{
int i, j, list(10); // 배열의 길이 지정은 대괄호([)를 사용한다.
for(i = 1, i <= 10, i++) // for(초기문; 조건문; 증감문) 으로 구성된다.
{
list[i] = 2 * i + 3;
// for(초기문; 조건문; 증감문) 으로 구성된다. + 무한반복문
for(j = 1, j >=1, j++)
printf(" %d", list[j]);
printf("\n");
// (주관) 여기에 for문의 끝을 알리는 } 문자가 와야 할 것이다.
}
중첩 루프를 사용하여 다음과 같은 패턴을 출력하는 프로그램을 작성하라.
#include <stdio.h>
int main(void)
{
for(int q=0; q < 4; q++)
{
for(int w=0; w < 8; w++)
printf("$");
printf("\n");
}
return 0;
}
다음 프로그램은 각각 무엇을 출력하는가?
예시
a.
#include <stdio.h>
int main(void)
{
int i = 0;
while (++i < 4)
printf("Hi! ");
do
printf("Bye! ");
while (i++ < 8);
return 0;
}
b.
#include <stdio.h>
int main(void)
{
int i;
char ch;
for(i = 0, ch = 'A'; i < 4; i++, ch += 2 * i)
printf("%c", ch);
return 0;
}
답안
a. Hi! Hi! Hi! Bye! Bye! Bye! Bye! Bye!
b. ACGM
입력이 Go west, young man!으로 주어졌을 때, 다음 프로그램들은 각각 무엇을 출력하는가?
(!는 ASCII 코드에서 스페이스 문자 다음에 온다.)
예시
a.
#include <stdio.h>
int main(void)
{
char ch;
scanf("%c", &ch);
while (ch != 'g')
{
printf("%c", ch);
scanf("%c", &ch);
}
return 0;
}
b.
#include <stdio.h>
int main(void)
{
char ch;
scanf("%c", &ch);
while (ch != 'g')
{
printf("%c", ++ch);
scanf("%c", &ch);
}
return 0;
}
c.
#include <stdio.h>
int main(void)
{
char ch;
do
{
scanf("%c", &ch);
printf("%c", ch);
} while (ch != 'g');
return 0;
}
d.
#include <stdio.h>
int main(void)
{
char ch;
scanf("%c", &ch);
for (ch = '$'; ch != 'g'; scanf("%c", &ch))
putchar(ch);
return 0;
}
답안
a. Go west, youn
b. Hp!xftu-!zpvo
c. Go west, youn
d. Go west, youn
다음 프로그램은 무엇을 출력하는가?
예시
#include <stdio.h>
int main(void)
{
int n, m;
n = 30;
while (++n <= 33)
printf("%d\\", n);
n = 30;
do
printf("%d\\", n);
while (++n <= 33);
printf("\n***\n");
for(n = 1; n * n < 200; n +=4)
printf("%d\n", n);
printf("\n***\n");
for(n = 2, m = 6; n < m; n *= 2, m += 2)
printf("%d %d\n", n, m);
printf("\n***\n");
for(n = 5; n > 0; n--)
{
for(m = 0; m <= n; m++)
printf("=");
printf("\n");
}
return 0;
}
답안
31\32\33\30\31\32\33\
***
1
5
9
13
***
2 6
4 8
8 10
***
======
=====
====
===
==
다음과 같은 선언이 있다고 가정하자.
double mint[10];
예시 + (답안)
a. 이 배열의 이름은 무엇인가. (mint)
b. 이 배열은 몇개의 원소를 가지고 있는가? (10)
c. 각 원소에는 어떤 종류의 값을 저장할 수 있는가? (double형 부동소수점 수)
d. 이 배열과 함께 scanf()를 사용할 때, 다음 중 정확한 것은 어느 것인가?
i. scanf("%lf", mint[2]) (X)[주소연산자X]
ii. scanf("%lf", &mint[2]) (O)
iii. scanf("%lf", &mint) (X)[배열 이름은 주소를 가리킴]
노아 씨는 2의 배수 단위로 카운트 하는 것을 좋아한다. 그래서 배열을 하나 만들고, 그 배열을 정수 2, 4, 6, 8 등으로 채우는, 다음과 같은 프로그램을 작성했다. 그런데 이 프로그램에서 무엇이 잘못되었을까?
예시
#include <stdio.h>
#define SIZE 8
int main(void)
{
int by_two[SIZE];
int index;
for (index = 1; index <= SIZE; index++)
by_twos[index] = 2 * index;
for (index = 1; index <= SIZE; index++)
printf("%d ", by_twos);
printf("\n");
return 0;
}
답안
선언할 때 0부터 배열길이-1까지 메모리를 할당한다.
그러니 사용할때도 0부터 배열길이-1까지 사용해야 한다.
그러나 위 소스는 그 규칙을 어겨 잘못된 프로그램이 됬다.
long형 값을 리턴하는 함수를 작성하려고 한다. 함수 정의에 무엇을 포함시켜야 하는가?
답안
long func(void) // 반환형
{
long value;
reutrn value; // return long형 값
}
int형 전달인자를 하나 전달받아, 그 값의 제곱을 long형 값으로 리턴하는 함수를 정의하라.
답안
long square(int num)
{
long value = num * num;
return value;
}
다음 프로그램은 무엇을 출력하는가?
예시
#include <stdio.h>
int main(void)
{
int k;
for (k = 1, printf("%d: 안녕!\n", k); printf("k = %d\n", k),
k * k < 26; k += 2, printf("이제 k는 %d\n", k) )
printf("루프 몸체에서 k는 %d\n", k);
return 0;
}
답안
1: 안녕!
k = 1
루프 몸체에서 k는 1
이제 k는 3
k = 3
루프 몸체에서 k는 3
이제 k는 5
k = 5
루프 몸체에서 k는 5
이제 k는 7
k = 7