#include <stdio.h> #include<time.h> #include<stdlib.h> int count=0; void Ti(int n,int a[]); int main() { int n; int a[100]; printf("请输入题目的个数:"); scanf("%d",&n); Ti(n,a); printf("\n回答正确的个数为:%d\n错误的个数为:%d\n",count,n-count); return 0; } void Ti(int n,int a[]) { int l; int p; int i,j,h,hh,k,g; int f; int b[100]; float x,y,c[100],d[100]; for(p=0;p<n;p++) { srand(time(NULL)); i=(int)rand()%10; j=(int)rand()%10; h=(int)rand()%10; hh=(int)rand()%10; g=(int)rand()%3; f=((int)rand()%100)-100; k=(int)rand()%6; switch(k) { case 0: printf("%d+%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i+j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 1: printf("%d-%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i-j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 2: printf("%d*%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i*j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 3: if(j==0) { p--; break; } else{ x=(float)i; y=(float)j; printf("%d/%d=\n",i,j); printf("请作答:"); scanf("%f",&d[p]); c[p]=x/y; if(c[p]==d[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%.2f\n",c[p]); } break; } case 4: printf("%d!=\n",i); printf("请作答:"); scanf("%d",&b[p]); if(i==0) a[p]=1; else { a[p]=1; for(l=1;l<=i;l++) a[p]=a[p]*l; } if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 5: if(j==0) { p--; break; } else { x=(float)i; y=(float)j; switch(g){ case 0: printf("(%d/%d+%d)*%d=\n",i,j,h,hh); printf("请作答:"); scanf("%f",&d[p]); c[p]=(x/y+h)*hh; break; case 1: printf("(%d+%d*%d)=\n",h,i,j); printf("请作答:"); scanf("%f",&d[p]); c[p]=h+x*y; break; case 2: printf("%d*(%d)=\n",i,f); printf("请作答:"); scanf("%f",&d[p]); c[p]=x*(f); break; } if(c[p]==d[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%.2f\n",c[p]); } break; } } } }
本程序在VC++6.0开发环境下调试的。
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3。
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8。
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
- 程序可以出单个整数阶乘的题目:如:4!=24。
结对同伴的学号姓名:201306114457,叶鹏 博客地址:http://www.cnblogs.com/yeyepengpeng/
我做了:完成程序基本功能与1和4功能,负责敲打代码,测试和修改。
同伴做了:上述2和3的功能,搜集查阅资料,负责指正修改程序,提出修改和改进方案。
总结:通过这次实验使我复习了以前我学到的知识,并且使我更加掌握以前的知识。实验中我感觉到两个人一起结对做程序是一种快乐,同时也弥补了我一个人独自写程序的那种粗心大意,同伴的提醒使我更加的细心与谨慎,通过实验我更加的明白团队的重要性,不仅能提高我的个人能力,同时也能使他人也得到能力的提升。
#include <stdio.h> #include<time.h> #include<stdlib.h> int count=0; void Ti(int a[]); void JX(int a[]); void KH(int a[]); int main() { int a[100]; int m; do { printf(" --------------\n"); printf(" 1.简单的运算.\n"); printf(" 2.含括号的运算.\n"); printf(" 3.阶乘的运算.\n"); printf(" 0.退出.\n"); printf(" --------------\n"); printf("请选择:"); scanf("%d",&m); switch(m) { case 1: Ti(a); break; case 2: KH(a); break; case 3: JX(a); break; } }while(m!=0); return 0; } void Ti(int a[]) { int n,p; int i,j,k; int b[100]; float x,y,c[100],d[100]; count=0; printf("请输入题目的个数:"); scanf("%d",&n); for(p=0;p<n;p++) { srand(time(NULL)); i=(int)rand()%10; j=(int)rand()%10; k=(int)rand()%4; switch(k) { case 0: printf("%d+%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i+j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 1: printf("%d-%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i-j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 2: printf("%d*%d=\n",i,j); printf("请作答:"); scanf("%d",&b[p]); a[p]=i*j; if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } break; case 3: if(j==0) { p--; break; } else { x=(float)i; y=(float)j; printf("%d/%d=\n",i,j); printf("请作答:"); scanf("%f",&d[p]); c[p]=x/y; if(c[p]==d[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%.2f\n",c[p]); } break; } } } printf("\n回答正确的个数为:%d\n错误的个数为:%d\n",count,n-count); } void KH(int a[]) { int n; int i,j,h,hh,g; float x,y,c[100],d[100]; int p; int f; count=0; printf("请输入题目的个数:"); scanf("%d",&n); for(p=0;p<n;p++) { srand(time(NULL)); i=(int)rand()%10; j=(int)rand()%10; h=(int)rand()%10; hh=(int)rand()%10; g=(int)rand()%3; f=((int)rand()%100)-100; if(j==0) { p--; continue; } else { x=(float)i; y=(float)j; switch(g) { case 0: printf("(%d/%d+%d)*%d=\n",i,j,h,hh); printf("请作答:"); scanf("%f",&d[p]); c[p]=(x/y+h)*hh; break; case 1: printf("(%d+%d*%d)=\n",h,i,j); printf("请作答:"); scanf("%f",&d[p]); c[p]=h+x*y; break; case 2: printf("%d*(%d)=\n",i,f); printf("请作答:"); scanf("%f",&d[p]); c[p]=x*(f); break; } if(c[p]==d[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%.2f\n",c[p]); } } } printf("\n回答正确的个数为:%d\n错误的个数为:%d\n",count,n-count); } void JX(int a[]) { int b[100]; int p; int l; int i; int n; count=0; printf("请输入题目的个数:"); scanf("%d",&n); for(p=0;p<n;p++) { srand(time(NULL)); i=(int)rand()%10; printf("%d!=\n",i); printf("请作答:"); scanf("%d",&b[p]); if(i==0) a[p]=1; else { a[p]=1; for(l=1;l<=i;l++) a[p]=a[p]*l; } if(a[p]==b[p]) { printf("回答正确!\n"); count++; } else { printf("回答错误!\n"); printf("正确答案为:%d\n",a[p]); } } printf("\n回答正确的个数为:%d\n错误的个数为:%d\n",count,n-count); }