C语言如何输入十个数输出最大值
更新时间:2024-01-16问题描述
在C语言中输入十个数,并输出这些数中的最大值。
解决方案1
我们可以通过比较输入的十个数,找出最大的数。
#include <stdio.h>
int main() {
int nums[10];
int max;
for(int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
max = nums[0];
for(int i = 1; i < 10; i++) {
if(nums[i] > max) {
max = nums[i];
}
}
printf("最大值为: %d\n", max);
return 0;
}
解决方案2
我们也可以通过对数字进行排序来找到最大值。
#include <stdio.h>
int main() {
int nums[10];
for(int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
// 选择排序
for(int i = 0; i < 9; i++) {
int min_index = i;
for(int j = i + 1; j < 10; j++) {
if(nums[j] < nums[min_index]) {
min_index = j;
}
}
int temp = nums[i];
nums[i] = nums[min_index];
nums[min_index] = temp;
}
printf("最大值为: %d\n", nums[9]);
return 0;
}
解决方案3
我们还可以使用递归的方式来找到最大值。
#include <stdio.h>
int findMax(int nums[], int start, int end) {
if(start == end) {
return nums[start];
} else {
int middle = (start + end) / 2;
int max1, max2;
max1 = findMax(nums, start, middle);
max2 = findMax(nums, middle + 1, end);
if(max1 > max2) {
return max1;
} else {
return max2;
}
}
}
int main() {
int nums[10];
for(int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
int max = findMax(nums, 0, 9);
printf("最大值为: %d\n", max);
return 0;
}
解决方案4
最后,我们还可以使用指针来找到最大值。
#include <stdio.h>
void findMax(int *nums, int num_count, int *max) {
*max = *(nums++);
for(int i = 1; i < num_count; i++) {
if(*nums > *max) {
*max = *nums;
}
nums++;
}
}
int main() {
int nums[10];
int max;
for(int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
findMax(nums, 10, &max);
printf("最大值为: %d\n", max);
return 0;
}
代码示例解释
以上四种解决方案都可以找到输入的十个数中的最大值。第一种方法是通过循环遍历找到最大值。第二种方法是选择排序,在排序后,最大的数将位于数组的最后一个位置。第三种方法是递归查找,将数组分为两个部分,然后在其中找到每个部分的最大值,最后比较两个最大值得到整个数组的最大值。第四种方法是使用指针来遍历数组,同时记录最大值。
上述代码在运行时,需要输入十个数。在输入这些数之后,每个程序输出的结果均为输入数字中的最大值。