c语言运行时按回车没反应,只是换行了

#include<stdio.h>
int main()
{
int m,n,a,c;
printf("请输入两个数,我来算出他们的最大公约数:");
scanf("%d,%d",&m,&n);
if(m<n)
{
a=m;
m=n;
n=a;
c=m%n;
}
else c=m%n;
while (c!=0);
{
c=n%c;
}
printf("他们的最大公因数是%d\n",n);
return 0;
}

    没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。

    例如 scanf("%lf %lf\n",&x,&e);
    这样的语句在回车后就没有反应,必须输入\n后才会有反应。

    因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。用scanf 不要加入“\n”非输入控制符,系统在运行时会自动换行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-07
scanf里的东西除了%带的格式控制以外,在输入时其余的必须照样输入,所以去掉/n应该就可以了
建议:scanf里除了%和它所带的格式控制字符以外不要有别的东西,之间也不要用任何诸如逗号,空格之类的隔开,因为没有隔开的话输入的时候很自由,可以输一个按回车,也可以输入一个之后用逗号,空格,Tab键将输入的东西隔开,输入完之后用回车结束就可以了
第2个回答  推荐于2017-11-22
while (c!=0)//;去掉这个分号先,不然后面根本执行不了
{
c=n%c;
}本回答被提问者和网友采纳
第3个回答  2010-04-07
把scanf("%lf %lf\n",&x,&e);的\n去掉
改为scanf("%lf %lf",&x,&e);
另外,sat函数不用那么复杂,可改为:
int sat(int n)
{
if (n%2) return -1;
else return 1;
}
qin函数里面应该是q=q+x吧
第4个回答  2019-02-15
逻辑错误。
while(x>=0),输入的x为非负整数时,一直执行循环体内语句s=s+x;k++;陷入死循环。
修改:
#include <stdio.h>
int main()
{
int k=0,x=0,s=0;//x赋初始值0
float avg=0;
//scanf("%d",&x);//去掉此句
while(x>=0)
{
scanf("%d",&x);//移动到此处
if(x>=0)//添加此条语句
{//添加大括号
s=s+x;
k++;
}//添加大括号
}
if(k>0)avg=(float)s/k;
printf("成绩之和:%d,平均分:%.2f",s,avg);
return 0;
}//运行示例: