为什么除法做对了之后会导致后面的程序自己跑,不让我输答案进行判断

#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 ((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");
key=getch();
}while(key=='Y');

}

img

最后一道题输入答案后回车符被当做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');
}


img

img

img

//程序被我小修改了
//你写的自定义除法函数是有问题的
//还有最后继续那里,要getchar()后再输入
//参照一下我修改后的

希望采纳,谢谢!

你打印一下输入的值,debug跟踪一下代码