C 語言程式對單個數組中的兩半執行操作


問題

編寫一個程式,接受一個維度為 N 的元素陣列,並將其分成兩半。之後,將上半部分按升序排列,將下半部分按降序排列。

解決方案

用 C 語言對單個數組中的兩半執行兩個操作的解決方案如下所述 −

用於將上半部分按升序排列的邏輯如下 −

for (i=0; i<b; ++i){
   for (j=i+1; j<b; ++j){
      if (number[i] > number[j]){
         a = number[i];
         number[i] = number[j];
         number[j] = a;
      }
   }
}

用於將下半部分按降序排列的邏輯如下 −

for (i=b; i<n; ++i){
   for (j=i+1; j<n; ++j){
      if (number[i] < number[j]){
         a = number[i];
         number[i] = number[j];
         number[j] = a;
      }
   }
}

用於將陣列分成兩半並按要求列印的邏輯如下 −

  • 升序排列上半部分
for (i=0; i<b; ++i)
printf ("%d ",number[i]);
  • 降序排列下半部分
for(i=b;i<n;i++)
printf("%d ",number[i]);

示例

以下是 C 程式,對單個數組中的兩半執行兩個操作

 即時演示

#include<stdio.h>
void main(){
   int i,j,a,n,b,number[30];
   printf ("Enter the value of N
");    scanf ("%d", &n);    b = n/2;    printf ("Enter the numbers
");    for (i=0; i<n; ++i)       scanf ("%d",&number[i]);       for (i=0; i<b; ++i){          for (j=i+1; j<b; ++j){             if (number[i] > number[j]){                a = number[i];                number[i] = number[j];                number[j] = a;          }       }    }    for (i=b; i<n; ++i){       for (j=i+1; j<n; ++j){          if (number[i] < number[j]){             a = number[i];             number[i] = number[j];             number[j] = a;          }       }    }    printf (" The 1st half numbers
");    printf (" arranged in asc
");    for (i=0; i<b; ++i)       printf ("%d ",number[i]);    printf("
The 2nd half Numbers
");    printf("order arranged in desc.order
");    for(i=b;i<n;i++)       printf("%d ",number[i]); }

輸出

執行上述程式後,會產生以下結果 −

Enter the value of N

10
Enter the numbers
20
34
23
11
45
56
78
98
76
54
The 1st half numbers
arranged in asc
11 20 23 34 45
The 2nd half Numbers
order arranged in desc.order
98 78 76 56 54

更新於: 2021-09-01

658 次瀏覽

開啟 職業 生涯

完成課程認證

開始
廣告