本次作业是编写一个自动出四则运算的题的编程题目,拿道题后思考了很久,数字随机产生很简单,但如何去随机加减乘除。经过思考和查阅资料决定运用switch的选择结构,来选择出题的加减乘除。还有一个问题,在选择c语言编写的环境下,随机函数与java中并不一样,java中直接用random=new random()便可,可是在C中需要在头文件中加入#include<time.h>的头文件,并且需要加入这行代码,srand(time(0)); a=rand()%100+1;这是随机产生100以内的随机数。随后不断根据老师的要求改编代码,最终完成如下算法:
#include"stdio.h"
#include"stdlib.h"
#include<time.h>
int main(){
int i,a,b,c,d,e;
printf("请输入要出的题数:");
scanf("%d",&i);
srand(time(0));
for(int j=0;j<i;j++)
{
a=rand()%100+1;
b=rand()%100+1;
d=rand()%100+1;
e=rand()%100+1;
c=rand()%8;
if(a<=b){
switch(c){
case 0:printf("%d+%d=\n",a,b);break;
case 1:printf("%d-%d=\n",b,a);break;
case 2:printf("%d×%d=\n",a,b);break;
case 3:printf("%d÷%d=\n",a,b);break;
case 4:{
if(d<=e) printf("%d/%d+%d/%d=\n",a,b,d,e);
else printf("%d/%d+%d/%d=\n",a,b,e,d);
}break;
case 5:{
if(d<=e) printf("%d/%d-%d/%d=\n",a,b,d,e);
else printf("%d/%d-%d/%d=\n",a,b,e,d);
}break;
case 6:{
if(d<=e) printf("%d/%d×%d/%d=\n",a,b,d,e);
else printf("%d/%d×%d/%d=\n",a,b,e,d);
}break;
case 7:{
if(d<=e) printf("%d/%d÷%d/%d=\n",a,b,d,e);
else printf("%d/%d÷%d/%d=\n",a,b,e,d);
}break;
}
}
else{
switch(c){
case 0:printf("%d+%d=\n",a,b);break;
case 1:printf("%d-%d=\n",a,b);break;
case 2:printf("%d×%d=\n",a,b);break;
case 3:printf("%d÷%d=\n",b,a);break;
case 4:{
if(d<=e) printf("%d/%d+%d/%d=\n",b,a,d,e);
else printf("%d/%d+%d/%d=\n",b,a,e,d);
}break;
case 5:{
if(d<=e) printf("%d/%d-%d/%d=\n",b,a,d,e);
else printf("%d/%d-%d/%d=\n",b,a,e,d);
}break;
case 6:{
if(d<=e) printf("%d/%d×%d/%d=\n",b,a,d,e);
else printf("%d/%d×%d/%d=\n",b,a,e,d);
}break;
case 7:{
if(d<=e) printf("%d/%d÷%d/%d=\n",b,a,d,e);
else printf("%d/%d÷%d/%d=\n",b,a,e,d);
}break;
}
}
}
}
题目演示为:
编写完这个题目收获很多,任何程序都需要一次次的修改,不会在第一遍就能完美完成。一步一个脚印,最好!