大家来看看我的编程里的问题吧
这个是我课程设计的一部分。现在只做了练习部分的内容。发现用函数返回答对的题目数量有问题。大家来帮我看下怎么修改吧。我改了好久还是么结果程序代码:
#include "stdio.h" #include "time.h" #include "stdlib.h" void main() { int caozuo,weishu=0,tishu=0,zongfen=0,suanfa=0,i,shu1,shu2,a,hd,da,ii; int plus(int tishu,int a); int minus(int tishu,int a); int multiply(int tishu,int a); int devide(int tishu,int a); int random(int tishu,int a); struct cy { char name[10]; float fs; }cy; srand((unsigned)time(NULL)); loop: printf(" 算术练习\n"); printf(" 1 练习\n"); printf(" 2 测验\n"); printf(" 3 设置\n"); printf(" 4 查看测验成绩\n"); printf(" 0 退出\n\n"); printf("请输入您要进行的操作:"); scanf("%d",&caozuo); if((caozuo!=1)&&(caozuo!=2)&&(caozuo!=3)&&(caozuo!=4)&&(caozuo!=0)) { printf("\n提示:\n输入有误,请重新操作\n\n\n"); goto loop; } system("cls"); switch(caozuo) { case 1 : { if(tishu==0) { system("cls"); printf("请先进行设置!\n按任意键返回主菜单。"); getchar(); getchar(); system("cls"); goto loop; } switch(suanfa) { case 1:plus(tishu,a);break; case 2:minus(tishu,a);break; case 3:multiply(tishu,a);break; case 4:devide(tishu,a);break; case 5:random(tishu,a);break; } printf("总答题数:%d\t答对%d题\t正确率%f",tishu,ii,ii/tishu); getchar();} break; case 2: case 3: printf("设置:\n"); chongf1: printf("\n数据位数(1~3):\n"); scanf("%d",&weishu); if((weishu<1)||(weishu>3)) { printf("超出数据范围!\n"); goto chongf1; } switch(weishu) { case 1:a=9;break; case 2:a=99;break; case 3:a=999;break; default:; } chongf2: printf("\n测试模式题数:\n"); scanf("%d",&tishu); if(tishu<0) { printf("题数输入错误!\n"); goto chongf2; } chongf3: printf("\n测试模式总分:\n"); scanf("%d",&zongfen); if(zongfen<0) { printf("总分输入错误!\n"); goto chongf3; } chongfu4: printf("\n运算为:1.加法 2.减法 3.乘法 4.除法 5.任意\n"); scanf("%d",&suanfa); if(suanfa<1||suanfa>5) { printf("运算输入错误"); goto chongfu4; } printf("========================\n"); printf("数据位数:%d\n",weishu); printf("测试模式题数:%d\n",tishu); printf("测试模式总分:%d\n",zongfen); switch(suanfa) { case 1:printf("运算符号:+");break; case 2:printf("运算符号:-");break; case 3:printf("运算符号:*");break; case 4:printf("运算符号:/");break; case 5:printf("运算符号:任意");break; } getchar(); getchar(); system("cls"); goto loop; case 4 : case 0 :exit(0); } } int plus(int tishu,int a) { int hd,da,shu1,shu2,i,ii=0; for(i=1;i<=tishu;i++) { shu1=rand()%a; shu2=rand()%a; da=shu1+shu2; printf("%d) %d+%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) { printf("√\n\n"); ii++; } else printf("×正确答案:%d\n\n",da); } return (ii*1.0); } int minus(int tishu,int a) { int hd,da,shu1,shu2,i,ii=0; for(i=1;i<=tishu;i++) {shu1=rand()%a; shu2=rand()%a; da=shu1-shu2; printf("%d) %d-%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) { printf("√\n\n"); ii++; } else printf("×正确答案:%d\n\n",da);} return (ii*1.0); } int multiply(int tishu,int a) { int hd,da,shu1,shu2,i,ii=0; for(i=1;i<=tishu;i++) { shu1=rand()%a; shu2=rand()%a; da=shu1*shu2; printf("%d) %d*%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) { printf("√\n\n"); ii++; } else printf("×正确答案:%d\n\n",da);} return (ii*1.0); } int devide(int tishu,int a) { int shu1,shu2,i,ii=0; int check(int A,int B); float hd,da; for(i=1;i<=tishu;i++) {loop: shu1=rand()%a; shu2=rand()%a; if(check(shu1,shu2)==-1||shu2==0) goto loop; da=shu1*1.0/shu2; printf("%d) %d/%d=",i,shu1,shu2); scanf("%f",&hd); if(hd==da) { printf("√\n\n"); ii++; } else printf("×正确答案:%d\n\n",da);} return (ii*1.0); } int check(int A,int B) { float temp; temp=(float)A/(float)B; if(temp*B==(float)A){ return 1; } return -1; } int random(int tishu,int a) { int check(int A,int B); int hd,da,shu1,shu2,i,ii=0,b; for(i=1;i<=tishu;i++) { b=rand()%4; loop: shu1=rand()%a; shu2=rand()%a; switch(b) { case 1: {da=shu1+shu2; printf("%d) %d+%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) {printf("√\n\n"); ii++;} else printf("× 正确答案%d\n\n",da);} break; case 2: {da=shu1-shu2; printf("%d) %d-%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) printf("√\n\n"); else printf("× 正确答案%d\n\n",da);} break; case 3: {da=shu1*shu2; printf("%d) %d*%d=",i,shu1,shu2); scanf("%d",&hd); if(hd==da) printf("√\n\n"); else printf("× 正确答案%d\n\n",da);} break; case 4: {if(check(shu1,shu2)==-1||shu2==0) goto loop; da=shu1*1.0/shu2; printf("%d) %d/%d=",i,shu1,shu2); scanf("%f",&hd); if(hd==da) { printf("√\n\n"); ii++; } else printf("×正确答案:%d\n\n",da);} } } return(ii*1.0); }