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