回 帖 发 新 帖 刷新版面

主题:[讨论]学C的朋友进来看一下,这个程序错在哪

我是学C的新手,对照作业写了一个求两个数最大公约数的程序,可是不知错在哪,希望学过的朋友指点一二,不甚感激!

main()
{
int a,b,c;
scanf("%d%d",&a,&b);
if(a>b) c=b;
else c=a;
for(;c>=1;c--)
{
  if(a%c==0&&b%c==0)
  {
  printf("%c\n",c);
  break;
  }
}
}

回复列表 (共9个回复)

沙发

找到了,%c-->%d,低级!

板凳

哎~写的又点乱,而且for语句的格式用错了,c没有赋值,有没有输出的值啊~

3 楼


格式我看没错!只要以十进制数输出就行了

4 楼

晕啊,怎么看也看不懂.是要好好学习了

5 楼


%c改为%d试试看

6 楼

C赋值了,你再仔细看看[em13]

7 楼

用while 语句试试.

8 楼

为什么if语句做了判断却没有值?没有第二步了,为什么要做这个判断?

9 楼

if(){}
()后面跟的{}是复合语句,正如你说的有第2步,“第2步”就是{}里面的

所以说这个判断是必要的 只有满足条件a%c==0&&b%c==0为真的情况下

才输出正确的公约数值

程序其他没问题,改成%d 输出就行了

但是你的格式太差,主函数最好这么写int main(void),你那种写法大部分编译器都会报错

我来回复

您尚未登录,请登录后再回复。点此登录或注册