#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int m,n;
int add(int m,int n)//加函数
{
int result;
result=m+n;
return result;
}
int sub(int m,int n)//减函数
{
int result;
result=m-n;
return result;
}
int mul(int m,int n)//乘函数
{
int result;
result=mn;
return result;
}
float divi(int m,int n)//除函数
{
float result;
result=m/n;
return ((result100+0.5)/100 );
}
int main()
{
int i,j,result1,result2,number=0;
char key='Y';
srand(time(NULL));
printf("计算练习,电脑随机生成五道题目\n");
printf("十以内的加、减、乘、除(四舍五入保留两位小数),请答题\n");
do
{
for (i=1;i<=5;i++)//生成5道题
{
m=1+(rand()%20);
n=1+(rand()%20);
int a=1+(rand()%4);
switch(a)
{
case 1:
{
result1=add(m,n);
printf("%d+%d=",m,n);
scanf("%d",&result2);
break;
}
case 2:
{
result1=sub(m,n);
printf("%d-%d=",m,n);
scanf("%d",&result2);
break;
}
case 3:
{
result1=mul(m,n);
printf("%d*%d=",m,n);
scanf("%d",&result2);
break;
}
case 4:
{
result1=divi(m,n);
printf("%d/%d=",m,n);
scanf("%d",&result2);
break;
}
i++;
}
if(result1==result2)
{
printf("\n恭喜回答正确!\n");
number++;
}
else
{
printf("正确答案是%d\n",result1);
}
}
printf("正确率%d%%\n",number*20);
printf("是否继续,如果是输入Y,否则 输入N\n");
key=getch();
}while(key=='Y');
}
最后一道题输入答案后回车符被当做key的值了
改之后
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int m,n;
int add(int m,int n)//加函数
{
int result;
result=m+n;
return result;
}
int sub(int m,int n)//减函数
{
int result;
result=m-n;
return result;
}
int mul(int m,int n)//乘函数
{
int result;
result=m*n;
return result;
}
float divi(int m,int n)//除函数
{
float result;
result=m/n;
return ((result*100+0.5)/100 );
}
int main()
{
int i,j,result1,result2,number=0;
char key='Y';
srand(time(NULL));
printf("计算练习,电脑随机生成五道题目\n");
printf("十以内的加、减、乘、除(四舍五入保留两位小数),请答题\n");
do
{
for (i=1; i<=5; i++) //生成5道题
{
m=1+(rand()%20);
n=1+(rand()%20);
int a=1+(rand()%4);
switch(a)
{
case 1:
{
result1=add(m,n);
printf("%d+%d=",m,n);
scanf("%d",&result2);
break;
}
case 2:
{
result1=sub(m,n);
printf("%d-%d=",m,n);
scanf("%d",&result2);
break;
}
case 3:
{
result1=mul(m,n);
printf("%d*%d=",m,n);
scanf("%d",&result2);
break;
}
case 4:
{
result1=divi(m,n);
printf("%d/%d=",m,n);
scanf("%d",&result2);
break;
}
i++;
}
if(result1==result2)
{
printf("\n恭喜回答正确!\n");
number++;
}
else
{
printf("正确答案是%d\n",result1);
}
}
printf("正确率%d%%\n",number*20);
printf("是否继续,如果是输入Y,否则 输入N\n");
getchar();
scanf("%c",&key);
}
while(key=='Y');
}
float是不能直接用 == 比较大小的,可以搜“C float 比较相等”了解相关知识
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
//#define SWAP(x,y) {int a=x;x=y;y=a}
int m,n;
int add(int m,int n)
//加函数
{
int result;
result=m+n;
return result;
}
int sub(int m,int n)
//减函数
{
int result;
result=m-n;
return result;
}
int mul(int m,int n)
//乘函数
{
int result;
result=m*n;
return result;
}
float divi(int m,int n)
//除函数
{
float result;
//if(n==0)return 0.0;
result=m*1.0/n;
//return ((result/100+0.5)/100 );
}
int main()
{
int i,j,result1,result2,number=0;
char key='Y';
srand(time(NULL));
printf("计算练习,电脑随机生成五道题目\n");
printf("十以内的加、减、乘、除(四舍五入保留两位小数),请答题\n");
do
{
for (i=1;i<=5;i++)
//生成5道题
{
m=1+(rand()%20);
n=1+(rand()%20);
int a=1+(rand()%4);
switch(a)
{
case 1:
{
result1=add(m,n);
printf("%d+%d=",m,n);
scanf("%d",&result2);
break;
}
case 2:
{
result1=sub(m,n);
printf("%d-%d=",m,n);
scanf("%d",&result2);
break;
}
case 3:
{
result1=mul(m,n);
printf("%dx%d=",m,n);
scanf("%d",&result2);
break;
}
case 4:
{
if(m<n)n=m;//SWAP(m,n);
m=n*(rand()%10+1);//自己调整大小范围
result1=divi(m,n);
printf("%d÷%d=",m,n);
scanf("%d",&result2);
break;
}
i++;
}
if(result1==result2)
{
printf("\n恭喜回答正确!\n\n");
printf("//////////////////////////\n");
number++;
}
else
{
printf("正确答案是%d\n\n",result1);
printf("//////////////////////////\n");
}
}
printf("正确率%d%%\n",number*20);
printf("是否继续,如果是输入Y,否则 输入N\n");
getchar();
scanf("%c",&key);
number=0;
clrscr();//清屏
}while(key=='Y' || key=='y');
}
//程序被我小修改了
//你写的自定义除法函数是有问题的
//还有最后继续那里,要getchar()后再输入
//参照一下我修改后的
希望采纳,谢谢!
你打印一下输入的值,debug跟踪一下代码