출처 : 반크(독도포스터)
도전문제]
1) 뺄셈이나 곱셈, 나눗셈 문제도 출제할 수 있는가?
2) 난수 발생기의 씨드를 현재 시간으로 초기화하는 srand(time(NULL))을 호출한 후에 난수를 발생시켜보자.
참고풀이]
//Dev-C++ 5.11로 작업함.
#include <stdio.h>
#include <stdlib.h> //rand(), srand()
#include <time.h> //time()
int main()
{
int i,j;//반복변수
int ans;//사용자 답 변수
int x,y;//임의의 수를 넣을 변수
int chk;//+(1), -(2), *(3), /(4) 부호 변수
int key;//산수 문제를 계속 출제할 지 체크변수
//문제를 출제할 때 마다 다른 문제를 출제하기 위하여
//시간별로 문제를 발생할 수 있도록 srand()로 초기화 설정한다.
srand(time(NULL));
printf("산수 문제를 자동으로 출제합니다.\n");
printf("(정답을 맞출 때까지 계속 반복합니다.)\n");
key=0;
while(1)
{
chk=rand()%4+1;//1~4 중 임의의 수를 발생한다.
x=rand()%100;//0~99사이의 임의의 수를 발생한다.
y=rand()%100;//0~99사이의 임의의 수를 발생한다.
if(chk==1)
{
printf("%d + %d = ",x,y);
scanf("%d",&ans);
while(x+y!=ans)
{
printf("틀렸습니다.\n");
printf("%d + %d = ",x,y);
scanf("%d",&ans);
}
printf("맞았습니다.\n");
key=1;
}
else if(chk==2)
{
printf("%d - %d = ",x,y);
scanf("%d",&ans);
while(x-y!=ans)
{
printf("틀렸습니다.\n");
printf("%d - %d = ",x,y);
scanf("%d",&ans);
}
printf("맞았습니다.\n");
key=1;
}
else if(chk==3)
{
printf("%d x %d = ",x,y);
scanf("%d",&ans);
while(x*y!=ans)
{
printf("틀렸습니다.\n");
printf("%d x %d = ",x,y);
scanf("%d",&ans);
}
printf("맞았습니다.\n");
key=1;
}
else
{
//나누기는 분모가 0이면 안된다.
if(y!=0)
{
printf("몫만 입력하세요.\n");
printf("%d / %d = ",x,y);
scanf("%d",&ans);
while((int)(x/y)!=ans)
{
printf("틀렸습니다.\n");
printf("%d / %d = ",x,y);
scanf("%d",&ans);
}
printf("맞았습니다.\n");
key=1;
}
}
if(key) break;
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 여름
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 21제] C언어 콘서트 CHAPTER 6 Programming 1 p249 (0) | 2021.11.25 |
---|---|
C언어 20제] C언어 콘서트 CHAPTER 6 p242 도전문제 (3) (0) | 2021.11.25 |
C언어 18제] C언어 콘서트 CHAPTER 6 p233 도전문제 (0) | 2021.11.24 |
C언어 17제] C언어 콘서트 CHAPTER 6 p232 도전문제 (0) | 2021.11.23 |
C언어 16제] C언어 콘서트 CHAPTER 6 p218 도전문제 (0) | 2021.11.23 |
댓글