概述
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
输入
用空格隔开的10个整数。
输出
输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。
请注意行尾输出换行。
样例输入
1 5 2 4 9 0 3 8 7 6
样例输出
0 5 2 4 6 1 3 8 7 9
代码
#include <stdio.h>
int a[10];
//输入函数
void input(int* p) {
for(; p < a+10; p++) {
scanf("%d", p);
}
}
//输出函数
void output(int* q) {
for(; q < a+10; q++) {
printf("%d ", *q);
}
}
//数组处理
void swap(int* k) {
int min=*k, max=*k;
for(; k < a+10; k++) { // 遍历数组
if(min > *k) { //找最小值
min = *k;
}
if(max < *k) { //找最大值
max = *k;
}
}
for(k=a; k < a+10; k++) {
if(min == *k) { //找到最小值的位置
int temp = *k; //交换
*k = a[0];
a[0] = temp;
}
if(max == *k) { //找到最大值的位置
int temp = *k; //交换
*k = a[9];
a[9] = temp;
}
}
}
int main() {
input(a);
swap(a);
output(a);
return 0;
}
结果:
上面这种方式处理数组的时候使用了两个 for 循环语句,我们可以再将它简化一下变成一个 for 循环语句:
#include <stdio.h>
int a[10];
void input(int* p) {
for(; p < a+10; p++) {
scanf("%d", p);
}
}
void output(int* q) {
for(; q < a+10; q++) {
printf("%d ", *q);
}
}
void swap(int* k) {
int min=*k, max=*k;
int i, m, n; //i为循环变量,m和n
for(i = 0; k < a+10; i++,k++) {
if(min > *k) {
min = *k;
m = i;
}
if(max < *k) {
max = *k;
n = i;
}
}
k = a;
int temp = *(k+m);
*(k+m) = *k;
*k = temp;
temp = *(k+n);
*(k+n) = *(k+9);
*(k+9) = temp;
}
int main() {
input(a);
swap(a);
output(a);
return 0;
}
结果:
最后
以上就是标致山水为你收集整理的C语言10.16的全部内容,希望文章能够帮你解决C语言10.16所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复