这是第一次在网上写关于程序代码的博客,第一次老师布置的作业是参考 P2-3页内容.写一个能自动生成小学四则运算题目的程序.和同学们比较一下各自程序的功能、实现方法的异同等等。写第一个博客。
下面就是程序代码的展示:
1 #include<stdio.h> 2 #include<time.h> 3 #include<stdlib.h> 4 void main() 5 { 6 int a,b,c,d; 7 int total1=0,total2=0; 8 while(1) 9 { 10 srand(time(NULL));//srand函数是随机数发生器的初始化函数 11 d=a=rand()%10; 12 //rand()是一个随机函数,d=a=rand()是将这个随机值赋给d和a,%10是在0-10内取值…d=a=rand()%10就是在0-10内取随机值然后赋给d和a 13 b=(rand()%a+a)%10; 14 if(a%4==1&&a<b) 15 c=a,a=b,b=c; 16 if(b==0&&a%4==3) 17 b=rand()%10+1; 18 if(a%4==3&&a%b!=0) 19 { 20 srand(time(0)); 21 a=b*(rand()%a); 22 } 23 switch(d%4) 24 { 25 case 0: 26 printf("%d + %d = ",a,b); 27 break; 28 case 1: 29 printf("%d - %d = ",a,b); 30 break; 31 case 2: 32 printf("%d × %d = ",a,b); 33 break; 34 case 3: 35 printf("%d ÷ %d = ",a,b); 36 break; 37 } 38 scanf("%d",&c); 39 switch(d%4) 40 { 41 case 0: 42 if(c==a+b) 43 { 44 printf("正确\n"); 45 total1++; 46 } 47 else 48 { 49 printf("错误\n"); 50 total2++; 51 } 52 break; 53 case 1: 54 if(c==a-b) 55 { 56 printf("正确\n"); 57 total1++; 58 } 59 else 60 { 61 printf("错误\n"); 62 total2++; 63 } 64 break; 65 case 2: 66 if(c==a*b) 67 { 68 printf("正确\n"); 69 total1++; 70 } 71 else 72 { 73 printf("错误\n"); 74 total2++; 75 } 76 break; 77 case 3: 78 if(c==a/b) 79 { 80 printf("正确\n"); 81 total1++; 82 } 83 else 84 { 85 printf("错误\n"); 86 total2++; 87 } 88 break; 89 } 90 printf("按任意键继续,Q退出!\n"); 91 fflush(stdin); 92 if(getchar()=='Q') 93 break; 94 } 95 printf("你答对了%d道题,答错%d道题\n",total1,total2); 96 }
首先,这是二年级的四则运算,所以数字范围应该是在1~10之间,于是我就用到了d=a=rand()%10;这个代码,把数字控制在1~10之间,于是我又想到做出了之后需要确定对错和做对做错多少题,于是代码就可以写成:
1 switch(d%4){case 0:if(c==a+b){printf("正确\n");total1++;}else{printf("错误\n");total2++;}break; 2 case 1:if(c==a-b){printf("正确\n");total1++;}else{printf("错误\n");total2++;}break; 3 case 2:if(c==a*b){printf("正确\n");total1++;}else{printf("错误\n");total2++;}break; 4 case 3:if(c==a/b){printf("正确\n");total1++;}else{printf("错误\n");total2++;}break;
total1是指做对的题数,total2是指做错的题数。
接着我还想到一个功能,还可以退出的功能:
1 printf("按任意键继续,Q退出!\n"); 2 fflush(stdin); 3 if(getchar()=='Q') 4 break;