2016-10-19 22 views
1

我的老師給了我們代碼,該代碼應該提示用戶輸入10個數字,調用一個函數將數組從最小到最大排序,然後打印結果。我們所要做的只是讀取輸入並打印出來。這是她給我們:我必須讀取用戶輸入到數組中的10個值,然後在C中打印它們

#include <stdio.h> 
#include <stdbool.h> 
#define num 10 

void sort_array(int *a, int b); 

int main(void) 

{ 

    int array[num] = {0}, i; 



    for (i = 1; i < 10; i++) { 
     printf("Please enter %d integers ", num); 
    /* read the input! */ 

    sort_array(a, num); 

    /* print the sorted array */ 

return 0; 

} 

void sort_array(int *a, int b) 

{ 

bool swapped = true; 
int temp, i, j = 0; 

while (swapped) 
    { 
    swapped = false; 
    j++; 
    for (i = 0; i < b - 1; i +1) 

     { 
      if (a[i] > a[i+1]) { 
       temp = a[i]; 
       a[i] = a [i + 1]; 
       a[i + 1] = temp; 
       swapped = true; 
       } 

      } 

     } 
} 

這是我在它的嘗試:

#include <stdio.h> 
#include <stdbool.h> 
#define num 10 

void sort_array(int *a, int b); 

int main(void) 

{ 

int array[num] = {0}, i, j; 

printf("Please enter %d integers: ", num); 
for (i = 0; i < 10; i++) { 
    scanf("%d", &array[i]); 
    } 

/* read the input! */ 

sort_array(array, num); 

/* print the array */ 
for (i = 0; i < 10; i++) { 
    printf("%d ", array[i]); 
    } 

return 0; 

} 

void sort_array(int *a, int b) 

{ 

bool swapped = true; 
int temp, i, j = 0; 

while (swapped) 
    { 
    swapped = false; 
    j++; 
    for (i = 0; i < b - 1; i +1) 

     { 
      if (a[i] > a[i+1]) { 
       temp = a[i]; 
       a[i] = a[i + 1]; 
       a[i + 1] = temp; 
       swapped = true; 
       } 

      } 

     } 
} 

我知道我可能是從右側很遠,但可能有人請幫助我嗎?我正在使用Quincy進行編譯。程序會讓我輸入數字,但我必須用ctrl + c關閉程序。

對不起,如果我搞砸了格式。

+0

難道你的程序無法正常工作?如果是這樣,請告訴你是什麼意思? –

+0

對不起,剛剛編輯。該計劃將讓我輸入數字,但不會做任何其他事情。 –

+1

你在'for(i = 0; i

回答

3

當你在C語言進行編程,它是利用printf

我重新編寫代碼,用正確的修正,使其也work..and非常好的做法調試包括一些打印給你看我的的觀點,你怎麼能調試..

不要忘記刪除所有不必要的打印到程序提交給你的老師

#include <stdio.h> 
#include <stdbool.h> 
#define num 10 

void sort_array(int *a, int b); 

int main(void) 

{ 

int array[num] = {0}, i, j; 

printf("Please enter %d integers:\n", num); 
for (i = 0; i < 10; i++) { 
    printf("number %d: ", i+1); 
    scanf("%d", &array[i]); 
} 

/* read the input! */ 

sort_array(array, num); 

/* print the array */ 
printf("Sorted Array: ["); 
for (i = 0; i < 10; i++) { 
    printf("%d, ", array[i]); 
    } 
printf("]"); 

return 0; 

} 

void sort_array(int *a, int b) 

{ 

bool swapped = true; 
int temp, i, j = 0; 

while (swapped) 
    { 
    swapped = false; 
    j++; 
    for (i = 0; i < b - 1; i ++) 

     { 
      printf("i:%d --- A[i] = %d ---- A[i+1] = %d\n", i, a[i], a[i+1]); 
      if (a[i] > a[i+1]) { 
       temp = a[i]; 
       a[i] = a[i + 1]; 
       a[i + 1] = temp; 
       swapped = true; 
       } 

      } 

     } 
} 
+0

爲什麼不在'stdlib.h'中使用'qsort'(保證比* roll-your-own *排序方案有更好的測試...) –

+0

因爲我們在書中還沒有那麼深入。我讀了一點,我知道你可以做到,但我不希望她認爲我是「作弊」大聲笑。 –

相關問題