输入n个整数,编写函数实现以下操作,要求用指针实现: (1) 对n个数进行排序; (2) 将从指定位置的m个数逆序存放,例如:原序列为2,4,6,8,10,12,14,16,18,20,若要求把
2017-09-26 22:22
751 查看
1、 输入n个整数,编写函数实现以下操作,要求用指针实现:
(1) 对n个数进行排序;
(2) 将从指定位置的m个数逆序存放,例如:原序列为2,4,6,8,10,12,14,16,18,20,若要求把从第四个数开始的5个数按逆序重新排列,则得到的新数列2,4,6,16,14,12,10,8,18,20;
(3) 输出这组数。
#include<stdio.h>
#define N 20
void input(int *p,int n){
int i;
for(i=0;i<n;i++)
scanf("%d",p++);
}
void sort(int *p,int n){
int i,j,k,t;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(*(p+k)>*(p+j))
k=j;
}
if(k!=i){
t=*(p+i);
*(p+i)=*(p+k);
*(p+k)=t;
}
}
}
void reverse(int a[],int f,int m){
int i,j,t;
for(i=f-1;i<f+m-1;i++){
for(j=1;j<f+m-i-1;j++){
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void output(int *p,int n){
int i;
for(i=0;i<n;i++)
printf("%d ",*p++);
printf("\n");
}
int main(){
int a
,n,f,m;
printf("输入整数个数:\n");
scanf("%d",&n);
printf("输入%d个整数:\n",n);
input(a,n);
sort(a,n);
printf("排序后:\n");
output(a,n);
printf("输入要逆序的位置f和数据个数m:\n");
scanf("%d%d",&f,&m);
reverse(a,f,m);
printf("逆序后:\n");
a1b5
output(a,n);
return 0;
}
(1) 对n个数进行排序;
(2) 将从指定位置的m个数逆序存放,例如:原序列为2,4,6,8,10,12,14,16,18,20,若要求把从第四个数开始的5个数按逆序重新排列,则得到的新数列2,4,6,16,14,12,10,8,18,20;
(3) 输出这组数。
#include<stdio.h>
#define N 20
void input(int *p,int n){
int i;
for(i=0;i<n;i++)
scanf("%d",p++);
}
void sort(int *p,int n){
int i,j,k,t;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(*(p+k)>*(p+j))
k=j;
}
if(k!=i){
t=*(p+i);
*(p+i)=*(p+k);
*(p+k)=t;
}
}
}
void reverse(int a[],int f,int m){
int i,j,t;
for(i=f-1;i<f+m-1;i++){
for(j=1;j<f+m-i-1;j++){
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void output(int *p,int n){
int i;
for(i=0;i<n;i++)
printf("%d ",*p++);
printf("\n");
}
int main(){
int a
,n,f,m;
printf("输入整数个数:\n");
scanf("%d",&n);
printf("输入%d个整数:\n",n);
input(a,n);
sort(a,n);
printf("排序后:\n");
output(a,n);
printf("输入要逆序的位置f和数据个数m:\n");
scanf("%d%d",&f,&m);
reverse(a,f,m);
printf("逆序后:\n");
a1b5
output(a,n);
return 0;
}
相关文章推荐
- (用指针方法处理)有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写一个函数实现上述功能,在主函数中输入n个整数,并输出调整后的n个数
- 5-16: 输入10个数,要求编写一个排序函数,能够实现按绝对值从大到小排序。在主函数中输入10个数,输出排序后的10个数
- 将输入的整数排序并指定位置逆序存放
- 从主函数输入十个不等长的字符串,编写函数,对这些串进行排序,在主调函数中输出排好序的串,指针实现。
- 一个有n个整数的递增有序数组。对它进行向左或向右循环移动若干次后,要求给出一个代码实现,尽可能快地从这个数组中寻找指定值所在的位置
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
- 现有杂乱无序的1-20二十个数,这二十个数为:1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5,20,试依次求出相邻四个数之和的最大和最小值
- int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求对数组a进行排序,要求时间复杂度为O(N)
- 【C语言】请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变
- 通过操作指针,与指针做函数参数'实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- 编写程序:从键盘上输入若干个整数(以输入-1作为结束标识),输出这些数中的最大值和最小值,要求编写一个函数实现最大值和最小值的求取。
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。
- 12.输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- /* 用指向指针的指针的方法对n个整数排序并输出 。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出*/
- |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20所有这些字符串,把它的数字一个个剥离??
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 在一个长度为10的整型数组里面,保存了班级10个学生的考试成绩。要求编写5个函数,分别实现计算考试的总分,最高分,最低分,平均分和考试成绩降序排序