출처 : 반크(독도 포스터)
도전문제]
3) 1번이 아니고 10번 맞추면 종료하도록 소스를 변경해보자.
참고풀이]
//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;//산수 문제를 계속 출제할 지 체크변수
int count;//문제를 맞춘 개수를 세는 변수
char ch;//산술기호 변수
//문제를 출제할 때 마다 다른 문제를 출제하기 위하여
//시간별로 문제를 발생할 수 있도록 srand()로 초기화 설정한다.
srand(time(NULL));
printf("산수 문제를 자동으로 출제합니다.\n");
printf("(정답을 10개 맞추어야 문제 출제를 종료합니다.)\n");
for(count=1;count<=10;count++)
{
chk=rand()%4+1;//1~4 중 임의의 수를 발생한다.
x=rand()%100;//0~99사이의 임의의 수를 발생한다.
//나누기는 분모가 0이면 안된다.
do{
y=rand()%100;//0~99사이의 임의의 수를 발생한다.
}while(chk==4 && y==0);
if(chk==1) ch='+';
else if(chk==2) ch='-';
else if(chk==3) ch='x';
else ch='/';
key=0;
while(1)
{
if(chk==4) printf("나누기 연산은 몫만 입력하세요.\n");
printf("%d %c %d = ",x,ch,y);
scanf("%d",&ans);
switch(chk)
{
case 1: if(x+y==ans) key=1; break;
case 2: if(x-y==ans) key=1; break;
case 3: if(x*y==ans) key=1; break;
default: if((int)(x/y)==ans) key=1;
}
if(key) break;
printf("틀렸습니다.\n");
printf("정답을 맞출 때까지 계속 반복됩니다.\n");
}
printf("맞았습니다.\n");
}
printf("수고하셨습니다.\n");
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 22제] C언어 콘서트 CHAPTER 6 Programming 2 p249 (0) | 2021.11.26 |
---|---|
C언어 21제] C언어 콘서트 CHAPTER 6 Programming 1 p249 (0) | 2021.11.25 |
C언어 19제] C언어 콘서트 CHAPTER 6 p242 도전문제 1, 2 (0) | 2021.11.25 |
C언어 18제] C언어 콘서트 CHAPTER 6 p233 도전문제 (0) | 2021.11.24 |
C언어 17제] C언어 콘서트 CHAPTER 6 p232 도전문제 (0) | 2021.11.23 |
댓글