我只是C的初学者.
我正在尝试制作一个简单的程序来按升序排列用户输入的数字.我已经找到了解决方案,但无法理解为什么我的其他代码不起作用:(
-------------------------------------------------------------------------
working code:
-------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int i,j,num[10];
printf("Enter 10 numbers\n");
for (i=0;i<10;i++)
{scanf("%d",&num[i]);}
for (i=0;i<9;i++)
{
for (j=i+1;j<10;j++)
{
if (num[i]>num[j])
{
num[i]+=num[j];
num[j]=num[i]-num[j];
num[i]=num[i]-num[j];
}
}
}
printf("The numbers in ascending order are:");
for (i=0;i<10;i++)
{
printf(" %d",num[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
-------------------------------------------------------------------------
code that won't work:
-------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int i,j,num[10];
printf("Enter 10 numbers\n");
for (i=1;i<=10;i++)
{scanf("%d",&num[i]);}
for (i=1;i<10;i++)
{
for (j=i+1;j<=10;j++)
{
if (num[i]>num[j])
{
num[i]+=num[j];
num[j]=num[i]-num[j];
num[i]=num[i]-num[j];
}
}
}
printf("The numbers in ascending order are:");
for (i=1;i<=10;i++)
{
printf(" %d",num[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在后一个程序中,数字不按顺序出现,甚至还有未输入的数字.
我的问题是,它的代码基本相同吗?只是在后一个程序中,数字会被存储num[1]到num[10]而不是num[0]通过num[9]?
它与数组定义有关吗?
看来我有严重的误解,请帮帮我!