2016-02-21 2 views
-5

Я вроде как новый для использования в массивах, поэтому я попытаюсь изо всех сил прокомментировать, какие части этого кода я знаю, и тогда я надеюсь, что вы поможете мне объяснить и прояснить остальных. Цель состоит в том, чтобы получить 10 элементов (номера), а затем отсортировать их в порядке (самый большой для маленьких и наоборот)Можете ли вы объяснить, как этот код работает для меня?

#include <stdio.h> 
#include <stdlib.h> 

void input(); 
void sort(); 

int array[10]; 

int main() 

{ 
    char ans='y'; 
    while(ans=='y'||ans=='Y') /// Run the program while 'y' is entered 
{ 

input(); // run the input function 
sort(); // run the sort function 

printf("\n Run Program Again?"); // ask user for input (char ans) 
scanf("%s",&ans); 

} 
} 

void input() 
{ 
    int x; 

    for (x = 0; x < 10 ; x++) 
{ //This is where I get confused. If my int x is =0, less than 10, I don't know what "++ means 
    printf("\nInput: "); //ask for input 
    scanf("%d", &array[x]); //get the input typed in and place in array x 
    } 
} 

void sort() 

{ 
{ 
int x = 0; 
int y = 0; 
int z = 0; 
int biggerNum = 0; 
int smallerNum = 0; //set values for integers 



for (z = 10; z > 0; z--) { // can someone explain this part? 
    for (x = 0; x <= 10; x++) { 
     if (array[z] < array[x]) 
      continue; 
     else { 
      biggerNum = array[z]; 
      smallerNum= array[x]; 
      array[z] = smallerNum; 
      array[x] = biggerNum; 
      printf("\n%d\t%d",array[z],array[x]); 
     } 
    } 
    } 

    printf("\nDescending order:"); 

    for (x = 0; x < 10; x++) // this is the algorithm for going down 
     printf("\n %d",array[x]); 

    printf("\nAscending Order:"); // same for going up 
    for (x = 10; x > 0; x--) 
     printf("\n %d",array[x]); 
} 

}  

ответ

1

Я описывающее. Я думаю, это будет полезно для вас.

первая часть:

Во-первых, вы инициализации ans (это символьный тип данных) по 'y'. Таким образом, он войдет в цикл while. Затем с помощью функции input() вы принимаете 10 номеров. А затем с помощью функции sort() вы сортируете эти 10 чисел от самых больших до самых низких и наоборот. И затем вы снова берете вход ans. Если вы (пользователь) возьмете снова 'y' или 'Y', то он будет продолжен. В противном случае цикл while будет прерываться, и программа завершится.

вторая часть:

void input() 
{ 
    int x; 

    for (x = 0; x < 10 ; x++) 
    { 
     //This is where I get confused. If my int x is =0, less than 10, I dont 
     //know what "++ means 
     printf("\nInput: "); //ask for input 
     scanf("%d", &array[x]); //get the input typed in and place in array x 
    } 
} 

Этот код на самом деле для принятия 10 номеров. Атк. 'x++' означает увеличение на x. Это означает x=x+1. Вы храните эти 10 чисел в массиве на scanf.

третья часть:

void sort() 
{ 
    { 
     int x = 0; 
     int y = 0; 
     int z = 0; 
     int biggerNum = 0; 
     int smallerNum = 0; //set values for integers 

     for (z = 10; z > 0; z--) // can someone explain this part? 
     { 
      for (x = 0; x <= 10; x++) 
      { 
       if (array[z] < array[x]) 
        continue; 
       else 
       { 
        biggerNum = array[z]; 
        smallerNum= array[x]; 
        array[z] = smallerNum; 
        array[x] = biggerNum; 
        printf("\n%d\t%d",array[z],array[x]); 
       } 
      } 
     } 

     printf("\nDescending order:"); 

     for (x = 0; x < 10; x++) // this is the algorithm for going down 
      printf("\n %d",array[x]); 

     printf("\nAscending Order:"); // same for going up 
     for (x = 10; x > 0; x--) 
      printf("\n %d",array[x]); 
    } 

Это сортировка 10 номеров. На самом деле это называется bubble sort.

Смежные вопросы