题8.3:输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换。 写3个函数: ①输人10个数; ②进行处理; ③输出10个数

题目

本题是谭浩强《C程序设计课后习题》题8.3。
题目:
输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换。
写3个函数:
①输人10个数;
②进行处理;
③输出10个数。


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj

一、解题思路

思路:
一,首先根据题目要求,把主函数先写出,在主函数里定义一个能存放10个数的整形数组,然后丢进去3个处理函数即可。
二.我们在外面分别定义3个函数:
第一个是输入函数,这个最简单,需要注意的是接收是定义整形指针接收数组即可,因为数组名对应首单元地址,所以接收时是int * number
第二个是处理函数,这个函数还是有点难度的,理一下思路:
1。首先定义max和min两个指针变量,用于进行指向。然后定义一个p指针变量和temp用于存放临时值。
2。把max和min先指向第一个数,也就是max=min=number,number代表首元素地址,指针变量指向地址,没毛病。
3。先遍历找到数组中的最小值,然后把min指向最小值 的地址后立马进行交换,此时数组中最小值就在第一位了
4,然后遍历找到数组中的最大值,把max指向最大值的地址(地址就是指针变量不加*,加*表示的意思是值)然后进行交换,即把最大值和最后一位交换
三,调用输出函数将处理完的数组输出即可。

二、代码部分

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

void input(int* number)
{
	printf("请输入10个数,用空格分隔:\n");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &number[i]);
	}
}
void max_min_value(int* number)//交换函数
{
	int* max, * min, * p, temp;
	max = min = number;//开始时max和min都指向第一个数。
	for (p = number + 1; p < number + 10; p++)
		if (*p < *min)min = p;//如果p指向的数小于min指向的数,就使min指向p指向的数。
	temp = number[0]; number[0] = *min; *min = temp;//将最小数与第一个数交换。
	for (p = number + 1; p < number + 10; p++)
		if (*p > *max)max = p;//如果p指向的数大于max指向的数,就使max指向p指向的数。
	temp = number[9]; number[9] = *max; *max = temp;
}
void output(int* number)
{
	int* p;
	printf("经过处理,目前这10个数的顺序为:\n");
	for (p = number; p < number + 10; p++)
		printf("%d ", *p);
	/*for (int i = 0; i < 10; i++)
	{
		printf("%d", number[i]);
	}*/
}
int main()
{
	int number[10];
	input(number);
	max_min_value(number);
	output(number);
	return 0;
}


三、执行结果

在这里插入图片描述

输出:

请输入3个字符串,按回车键结束:c
请输入10个数,用空格分隔:
10 9 8 7 6 5 4 3 1 2
经过处理,目前这10个数的顺序为:
1 9 8 7 6 5 4 3 2 10
  • 47
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志冲海大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值