已知整型数组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 WPF动态创建页面内容
- ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
- ¥15 SQL数据库操作问题
- ¥100 关于lm339比较电路出现的问题
- ¥15 Matlab安装yalmip和cplex功能安装失败
- ¥15 加装宝马安卓中控改变开机画面
- ¥15 STK安装问题问问大家,这种情况应该怎么办
- ¥15 关于罗技鼠标宏lua文件的问题
- ¥15 halcon ocr mlp 识别问题
- ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线