讨论:一个简单C程序的奇怪的结果

villastoner 2002-07-15 08:43:25
void main()
{
int i, j, num[10];

printf("please input ten numbers\n");

for (i=0; i<10; i++)
{
scanf("%d", &num[i]);
}

for (j=0; j<9; j++)
{
if (num[j] > num[j+1])
{
num[j+1] = num[j];
}
}

printf("The great max number is %d", num[9]);
}

====================================
作用是输入十个整数。打印出最大的数。TC2下通过。

当我试着输入 0x17 的时候,也就是输入了十六进制数,竟然出来了1547。
本来应该是等我输入完十个数以后才出答案,问题是当我就输入了一个数,就输出了1547。
这个~~~~~~~大家有什么看法没有?
...全文
29 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
programminglife 2002-07-15
  • 打赏
  • 举报
回复
if (num[j] > num[j+1])
{
num[j+1] = num[j];
}

这个if 语句里面你应该用值的交换!

否则,就会有一个值没有了!

这里是num[j+1]的值被覆盖掉了!

怎么能够得出正确结果呢?

villastoner 2002-07-15
  • 打赏
  • 举报
回复
TO: TSGX2000(天煞孤星)

共循环九次。从0到8

其实的,谢了
fipl 2002-07-15
  • 打赏
  • 举报
回复
scanf("%d", &num[i]);

换个scanf("%x", &num[i]);
试试
TSGX2000 2002-07-15
  • 打赏
  • 举报
回复
for (j=0; j<9; j++)
这只循环8次!

"%d"是十进制!应按十进制输入!!
zzz2001new 2002-07-15
  • 打赏
  • 举报
回复
再翻翻书

%D是十进制嘛.
xingforever 2002-07-15
  • 打赏
  • 举报
回复
%d就是十进制嘛
WarFather 2002-07-15
  • 打赏
  • 举报
回复
scanf("%d", &num[i]);



这里就限定你必须输入10禁止数,若不是则程序也作为10禁止处理.
hux 2002-07-15
  • 打赏
  • 举报
回复
非法输入

你认为的0X17对计算机来说不是十六进制的17

69,381

社区成员

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

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