#include <stdio.h>
#define SIZE 10
void main()
{
int a[SIZE], i, j, temp;
printf("Enter 10 numbers");
for (i=0; i<SIZE; i++)
scanf("%d", &a[i]);
for (i=0; i<SIZE; i++)
{
for (j=0; j<SIZE-i; j++)
{
if (a[j] > a[j+1])
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
for (i=0; i<SIZE; i++)
printf("%d", a[i]);
}
进一步显示:
prog.c:4: warning: return type of ‘main’ is not ‘int’
那是什么意思?
答案 0 :(得分:2)
在C中,main()
返回int
。如果程序成功完成,则返回0
,否则返回您选择的非零数字。至少在Unix中,main()
返回的数字将是程序返回到命令shell的退出代码。
答案 1 :(得分:1)
for(i=0; i<SIZE; i++)
{
for(j=0; j<SIZE-i; j++)
{
if(a[j]>a[j+1]) // <- a { here?
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
// a } here?
}
}
当i = 0
,j
为0
到SIZE-1
时,当j
为SIZE-1
时,j+1
将为SIZE
,a[j+1]
为a[SIZE]
!
答案 2 :(得分:1)
这意味着main
需要返回一个int,因此您应该void main()
而不是int main()
,最后通常应该return 0;
表示正常退出。
答案 3 :(得分:0)
除了在{}
语句后丢失if
之外,您也有逻辑开销。第一次迭代确保第一个元素是最小的,不需要在第二次迭代中再次检查它,对于其余的元素也是如此。
for(i=0; i<SIZE; i++)
{
for(j=0; j<SIZE-i; j++)
// Start the second loop from i to SIZE.
答案 4 :(得分:-1)
另外你在第二个for循环中的i应该是1我认为 - 即。 SIZE - 1不是SIZE - j