已知整型数组a中有若干元素的值为零,编写函数int func(int *a, int n),将a中的零移至数组后面,非零整数移至数组前面并从小到大排序。形参n表示数组中元素的个数,函数返回原数组中第一个值为零的元素的下标。在main函数中调用该函数。
4条回答 默认 最新
- 南七灵 2021-12-09 22:08关注
#include <stdio.h> int func(int *a, int n); int main(){ int i,n; printf("请输入数组元素个数:\n"); scanf("%d", &n); int a[n]; printf("请输入数组元素:\n"); for(i = 0;i < n;i++){ scanf("%d",&a[i]); } int index = func(a, n); printf("排序后的数组:\n"); for(i = 0;i < n;i++){ printf("%d ",a[i]); } printf("\n原数组中第一个0的下标是%d",index); } int func(int *a, int n){ int i,j,index = -1; for(i = 0;i < n;i++){ if(a[i] == 0){ index = i; break; } } for(i = 0;i < n-1;i++){ for(j = 0;j < n-1-i;j++){ if(a[j] > a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } int cnt = 0; for(i = 0;i < n;i++){ if(a[i] == 0){ cnt ++; } } for(i = 0;i < n;i++){ if(a[i] == 0){ for(j = i;j < n - cnt;j++){ a[j] = a[j + cnt]; } for(j = n - cnt;j < n;j++){ a[j] = 0; } break; } } return index; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 乌班图ip地址配置及远程SSH
- ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
- ¥15 PSPICE制作一个加法器
- ¥15 javaweb项目无法正常跳转
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?