1.要求:
打印300道含两个运算符数字在100以内的四则运算 ,并显示答案。
2. 分析:对于两个运算符,按照排列与组合,共有4*3=12种,由于乘除与加减的运算优先级不一样,在考虑添加小括号的情况下,应该有12+8=20种可能的组合,同一种运算符自身可以与自身进行一次组合,故有四种,因此总共应有24种组合方式;
3.思想:(1)根据数学排列思想保证含二个运算符四则运算式子的多样性
(2)调用rand()函数来随机产生0-100的随机数
(3)采用判断语句排除在进行除法运算时除数为0的情况
(4)switch语句实现不包括除法运算式子的打印输出
4.代码实现
#include<stdio.h> #include <stdlib.h> #include<time.h> int main(){ int a,b,c; int n; int i=0; while(i<300){ a=rand()%101; b=rand()%101; c=rand()%101; n=rand()%24; if(n==5){ if(b!=0&&c!=0) printf("%d/%d/%d=%f\n",a,b,c,(float)a/(float)b/(float)c); } if(n==6){ if(c!=0) printf("%d*%d/%d=%f\n",a,b,c,a*(float)b/(float)c); } if(n==7){ if(b!=0) printf("%d/%d*%d=%f\n",a,b,c,(float)a/(float)b*c); } if(n==12){ if(c!=0) printf("%d+%d/%d=%f\n",a,b,c,a+(float)b/(float)c); } if(n==13){ if(b!=0) printf("%d/%d+%d=%f\n",a,b,c,(float)a/(float)b+c); } if(n==14){ if(c!=0) printf("%d-%d/%d=%f\n",a,b,c,a-(float)b/(float)c); } if(n==15){ if(b!=0) printf("%d/%d-%d=%f\n",a,b,c,(float)(a/b)-c); } if(n==20){ if(c!=0) printf("(%d+%d)/%d=%f\n",a,b,c,(float)(a+b)/(float)c); } if(n==21){ if((b+c)!=0) printf("%d/(%d+%d)=%f\n",a,b,c,(float)a/(float)(b+c)); } if(n==22){ if(c!=0) printf("(%d-%d)/%d=%f\n",a,b,c,(float)(a-b)/(float)c); } if(n==23){ if((b-c)!=0) printf("%d/(%d-%d)=%d\n",a,b,c,(float)a/(float)(b-c)); } switch(n){ case 0:printf("%d+%d+%d=%d\n",a,b,c,a+b+c); break; case 1:printf("%d-%d-%d=%d\n",a,b,c,a-b-c); break; case 2:printf("%d+%d-%d=%d\n",a,b,c,a+b-c); break; case 3:printf("%d-%d+%d=%d\n",a,b,c,a-b+c); break; case 4:printf("%d*%d*%d=%d\n",a,b,c,a*b*c); break; //case 5:printf("%d/%d/%d=%f\n",a,b,c,(float)a/(float)b/(float)c); //break; //case 6:printf("%d*%d/%d=%f\n",a,b,c,(float)(a*b)/c); //break; //case 7:printf("%d/%d*%d=%f\n",a,b,c,(float)(a/b)*c); // break; case 8:printf("%d+%d*%d=%d\n",a,b,c,a+b*c); break; case 9:printf("%d*%d+%d=%d\n",a,b,c,a*b+c); break; case 10:printf("%d-%d*%d=%d\n",a,b,c,a-b*c); break; case 11:printf("%d*%d-%d=%d\n",a,b,c,a*b-c); break; //case 12:printf("%d+%d/%d=%f\n",a,b,c,a+(float)(b/c)); // break; //case 13:printf("%d/%d+%d=%f\n",a,b,c,(float)(a/b)+c); // break; //case 14:printf("%d-%d/%d=%f\n",a,b,c,a-(float)b/c); // break; //case 15:printf("%d/%d-%d=%f\n",a,b,c,(float)(a/b)-c); // break; case 16:printf("(%d+%d)*%d=%d\n",a,b,c,(a+b)*c); break; case 17:printf("%d*(%d+%d)=%d\n",a,b,c,a*(b+c)); break; case 18:printf("(%d-%d)*%d)=%d\n",a,b,c,(a-b)*c); break; case 19:printf("%d*(%d-%d)=%d\n",a,b,c,a*(b-c)); break; //case 20:printf("(%d+%d)/%d)=%f\n",a,b,c,(float)(a+b)/c); // break; //case 21:printf("(%d/(%d+%d))=%f\n",a,b,c,(float)a/(b+c)); // break; //case 22:printf("(%d-%d)/%d)=%f\n",a,b,c,(float)(a-b)/c); // break; //case 23:printf("%d/(%d-%d))=%d\n",a,b,c,(float)a/(b-c)); // break; } ++i; } return 0; }
5.测试
原文:https://www.cnblogs.com/eva0527/p/13797056.html