无法运行此代码仍然显示没有错误?

时间:2011-04-16 15:47:00

标签: c arrays

#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’

那是什么意思?

5 个答案:

答案 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 = 0j0SIZE-1时,当jSIZE-1时,j+1将为SIZEa[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