本次作业是编写一个自动出四则运算的题的编程题目,拿道题后思考了很久,数字随机产生很简单,但如何去随机加减乘除。经过思考和查阅资料决定运用switch的选择结构,来选择出题的加减乘除。还有一个问题,在选择c语言编写的环境下,随机函数与java中并不一样,java中直接用random=new random()便可,可是在C中需要在头文件中加入#include<time.h>的头文件,并且需要加入这行代码,srand(time(0)); a=rand()%100+1;这是随机产生100以内的随机数。随后不断根据老师的要求改编代码,最终完成如下算法:
1 #include"stdio.h" 2 #include"stdlib.h" 3 #include<time.h> 4 int main(){ 5 int i,a,b,c,d,e; 6 printf("请输入要出的题数:"); 7 scanf("%d",&i); 8 srand(time(0)); 9 for(int j=0;j<i;j++) 10 { 11 a=rand()%100+1; 12 b=rand()%100+1; 13 d=rand()%100+1; 14 e=rand()%100+1; 15 c=rand()%8; 16 if(a<=b){ 17 18 switch(c){ 19 case 0:printf("%d+%d= ",a,b);break; 20 case 1:printf("%d-%d= ",b,a);break; 21 case 2:printf("%d×%d= ",a,b);break; 22 case 3:printf("%d÷%d= ",a,b);break; 23 24 case 4:{ 25 if(d<=e) printf("%d/%d+%d/%d= ",a,b,d,e); 26 else printf("%d/%d+%d/%d= ",a,b,e,d); 27 }break; 28 case 5:{ 29 if(d<=e) printf("%d/%d-%d/%d= ",a,b,d,e); 30 else printf("%d/%d-%d/%d= ",a,b,e,d); 31 }break; 32 case 6:{ 33 if(d<=e) printf("%d/%d×%d/%d= ",a,b,d,e); 34 else printf("%d/%d×%d/%d= ",a,b,e,d); 35 }break; 36 case 7:{ 37 if(d<=e) printf("%d/%d÷%d/%d= ",a,b,d,e); 38 else printf("%d/%d÷%d/%d= ",a,b,e,d); 39 }break; 40 } 41 } 42 else{ 43 switch(c){ 44 case 0:printf("%d+%d= ",a,b);break; 45 case 1:printf("%d-%d= ",a,b);break; 46 case 2:printf("%d×%d= ",a,b);break; 47 case 3:printf("%d÷%d= ",b,a);break; 48 49 case 4:{ 50 if(d<=e) printf("%d/%d+%d/%d= ",b,a,d,e); 51 else printf("%d/%d+%d/%d= ",b,a,e,d); 52 }break; 53 case 5:{ 54 if(d<=e) printf("%d/%d-%d/%d= ",b,a,d,e); 55 else printf("%d/%d-%d/%d= ",b,a,e,d); 56 }break; 57 case 6:{ 58 if(d<=e) printf("%d/%d×%d/%d= ",b,a,d,e); 59 else printf("%d/%d×%d/%d= ",b,a,e,d); 60 }break; 61 case 7:{ 62 if(d<=e) printf("%d/%d÷%d/%d= ",b,a,d,e); 63 else printf("%d/%d÷%d/%d= ",b,a,e,d); 64 }break; 65 } 66 } 67 } 68 }
题目演示为:
编写完这个题目收获很多,任何程序都需要一次次的修改,不会在第一遍就能完美完成。一步一个脚印,最好!