题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

16 篇文章 0 订阅

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

#include <stdio.h>
int main()
{
	int a[10];
	int i;
	printf("请输入一个10个数的数组:\n");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	exchange(a,10);
	print_f(a,10);
	return 0;
}
void exchange(int *s,int n)
{
	int max,min;
	max=min=*s;
	int k,i,m;
	for(i=1;i<n;i++){
		if(*(s+i)>max){
			max=*(s+i);
			k=i;
		}
		if(*(s+i)<min){
            min=*(s+i);
            m=i;
		}
	}
	*(s+k)=*s;
	*s=max;
	*(s+m)=*(s+9);
	*(s+9)=min;
}
void print_f(int *s,int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%d ",*(s+i));
}

运行结果:
在这里插入图片描述

### 回答1: 以下是用C语言实现的代码: ```c #include <stdio.h> int main() { int n, i, max = 0, min = 0, temp; int arr[100]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); if (arr[i] > arr[max]) { max = i; } if (arr[i] < arr[min]) { min = i; } } temp = arr[max]; arr[max] = arr[0]; arr[0] = temp; temp = arr[min]; arr[min] = arr[n-1]; arr[n-1] = temp; for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 解释一下代码: 1. 首定义变量n表示数组长度,i表示循环计数器,max和min分别表示最大值和最小值的下标,temp表示交换用的临时变量。 2. 定义一个数组arr,用于存储输入元素。 3. 通过scanf函数输入n和数组元素,同时用循环找到最大值和最小值的下标。 4. 交换最大值和第一个元素交换最小值和最后个元素。 5. 循环输出数组元素输入样例:5 12 8 34 1 54 输出样例:54 8 34 12 1 ### 回答2: 下面是使用C语言实现给定功能的代码段: ```c #include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int n, i; printf("请输入数组长度:"); scanf("%d", &n); int arr[n]; printf("请输入数组元素:"); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } // 寻找最大值和最小值的索引 int maxIndex = 0, minIndex = 0; for (i = 1; i < n; i++) { if (arr[i] > arr[maxIndex]) { maxIndex = i; } if (arr[i] < arr[minIndex]) { minIndex = i; } } // 将最大元素第一个元素交换 swap(&arr[maxIndex], &arr[0]); // 将最小元素最后个元素交换 swap(&arr[minIndex], &arr[n-1]); // 输出数组 printf("输出数组:"); for (i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 在上面的代码中,我们首通过程序向用户询问数组的长度。然后我们根据用户给定的长度来定义一个整型数组arr。然后我们通过程序提示用户输入数组元素,待用户输入完毕后,我们便可以通过遍历整个数组来寻找最大值和最小值的索引。接着我们使用封装好的swap函数将最大元素第一个元素交换,将最小元素最后个元素交换最后我们输出交换后的数组。 ### 回答3: 题目要求使用C语言实现一个功能:输入一个数组长度(不超过100),然后输入数组元素,将最大元素第一个元素交换位置,再将最小元素最后个元素交换位置,最后输出数组。 下面是一种实现方式: ```c #include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int n; // 数组长度 int arr[100]; // 定义一个大小为100的数组 int i, max_index, min_index; // 输入数组长度元素 printf("请输入数组长度(不超过100):"); scanf("%d", &n); printf("请输入数组元素:"); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } // 找到最大值和最小值的下标 max_index = 0; min_index = n - 1; for (i = 1; i < n; i++) { if (arr[i] > arr[max_index]) { max_index = i; } if (arr[i] < arr[min_index]) { min_index = i; } } // 将最大值与第一个元素交换 swap(&arr[0], &arr[max_index]); // 如果最小值是第一个元素,则需要将最小值下标更新为交换后的下标 if (min_index == 0) { min_index = max_index; } // 将最小值与最后个元素交换 swap(&arr[min_index], &arr[n - 1]); // 输出数组 printf("交换后的数组为:"); for (i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 运行程序时,输入数组的长度(不超过100),然后输入对应长度的数组元素。程序会根据输入进行交换操作,最后输出交换后的数组。 示例输入: 5 12 8 34 1 54 示例输出: 54 8 34 12 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值