C语言编程—自动生成四则运算
#include<stdio.h> #include<time.h> main() { int a,b,i,j,k,l; double c,d,e,f; while (1) { srand((int)time(0)); //使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒) printf("1:整数 2:小数 0:退出"); printf("\n"); scanf("%d",&j); switch(j) { case 1: printf("请选择: 1:加法运算 2:减法运算 3:乘法运算 4:除法运算\n"); scanf("%d",&k); switch(k) { case 1: for (i=0;i<30;i++) { a=rand()%100+1; b=rand()%100+1; printf("%d+%d=\t\t",a,b); } printf("\n"); break; case 2: for (i=0;i<30;i++) { a=rand()%100+1; b=rand()%100+1; printf("%d-%d=\t\t",a,b); } printf("\n"); break; case 3: for (i=0;i<30;i++) { a=rand()%100+1; b=rand()%100+1; printf("%d*%d=\t\t",a,b); } printf("\n"); break; case 4: for (i=0;i<30;i++) { a=rand()%100+1; b=rand()%100+1; printf("%d÷%d=\t\t",a,b); } printf("\n"); break; } break; case 2: printf("请选择: 1:加法运算 2:减法运算 3:乘法运算 4:除法运算\n"); scanf("%d",&l); switch(l) { case 1: for (i=0;i<30;i++) { c=rand()%100+1; d=rand()%100+1; e=(rand()%100)*0.01; f=(rand()%100)*0.01; printf("%2.2f+%2.2f=\t",c+e,d+f); } printf("\n"); break; case 2: for (i=0;i<30;i++) { c=rand()%100+1; d=rand()%100+1; e=(rand()%100)*0.01; f=(rand()%100)*0.01; printf("%2.2f-%2.2f=\t",c+e,d+f); } printf("\n"); break; case 3: for (i=0;i<30;i++) { c=rand()%100+1; d=rand()%100+1; e=(rand()%100)*0.01; f=(rand()%100)*0.01; printf("%2.2f*%2.2f=\t",c+e,d+f); } printf("\n"); break; case 4: for (i=0;i<30;i++) { c=rand()%100+1; d=rand()%100+1; e=(rand()%100)*0.01; f=(rand()%100)*0.01; printf("%2.2f/%2.2f=\t",c+e,d+f); } printf("\n"); break; } break; case 0: exit(0); break; } } }
感想:这个程序写出来感觉不难,但是如果要更好的话,还要继续努力。通过写这个程序,我学习到了语句:srand((int)time(0));。这条语句可以把当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒),要是没有的话,会发现每一次运行的结果都一样,即“不是随机的随机”,显然不是我们想要的。四则运算题目,需要产生随机数,那么问题来了,产生的是整数还是小数?想产生哪个区间的整数,就用rand()对几求余加1,例如想在1到100之间取整,那么可以rand()%100+1。还有,小数部分,首先要想到的是小数点后几位,我总结出了通式:(rand()%10x)*10-x。本程序还有很多优化的地方,有望继续加油!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。