大家来看看我的编程里的问题吧
这个是我课程设计的一部分。现在只做了练习部分的内容。发现用函数返回答对的题目数量有问题。大家来帮我看下怎么修改吧。我改了好久还是么结果
程序代码:#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);
}








