#include<stdio.h> int Menu() { int choic; printf(" ****************************************** "); printf("1.四则运算整数习题(试卷型) "); printf("2.四则运算真分数习题(试卷型) "); printf("3.四则运算整数习题(同步练习型) "); printf("4.四则运算真分数习题(同步练习型) "); printf("5.退出程序 "); printf("请选择菜单号(1——5): "); printf("****************************************** "); while((!scanf("%d",&choic))||(choic<1)||(choic>5)) { getchar(); printf(" 输入错误!!!!!!!!!!!!请重新输入 "); printf("****************************************** "); printf("1.四则运算整数习题(试卷型) "); printf("2.四则运算真分数习题(试卷型) "); printf("3.四则运算整数习题(同步练习型) "); printf("4.四则运算真分数习题(同步练习型) "); printf("5.退出程序 "); printf("请选择菜单号(1——5): "); printf("****************************************** "); } return choic; } void exam1() { int i,b,c,d,n,q=1; char a[4]={'+','-','*','/'}; while(q==1) { printf("请输入需要四则运算整数习题(试卷型)的题数:"); scanf("%d",&n); for(i=1;i<=n;i++) { b=rand()%4; c=rand()%100; d=rand()%100; if(a[b]==a[0]) printf("%d+%d= ",c,d); else if(a[b]==a[1]) printf("%d-%d= ",c,d); else if(a[b]==a[2]) printf("%d×%d= ",c,d); else if(a[b]==a[3]) printf("%d÷%d= ",c,d); if(i%5==0) printf(" "); } printf(" 是否要继续?(1表示是,0表示否):"); while(!scanf("%d",&q)||q<0||q>1) { getchar(); printf("输入错误!!!!!请重新输入 "); printf(" 是否要继续?(1表示是,0表示否):"); } printf(" "); } printf(" "); } void exam2() { int i,b,c,d,n,q=1,f,e; char a[4]={'+','-','*','/'}; while(q==1) { printf("请输入需要四则运算真分数习题(试卷型)的题数:"); scanf("%d",&n); for(i=1;i<=n;i++) { b=rand()%4; c=rand()%100; d=rand()%100; f=rand()%100; e=rand()%100; if(c<=d&&e<=f&&d!=0&&f!=0) { if(a[b]==a[0]) printf("%d/%d+%d/%d= ",c,d,e,f); else if(a[b]==a[1]) printf("%d/%d-%d/%d= ",c,d,e,f); else if(a[b]==a[2]) printf("(%d/%d)×(%d/%d)= ",c,d,e,f); else if(a[b]==a[3]) printf("(%d/%d)÷(%d/%d)= ",c,d,e,f); } else { i--; continue; } if(i%3==0) printf(" "); } printf(" 是否要继续?(1表示是,0表示否):"); while(!scanf("%d",&q)||q<0||q>1) { getchar(); printf("输入错误!!!!!请重新输入 "); printf(" 是否要继续?(1表示是,0表示否):"); } printf(" "); } printf(" "); } void exam3() { int i,b,c,d,n,q=1,sum=0,per; float result,result1; char a[4]={'+','-','*','/'}; while(q==1) { sum=0; printf("请输入要挑战四则运算整数习题(同步练习型)的题数:"); scanf("%d",&n); printf("请输入每题计算题的分数:"); scanf("%d",&per); for(i=1;i<=n;i++) { b=rand()%4; c=rand()%100; d=rand()%100; if(a[b]==a[0]) { printf("%d+%d=",c,d); scanf("%f",&result); result1=c+d; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[1]) { printf("%d-%d=",c,d); scanf("%f",&result); result1=c-d; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[2]) { printf("%d×%d=",c,d); scanf("%f",&result); result1=c*d; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[3]) { printf("%d÷%d=",c,d); scanf("%f",&result); result1=(float)c/d; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } } if(sum==n*per) printf(" 恭喜你这次测试满分! 本次的成绩:%d分 ",sum); else if(sum==0) printf(" 真遗憾,你本次测试分数不理想,请继续努力! 本次成绩:%d分 ",sum); else if(sum>0&&sum<n*per) printf(" 你本次成绩:%d分 ",sum); printf(" 是否要继续?(1表示是,0表示否):"); while(!scanf("%d",&q)||q<0||q>1) { getchar(); printf("输入错误!!!!!请重新输入 "); printf(" 是否要继续?(1表示是,0表示否):"); } printf(" "); } printf(" "); } void exam4() { int i,b,c,d,n,q=1,f,e,sum=0,per; float result,result1; char a[4]={'+','-','*','/'}; while(q==1) { sum=0; printf("请输入要挑战四则运算真分数习题(同步练习型)的题数:"); scanf("%d",&n); printf("请输入每题计算题的分数:"); scanf("%d",&per); for(i=1;i<=n;i++) { b=rand()%4; c=rand()%100; d=rand()%100; f=rand()%100; e=rand()%100; if(c<=d&&e<=f&&d!=0&&f!=0) { if(a[b]==a[0]) { printf("%d/%d+%d/%d=",c,d,e,f); scanf("%f",&result); result1=(float)c/d+(float)e/f; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[1]) { printf("%d/%d-%d/%d=",c,d,e,f); scanf("%f",&result); result1=(float)c/d-(float)e/f; if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[2]) { printf("(%d/%d)×(%d/%d)=",c,d,e,f); scanf("%f",&result); result1=((float)c/d)*((float)e/f); if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } else if(a[b]==a[3]) { printf("(%d/%d)÷(%d/%d)=",c,d,e,f); scanf("%f",&result); result1=((float)c/d)/((float)e/f); if(result==result1) { printf("真棒,答对了! "); sum=sum+per; } else { printf("真遗憾,答错了! "); printf("正确答案是%.2f ",result1); } } } else { i--; continue; } } if(sum==n*per) printf(" 恭喜你这次测试满分! 本次的成绩:%d分 ",sum); else if(sum==0) printf(" 真遗憾,你本次测试分数不理想,请继续努力! 本次成绩:%d分 ",sum); else if(sum>0&&sum<n*per) printf(" 你本次成绩:%d分 ",sum); printf(" 是否要继续?(1表示是,0表示否):"); while(!scanf("%d",&q)||q<0||q>1) { getchar(); printf("输入错误!!!!!请重新输入 "); printf(" 是否要继续?(1表示是,0表示否):"); } printf(" "); } printf(" "); } void quit() { printf("谢谢使用该程序! "); exit(0); } main() { int choic; while(1) { choic=Menu(); switch(choic) { case 1: exam1(); break; case 2: exam2(); break; case 3: exam3(); break; case 4: exam4(); break; case 5: quit(); break; } } }
本次程序是对上一次随机四则运算的改进,主要分成了两大部分:试卷型和同步练习型。在同步练习型中有相应的计算和分数统计的功能。