请大家帮忙看下我下面的程序错在哪里?

ljzly 2014-07-08 04:17:34







//输入两个整数,并且使二者的商保留小数点后5位 2014-7-8

#include <stdio.h>
void main()
{ float m,n;

while(1)
{ printf("请输入两个整数,并用空格分隔开:\n");
scanf("%d %d",&m,&n);
//如何判断输入的数是整数?
if (m==(int)m*10/10&&n==(int)n*10/10)
{ printf("m/n=%.5d\n",(float)m/n);
break;
}

else
printf("错误!输入值中含有非整数!请重新输入!\n");
}
system("pause");
}
...全文
237 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljzly 2014-07-18
  • 打赏
  • 举报
回复
怎么结帖后全部显示0分?明明给了分的呀
Hack灬坏 2014-07-12
  • 打赏
  • 举报
回复
float用f不是d,有警告
初見的畫面 2014-07-10
  • 打赏
  • 举报
回复
引用 8 楼 zxh707wk 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:]
int m,n;
char c;
while (1) {
    printf("请输入两个整数,并用空格分隔开:");fflush(stdout);
    rewind(stdin);
    if (3==scanf("%d%d%c",&m,&n,&c)) {
        if (c=='\n') {
            printf("m/n=%d/%d=%g\n",m,n,(float)m/n);
            break;
        }
    }
    printf("错误!输入值中含有非整数!请重新输入!\n");
}
够屌[/quote] ++++++++++++++++++++++++++++++++
初見的畫面 2014-07-10
  • 打赏
  • 举报
回复
明明提示的输入两个整数,输入用的也是%d,变量也是整形的,非要输入小数。你是自己玩自己么?
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
输入“1 2xxx”试试。
707wk 2014-07-09
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
int m,n;
char c;
while (1) {
    printf("请输入两个整数,并用空格分隔开:");fflush(stdout);
    rewind(stdin);
    if (3==scanf("%d%d%c",&m,&n,&c)) {
        if (c=='\n') {
            printf("m/n=%d/%d=%g\n",m,n,(float)m/n);
            break;
        }
    }
    printf("错误!输入值中含有非整数!请重新输入!\n");
}
够屌
赵4老师 2014-07-09
  • 打赏
  • 举报
回复
break会退出到while外面。
ljzly 2014-07-09
  • 打赏
  • 举报
回复
好像不是break的原因,我找到其它原因了
如图,我把mn改成float型,然后把输出变量改成float型就解决了。
li905663280 2014-07-08
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
int m,n;
char c;
while (1) {
    printf("请输入两个整数,并用空格分隔开:");fflush(stdout);
    rewind(stdin);
    if (3==scanf("%d%d%c",&m,&n,&c)) {
        if (c=='\n') {
            printf("m/n=%d/%d=%g\n",m,n,(float)m/n);
            break;
        }
    }
    printf("错误!输入值中含有非整数!请重新输入!\n");
}
break报错
赵4老师 2014-07-08
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
wu424602394 2014-07-08
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{	float m,n;

while(1)
{	printf("请输入两个整数,并用空格分隔开:\n");
scanf("%f %f",&m,&n);
                                               //如何判断输入的数是整数?                                              
if (m==(int)m*10/10&&n==(int)n*10/10)
{	printf("m/n=%.5f\n",(float)m/n);
break;
}

else
printf("错误!输入值中含有非整数!请重新输入!\n");
}
system("pause");
}

/*
m 和 n是 float 形
scanf("%d %d",&m,&n);    中的 %d    改成 %f
printf("m/n=%.5d\n",(float)m/n);  看你意思应该要输出float形的吧   把d  也改成 f

// m*10/10 可以把m小数部分变成0  例如 m = 6.9    m*10(69)/10 = 6  (整数除整数结果一定是整数)
// 其实可以写成 if (m == (int)m && n == (int)n)   
*/
赵4老师 2014-07-08
  • 打赏
  • 举报
回复
在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。
赵4老师 2014-07-08
  • 打赏
  • 举报
回复
int m,n;
char c;
while (1) {
    printf("请输入两个整数,并用空格分隔开:");fflush(stdout);
    rewind(stdin);
    if (3==scanf("%d%d%c",&m,&n,&c)) {
        if (c=='\n') {
            printf("m/n=%d/%d=%g\n",m,n,(float)m/n);
            break;
        }
    }
    printf("错误!输入值中含有非整数!请重新输入!\n");
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧