7-1 利用指针返回多个函数值
分数 30
全屏浏览
切换布局
作者 陈晓梅
单位 广东外语外贸大学
读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。
输入格式:
输入有两行:
第一行是n值;
第二行是n个数。
输出格式:
输出最大值和最小值。
输入样例:
在这里给出一组输入。例如:
5
8 9 12 0 3
输出样例:
在这里给出相应的输出。例如:
max = 12
min = 0
#include<stdio.h>
int *max_min(int *p,int n)
{int i;static int a[2];*a=*(a+1)=*p;for(i=0;i<n;i++){if(*(p+i)>*a){*a=*(p+i);}if(*(p+i)<*(a+1)){*(a+1)=*(p+i);}}return a;
}
int main()
{int n,*p,i;scanf("%d",&n);int a[n];for(i=0;i<n;i++){scanf("%d",&a[i]);}int *m = max_min(a,n);printf("max = %d\nmin = %d\n",*m,*(m+1));return 0;
}
7-2 逆置一维数组
分数 10
全屏浏览
切换布局
作者 usx程序设计类课程组
单位 绍兴文理学院
编写程序,以指针的方式,就地逆置一维数组。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入数据个数n,然后输入n个整数。
输出格式:
对于每组测试,在一行上输出逆置之后的结果。数据之间以一个空格分隔。
输入样例:
2
4 1 2 5 3
5 4 3 5 1 2
输出样例:
3 5 2 1
2 1 5 3 4
#include<stdio.h>
int f(int*a,int n)
{int t=0;for(int i=0;i<n/2;i++){t=*(a+i);*(a+i)=*(a+n-i-1);*(a+n-i-1)=t;}for(int i=0;i<n;i++){if(i==0)printf("%d",*a);elseprintf(" %d",*(a+i));}
}
int main()
{int T,n;scanf("%d",&T);while(T>0){scanf("%d",&n);int a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);}f(a,n);printf("\n");T--;}return 0;
}
7-3 两数的互换
分数 30
全屏浏览
切换布局
作者 王群芳
单位 合肥师范学院
从键盘任意输入两个整数,用指针作函数参数,编程实现将其交换后再重新输出。
函数接口:
void swap(int *x, int *y)
输入格式:
从键盘输入两个整数。
输出格式:
按输出样例的形式输出交换后的两个整数。
输入样例:
11 22
输出样例:
After swap:22,11
#include<stdio.h>
void swap(int *x,int *y)
{printf("After swap:%d,%d",*y,*x);
}
int main()
{int x,y;scanf("%d %d",&x,&y);swap(&x,&y);return 0;
}
7-4 sdut-C语言实验-虎子的难题
分数 10
全屏浏览
切换布局
作者 马新娟
单位 山东理工大学
稷下英才实验班有个同学叫虎子,有一天虎子刷到了一道编程题:给M(M<=100)组数据,每组数据有N个正整数(N<=100),要求把每组的N个数按升序排成一行。虎子觉得应该用指针和函数实现比较高效,但总是调试不出来,你能帮帮他吗?
输入格式:
输入包括M+1行,第一行是两个正整数M、N;M表示总共多少组数据,下面M行每行包含N个正整数。(输入数据之间会用空格隔开)
输出格式:
输出包括M行,每行分别对应输入中M组数据的升序序列,数与数之间用一个空格隔开。
输入样例:
2 3
1 3 2
4 2 6
输出样例:
在这里给出相应的输出。例如:
1 2 3
2 4 6
#include<stdio.h>
void f(int *q,int n)
{int i,j,t;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(*(q+i)>=*(q+j)){t=*(q+i);*(q+i)=*(q+j);*(q+j)=t;}}}
}
int main()
{int m,n,i,j;scanf("%d %d",&m,&n);int nums[m][n];for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&nums[i][j]);}}for(i=0;i<m;i++){f(nums[i],n);}for(i=0;i<m;i++){for(j=0;j<n;j++){if(j==0){printf("%d",nums[i][j]);}else{printf(" %d",nums[i][j]);}}printf("\n");}return 0;
}