scanf为什么错?

suliujing 2011-04-02 08:58:56
#include <stdio.h>

int gongyue(int x,int y)
{
int i;
i=x>y?y:x;
for(;i>0;i--)
if(x%i==0&&y%i==0)
printf("%d",i);
return i;
}
int gongbei(int x,int y)
{
int i;
i=x>y?y:x;
for(;;i++)
if(i%x==0&&i%y==0)
printf("%d",i);
return i;

}
int main ()
{
int j,a,b,n;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a);
scanf("%d",&b);
printf("%d %d",gongyue(a,b),gongbei(a,b));
}
return 0;
}

还是程序哪里错了
...全文
746 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
如此美丽的你 2011-05-11
  • 打赏
  • 举报
回复
#include <stdio.h>

int gongyue(int x,int y)
{
int i;
i=x>y?y:x;
for(;i>0;i--)
if(x%i==0&&y%i==0)
{
printf("%d",i);
return i;
}
}
int gongbei(int x,int y)
{
int i;
i=x>y?y:x;
for(;;i++)
if(i%x==0&&i%y==0)
{
printf("%d",i);
return i;
}

}
int main ()
{
int j,a,b,n;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a);
scanf("%d",&b);
printf("%d %d",gongyue(a,b),gongbei(a,b));
}
return 0;
}

就想叫yoko 2011-05-10
  • 打赏
  • 举报
回复
单步调试
shun_qizi_ran 2011-05-10
  • 打赏
  • 举报
回复
int gongyue(int x,int y)返回值是0
int gongbei(int x,int y)是个死循环
貌似定义了两个mian函数:
1> 所有输出均为最新。
1>s.obj : error LNK2005: _main 已经在 gongyue.obj 中定义
1>E:\Program Files (x86)\54\Debug\54.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
shj112233857900 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zhao4zhong1 的回复:]
#pragma warning(disable:4996)
[/Quote]
谢谢
sxdxfz 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 zhaokanghui1 的回复:]
#define _CRT_SECURE_NO_WARNINGS
加个这个就好了
[/Quote]
为什么加这个就好了呢??求高手解释。
flysnowhite 2011-05-03
  • 打赏
  • 举报
回复
换个编译器吧,程序本身没问题。
networkwx 2011-05-03
  • 打赏
  • 举报
回复
公倍数那里是个死循环,永远不会有结果。。。
shuangwen163 2011-05-03
  • 打赏
  • 举报
回复
代码应该没问题啊,重新建工程看看
zhangyuehua123 2011-05-03
  • 打赏
  • 举报
回复
将scanf改成scanf_s
灼眼的超哥 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lt114896 的回复:]

楼主,你那个int gongbei(int x,int y)的for循环没有退出循环的条件,程序会陷入死循环的,最好增加个条件。程序其他的都没什么问题。我觉得printf("%d %d\n",gongyue(a,b),gongbei(a,b));你这句话没什么意义,它最后打印的是返回值 i,你再看看,你是不是需要打印它!
[/Quote]
gongbei()函数里已经有
printf("%d",i);了,
你还用printf("%d %d",gongyue(a,b),gongbei(a,b));再打印一次。
hu7324829 2011-05-03
  • 打赏
  • 举报
回复
编译器问题,我这编译通过了.
alweeq86 2011-05-03
  • 打赏
  • 举报
回复

int gongbei(int x,int y)
{
return x*y/gongyue(x,y);
}
辰岡墨竹 2011-05-03
  • 打赏
  • 举报
回复
加了那个是忽略了建议使用更安全的字符串函数比如scanf_s的warning,但是那些都是警告而已,即使不理会也不应该导致程序无法通过编译。scanf_s比scanf要安全,可以避免很多内存的非法读写。
你原来真正导致无法编译通过的Error是有多个main函数,也就是一个工程里有两个以上有main函数的cpp。
注意VC里编译程序不要直接双击cpp文件打开,应该每编译一个程序都要单独建立一个工程。
lilvhuiling 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lt114896 的回复:]
楼主,你那个int gongbei(int x,int y)的for循环没有退出循环的条件,程序会陷入死循环的,最好增加个条件。程序其他的都没什么问题。我觉得printf("%d %d\n",gongyue(a,b),gongbei(a,b));你这句话没什么意义,它最后打印的是返回值 i,你再看看,你是不是需要打印它!
[/Quote]

#include <stdio.h>

int gongyue(int x,int y)
{
int i;
i = x > y ? y : x;
for( ; i > 0; i--)
if(x % i == 0 && y % i == 0)
return i;
}

int gongbei(int x,int y)
{
int i;
i = x > y ? y : x;
for( ; i <= x * y; i++) //在这里加一个公倍数的条件
if(i % x == 0 && i % y == 0)
return i;
}
int main ()
{
int j,a,b,n;
int p1,p2;
scanf("%d",&n);
for(j = 0; j < n; j++)
{
scanf("%d",&a);
scanf("%d",&b);
p1 = gongyue(a,b);
p2 = gongbei(a,b);
printf("%d %d",p1,p2);
}
return 0;
}



参考一下啦
zhaokanghui1 2011-04-16
  • 打赏
  • 举报
回复
#define _CRT_SECURE_NO_WARNINGS
加个这个就好了
阿磊2013 2011-04-04
  • 打赏
  • 举报
回复
从编译结果看,应该是除了这个文件,还有别的地方也有main函数的问题。另外那些什么scanf之类的只是警告,可以不理会
SuperFC 2011-04-04
  • 打赏
  • 举报
回复
#include <stdio.h>

int gongyue(int x,int y)
{
int i;
i=x>y?y:x;
for(;i>0;i--)
if(x%i==0&&y%i==0)
//printf("%d",i);
return i;
}
int gongbei(int x,int y)
{
int i;
i=x>y?y:x;
for(;;i++)
if(i%x==0&&i%y==0)
//printf("%d",i);
return i;

}
int main ()
{
int j,a,b,n;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a);
scanf("%d",&b);
printf("%d %d",gongyue(a,b),gongbei(a,b));
}
return 0;
}
hnfeitianwugui 2011-04-03
  • 打赏
  • 举报
回复
同问,怎么是代码标签???
[Quote=引用 3 楼 suliujing 的回复:]

什么是代码标签?
[/Quote]
  • 打赏
  • 举报
回复
#include <stdio.h>

int gongyue ( int x, int y)
{
int i;
i = ( x > y ) ? y : x ;
for(;i>0;i--)
if(x % i == 0 && y % i == 0 )
printf("%2d", i ) ;
return i;
}

int gongbei(int x,int y)
{
int i;
i = (x > y ) ? y : x ;
for(; i > 0 ;i --) //死循环了,中间没有终止条件
if(i % x == 0 && i % y == 0 )
printf( "%2d", i ) ;
return i;

}

void main ()
{
int j , a, b, n ;
scanf( "%d" , &n );
for( j = 0 ; j < n ; j ++ )
{
scanf("%d",&a);
scanf("%d",&b);
printf("%d %d",gongyue(a,b),gongbei(a,b));
}

}

//还是程序哪里错了
//答:这个程序没有注释,不知你这个程序的功能,而且没有适当的缩进和空格,
//让人看着头痛,希望下次你注意一点。
乐CC 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 smallwind1 的回复:]
同样求解代码标签
[/Quote]
//最近新人挺多啊
加载更多回复(24)

69,371

社区成员

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

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