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 次浏览

开启 职业 生涯

完成课程认证

开始
广告
© . All rights reserved.