Невозможно запустить этот код, но он не показывает ошибок? - PullRequest
0 голосов
/ 16 апреля 2011
#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 ]

2 голосов
/ 16 апреля 2011

В C main() возвращает int.Если программа завершается успешно, вы возвращаете 0, если нет, вы возвращаете ненулевое число по вашему выбору.В Unix, по крайней мере, число, которое возвращает main(), будет кодом завершения, возвращаемым программой в командную оболочку.

1 голос
/ 16 апреля 2011

Это означает, что main требуется для возврата целого числа, поэтому вместо void main() у вас должно быть int main(), а в конце у вас обычно должно быть return 0; для обозначения нормального выхода.

1 голос
/ 16 апреля 2011
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]!

0 голосов
/ 16 апреля 2011

Также ваш i во втором цикле for должен быть 1, я думаю - т.е.РАЗМЕР - 1 НЕ РАЗМЕР - j

0 голосов
/ 16 апреля 2011

Помимо пропущенного {} после оператора if, у вас также есть логические издержки.Первая итерация гарантирует, что первый элемент является наименьшим, и нет необходимости проверять его снова во второй итерации и аналогично для остальных элементов.

for(i=0; i<SIZE; i++)
{ 
   for(j=0; j<SIZE-i; j++)
   // Start the second loop from i to SIZE.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...