4. 난수 : 컴퓨터가 임의로 발생 시키는 수
rand()
1) a<=난수<=b를 구하려면?
rand()%(상-하+1)+하;
rand()%(b-a+1)+a;
문) 난수를 5개 발생
#include<stdio.h>
#include<stdlib.h>//rand()
#include<time.h>//time()
int main()
{
int r,i;
//srand(unsigned int)time(NULL));
srand(time(NULL));
for(i=1;i<=5;i++)//i발생회수
{
r=rand();
printf("%d\n",r);
}
return 0;
}
문) 주사위를 100번던져 그의 눈을 출력
/*9주사위.c
문)주사위를 100번던져 그의 눈을 출력
4 5 2 2 ...
......
1의 눈의 개수 : xx개
2의 눈의 개수 : xx개
...
6의 눈의 개수 : xx개
1<=주사위<=6
0+1<=rand()%6+1<=5+1
1<=rand()%6+1<=6
*/
#include<stdio.h>
#include<stdlib.h>//rand()
#include<time.h>//time()
int main()
{
int r,i,c1,c2,c3,c4,c5,c6;
//srand(unsigned int)time(NULL));
//c1=0;c2=0;
c1=c2=c3=c4=c5=c6=0;//할당순서 우 ---> 좌
//srand(unsigned int)time(NULL));
srand(time(NULL));
for(i=1;i<=100;i++)//i발생회수
{
r=rand()%(6-1+1)+1;//r=rnad()%6+1;
printf("%d ",r);
if(i%10==0) printf("\n");
switch(r)
{
case 1:c1++;break;
case 2:c2++;break;
case 3:c3++;break;
case 4:c4++;break;
case 5:c5++;break;
case 6:c6++;break;
}
}
printf("-----------------------\n");
printf("1의 눈의 개수 : %d개\n",c1);
printf("2의 눈의 개수 : %d개\n",c2);
printf("3의 눈의 개수 : %d개\n",c3);
printf("4의 눈의 개수 : %d개\n",c4);
printf("5의 눈의 개수 : %d개\n",c5);
printf("6의 눈의 개수 : %d개\n",c6);
printf("%d\n",c1+c2+c3+c4+c5+c6);
return 0;
}
문) 덧셈
/* 10.덧셈.c 문)2자리수 난수, 1자리수난수를 발생시켜 4개의 덧셈문제를 풉니다.
1)87 + 7 = ? 94 (사용자 답 입력)
정답
2)55 + 2 = > 60
오답!
...
------------------------------------
정답수 : x개 xx점 (1문제당 20점)
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
int a,b,sdap,i,jdap,cn;
char pan[6];
srand((unsigned int)time(NULL));
cn=0;
for(i=1;i<=5;i++)
{
a=rand()%(99-10+1)+10;//10<=2자리수 난수 <=99
b=rand()%(9-0+1)+0;//0<=1자리수난수<=9
jdap=a+b;//정답지
printf("%d) %d + %d =?",i,a,b);//문제 제시
scanf("%d",&sdap);//학생답 입력
if(sdap==jdap)
{strcpy(pan,"정답!");}
else
strcpy(pan,"오답!");
printf(" %s\n",pan);
}
printf("--------------------\n");
printf("정답수 : %d개 %d점\\n",cn,cn*20);
return 0;
}
문) 사칙연산
/* 11.사칙연산.c 문)2자리수 난수, 1자리수난수를 발생시켜 5개의 덧셈문제를 풉니다.
10ㅡ=2자리수 난수<=99, 0<=1자리수난수<=9
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
int a,b,sdap,i,op,opr,jdap,cn;
char pan[6];
srand((unsigned int)time(NULL));
cn=0;
for(i=1;i<=5;i++)
{
a=rand()%(99-10+1)+10;//10<=2자리수 난수 <=99
b=rand()%(9-0+1)+0;//0<=1자리수난수<=9
op=rand()%(4-1+1)+1;//1<=연산자로 이용할 난수<=4
//printf("op : %d\n",op);
switch(op)
{
case 1: opr='+';jdap=a+b;break;
case 2: opr='-';jdap=a-b;break;
case 3: opr='*';jdap=a*b;break;
case 4: opr='/';jdap=a/b;break;
if(b==0) b=rand()%(9-1+1)+1; // 1<=b<=9 주의
jdap=a/b;break;
}
printf("%d) %d %c %d=?",i,a,opr,b);//문제 제시
scanf("%d",&sdap);//학생답 입력
if(sdap==jdap)
{strcpy(pan,"정답!");cn++;}
else
strcpy(pan,"오답!");
printf(" %s\n",pan);
}
printf("--------------------\n");
printf("정답수 : %d개 %d점\\n",cn,cn*20);
return 0;
}
'PROGRAMMING > C' 카테고리의 다른 글
[대체] 6. continue; (0) | 2011.02.16 |
---|---|
[대체] 5. 반복문(while, 반복문에서의 break) (0) | 2011.02.16 |
[대체] 3. 반복문(for) (0) | 2011.02.16 |
[대체] 2. 증감연산자, 전위연산자, 후위연산자 (0) | 2011.02.16 |
[대체] 1. 합, 배수 출력 (0) | 2011.02.16 |