我是靠谱客的博主 无限啤酒,最近开发中收集的这篇文章主要介绍指针 - 问题 E: C语言10.16,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

输入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

参考代码

1. 不用指针

#include<stdio.h>
//输入十个数
void InputNum(int num[]) {
for(int i = 0; i < 10; i++) {
scanf("%d", &num[i]);
}
}
//处理
void Handle(int num[]) {
int max = num[0], min = num[0];
int po1, po2; //记录最大值最小值的位置
for(int i = 0; i < 10; i++) {
if(num[i] > max) {
max = num[i];
po1 = i;
}
if(num[i] < min) {
min = num[i];
po2 = i;
}
}
int temp1 = num[po1];
num[po1] = num[9];
num[9] = temp1;
int temp2 = num[po2];
num[po2] = num[0];
num[0] = temp2;
}
//输出数组
void OutputNum(int num[]) {
for(int i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
}
int main() {
int num[10];
InputNum(num);
Handle(num);
OutputNum(num);
return 0;
}

2. 使用指针

#include<stdio.h>
//输入十个数
void InputNum(int *p) {
for(int i = 0; i < 10; i++) {
scanf("%d", p + i);
}
}
//处理
void Handle(int *p) {
int max = *p, min = *p;
int po1, po2; //记录最大值最小值的位置
for(int i = 0; i < 10; i++) {
if(*(p + i) > max) {
max = *(p + i);
po1 = i;
}
if(*(p + i) < min) {
min = *(p + i);
po2 = i;
}
}
int temp1 = *(p + po1);
*(p + po1) = *(p + 9);
*(p + 9) = temp1;
int temp2 = *(p + po2);
*(p + po2) = *p;
*p = temp2;
}
//输出数组
void OutputNum(int *p) {
for(int i = 0; i < 10; i++) {
printf("%d ", *(p + i));
}
}
int main() {
int num[10];
InputNum(num);
Handle(num);
OutputNum(num);
return 0;
}

最后

以上就是无限啤酒为你收集整理的指针 - 问题 E: C语言10.16的全部内容,希望文章能够帮你解决指针 - 问题 E: C语言10.16所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部