輸入10個整數,將其中最小的數與第一個數對換, 把最大的數與最后一個數對換。
點我看視頻講解+可運行代碼,記得收藏視頻,一鍵三連
寫3個函數:
①輸人10個數;
②進行處理;
③輸出10個數。
解題思路: 在進行數值逐個比較的同時找到最小值的空間地址以及最大值的空間地址,使用這兩個空間中的數據最終與第一和最后數據進行對換即可。
答案:
#include <stdio.h>
void input(int *arry, int len)
{
for (int i = 0; i < len; i++) {
scanf_s("%d", &arry[i]);
}
}
void print(int *arry, int len)
{
for (int i = 0; i < len; i++) {
printf("%d ", arry[i]);
}
printf("\n");
}
void handle(int *arry, int len)
{
int max_num = arry[0], min_num = arry[0];
int *p_max = NULL, *p_min = NULL;
for (int i = 1; i < len; i++) {
if (min_num > arry[i]) {//逐個比對后找出最小值
min_num = arry[i];
p_min = &arry[i]; //逐個比對后找到最小值的空間地址
}
if (max_num < arry[i]) {//逐個比對后找出最大值
max_num = arry[i];
p_max = &arry[i]; //逐個比對后找到最大值的空間地址
}
}
int tmp;
tmp = *p_min; *p_min = arry[0]; arry[0] = tmp; //最小值與第一個數據交換
tmp = *p_max; *p_max = arry[len - 1]; arry[len - 1] = tmp;//最大值與最后一個數據交換
}
int main()
{
int arry[10];
printf("Please enter ten nums:");
input(arry, 10);
handle(arry, 10);
print(arry, 10);
system("pause");
return 0;
}