代码:
#include<stdio.h> #include<stdlib.h> #include<time.h> int n=10; int a[10],b[10],c[10];//分别存第一个操作数,第二个操作数 float d[10]; char bc[10];//bc是用于保存运算符 void jia(); void jian(); void chen(); void chu(); void jisuan(); void main() { int choice; srand((unsigned)time(NULL));//随机产生0-99之间的随机数 while(1) { switch(choice) { case 1: jia(); break; case 2: jian(); break; case 3: chen(); break; case 4: chu(); break; case 5: jisuan(); break; case 6: printf("谢谢使用"); exit(0); } choice=selectmenu(); } } void jisuan() { jia(); jian(); chen(); chu(); } void jia()//加法 { int i,j; printf("\t\t\n欢迎使用,以下是随机产生的10道加法题\n\n\n"); for(i=0;i<n;i++) { a[i]=rand()%100; b[i]=rand()%100; bc[i]=‘+‘; c[i]=a[i]+b[i]; printf("%d=%d%c%d\n",c[i],a[i],bc[i],b[i]); } } void jian()//减法 { int i,temp; printf("\t\t\n欢迎使用,以下是随机产生的10道减法题\n\n\n"); for(i=0;i<n;i++) { a[i]=rand()%100; b[i]=rand()%100; bc[i]=‘-‘; if(a[i]<b[i])//保证得出的数不是负数 { temp=a[i]; a[i]=b[i]; b[i]=temp; } c[i]=a[i]-b[i]; printf("%d=%d%c%d\n",c[i],a[i],bc[i],b[i]); } } void chen()//乘法 { int i; printf("\t\t\n欢迎使用,以下是随机产生的10道乘法题\n\n\n"); for(i=0;i<n;i++) { a[i]=rand()%100; b[i]=rand()%100; bc[i]=‘*‘; c[i]=a[i]*b[i]; printf("%d=%d%c%d\n",c[i],a[i],bc[i],b[i]); } } int selectmenu() { int choice; printf("\t1:随机产生10道加法题\n"); printf("\t2:随机产生10道减法题\n"); printf("\t3:随机产生10道乘法题\n"); printf("\t4:随机产生10道除法题\n"); printf("\t5:随机产生10道加减乘除题\n"); printf("\t6:谢谢使用\n"); printf("请输入选择(1-6):"); while((!scanf("%d",&choice)||(choice<0)||(choice>7))) { printf("\t1:随机产生10道加法题\n"); printf("\t2:随机产生10道减法题\n"); printf("\t3:随机产生10道乘法题\n"); printf("\t4:随机产生10道除法题\n"); printf("\t5:随机产生10道加减乘除题\n"); printf("\t0:谢谢使用\n"); printf("请输入选择(1-6):"); } return choice; } void chu()//除法 { int i; printf("\t\t\n欢迎使用,以下是随机产生的10道除法题\n\n\n"); for(i=0;i<n;i++) { a[i]=rand()%100; b[i]=rand()%100; bc[i]=‘/‘; if(b[i]!=0&&a[i]>b[i]) //判断被除数与除数哪个大,被除数小的以分数形式输出 { d[i]=(float)a[i]/b[i];//被除数大的并且不能被整除的就将整型强制转换为浮点型,并且结果保留小数点后两位 printf("%.2f=%d%c%d\n",d[i],a[i],bc[i],b[i]); } else if(b[i]!=0&&a[i]<b[i]) printf("%d/%d=%d%c%d\n",a[i],b[i],a[i],bc[i],b[i]); } }
这是软件工程的第一次作业,也是第一次用C编程系统自动产生四则运算的题目,在做这次作业的过程,发现理解题目要求很重要,代码的重用性的好坏也很重要,写出来的代码首先要符合逻辑,其次是要让别人也可以看懂你的代码;在理解了题目要求后要明白大概要实现什么功能,怎么实现,需要什么等等,明白需求后在着手打代码并逐渐完善,虽然这不是第一次使用C,但仍然出现不少问题,以下就是我对编程过程的总结:
总结:
1、在对加减乘除进行运算时搞清楚存放操作数的数组的位置以及数组与变量的类型,其中一个出错就得不出正确的加减乘除式子。
1、 使用srand()函数来产生随机数时,必须要含有头文件#include<time.h>
2、 做减法运算时要考虑结果为负数的情况,因此要对第一个操作数和第二个操作数进行判断,如果是第一个操作数小,则要根据中间变量将他们进行位置调换,再进行减法运算
3、 做除运算时要考虑除数不能为0的情况或者如果结果不能除尽的情况;打印时要分为两种情况,第一种是当第一个操作数比第二个操作数小的时候以分数的形式打印出来,第二种是当第一个操作数比第二个操作数大的时候则将整数类型强制转换为浮点型,并保留小数点后两位。
原文:http://www.cnblogs.com/LHYwin/p/4366810.html