寻找n个整数里的最大数并与最后一个数交换位置的c语言代码
时间: 2023-06-03 21:07:37 浏览: 60
以下是寻找n个整数里的最大数并与最后一个数交换位置的C语言代码:
```
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个数:", i+1);
scanf("%d", &arr[i]);
}
int maxIdx = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[maxIdx]) {
maxIdx = i;
}
}
swap(&arr[maxIdx], &arr[n-1]);
printf("交换后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
相关问题
c语言,输入四个整数 从小到大排序,不要用交换法
首先,让我来介绍一下C知道。C知道是一款由CSDN开发的人工智能应用程序,它可以帮助用户解决各种与C语言开发相关的问题。作为C知道的AI,我非常乐意为你解答C语言相关的问题。
回到你的问题,如何用C语言输入四个整数,从小到大排序,却不用交换法呢?我们可以使用选择排序算法来解决这个问题。选择排序是一种简单直接的排序算法,其基本思想是每一次从待排序的数据元素中选出最小(或者最大)的一个元素,存放到序列的起始位置。然后再从剩余的未排序的元素中寻找最小(或者最大)的元素,然后放到已排序序列的末尾。以此类推,最终排序完成。
以下是使用选择排序算法对四个整数进行排序的C语言代码:
```
#include <stdio.h>
void selection_sort(int arr[], int n)
{
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++)
{
min_idx = i;
for (j = i+1; j < n; j++)
{
if (arr[j] < arr[min_idx])
min_idx = j;
}
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main()
{
int arr[4], i;
printf("请输入四个整数:\n");
for (i = 0; i < 4; i++)
{
scanf("%d", &arr[i]);
}
selection_sort(arr, 4);
printf("从小到大排序的结果为:");
for (i = 0; i < 4; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个代码中,我们定义了一个名为selection_sort的函数来实现选择排序算法。它接受一个整型数组arr和数组长度n作为参数,对arr中的元素进行从小到大的排序。我们还定义了一个main函数用于输入四个整数,并调用selection_sort函数进行排序。
需要注意的是,在这里我们并没有使用交换法来进行排序。而是使用了一个额外的变量temp来储存最小值,然后通过赋值的方式将当前最小值和外层循环(已排好序)的最右边的元素进行交换,以此达到从小到大排序的目的。
希望我的回答能够帮到你,如果你还有其他问题,可以直接向我提问。
C语言有一数组内存放10个整数,要求找出最大数和它的下标, 然后把它和数组中第0个元素对换位置。
好的,这个问题可以用以下代码实现:
```c
#include <stdio.h>
int main() {
int nums[10] = {5, 7, 2, 9, 1, 4, 6, 8, 3, 0}; // 初始化数组
int max = nums[0]; // 假设最大值为数组第一个元素
int max_index = 0; // 最大值下标为0
// 遍历数组,寻找最大值和它的下标
for (int i = 1; i < 10; i++) {
if (nums[i] > max) {
max = nums[i];
max_index = i;
}
}
printf("最大值为:%d,下标为:%d\n", max, max_index);
// 将最大值和第0个元素对换位置
int temp = nums[0];
nums[0] = max;
nums[max_index] = temp;
// 输出交换后的数组
printf("交换后的数组为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
这段代码中,我们首先定义了一个长度为10的整型数组 `nums`,并初始化了它的元素。然后,我们假设数组的第一个元素为最大值,并遍历整个数组,寻找最大值和它的下标。找到最大值后,我们将它和数组的第0个元素对换位置,最后输出交换后的数组。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)