用C语言实现:输入十个整数,将其中最小值与第一个数对换,把最大值与最后一个数对换,最后输出这10个数
看到有个答案中又将数组赋值给指针,不理解其作用
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int numbers[10];
int i, min, max, minIndex, maxIndex;
printf("请输入十个整数:\n");
for (i = 0; i < 10; i++) {
printf("请输入第%d个数:", i + 1);
scanf("%d", &numbers[i]);
}
min = numbers[0];
max = numbers[0];
minIndex = 0;
maxIndex = 0;
// 找到最小值和最大值及其索引
for (i = 1; i < 10; i++) {
if (numbers[i] < min) {
min = numbers[i];
minIndex = i;
}
if (numbers[i] > max) {
max = numbers[i];
maxIndex = i;
}
}
// 将最小值与第一个数对换
swap(&numbers[0], &numbers[minIndex]);
// 将最大值与最后一个数对换
swap(&numbers[9], &numbers[maxIndex]);
printf("对换后的十个数为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
供参考:
#include <stdio.h>
void sort(int* a,int n)
{
int i, temp, max_i = 0, min_i = 0;
for (i = 0; i < n; i++)//查找最大最小值位置
{
if (a[i] > a[max_i])
max_i = i;
if (a[i] < a[min_i])
min_i = i;
}
temp = a[0]; //第一个数与最小值兑换
a[0] = a[min_i];
a[min_i] = temp;
if (max_i == 0)
max_i = min_i; //如果最大值在第一个位置,则现在已经移动到 a[min_i]位置了
temp = a[n - 1]; //最大值与最后一个值兑换
a[n - 1] = a[max_i];
a[max_i] = temp;
printf("调整后的数组为:\n");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
return;
}
int main()
{
int arr[10], * p;
printf("请输入十个数:\n");
for (int i = 0; i < 10; i++)
scanf("%d", &arr[i]);
p = arr;
sort(p, 10);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n = 0;
scanf("%d", &n);//题目是20元,我们写成自定义输入,更方便
int k = n;//可乐全部喝完我们可以得到可乐数量一样多的瓶盖
while( n >=2)//必须要有两个瓶盖才能兑换可乐,所以n>=2
{
k = k + n / 2 ;//每次退换得到瓶盖数量一半的可乐
n = n / 2+n%2;//同时瓶盖的数量减半,因为当瓶盖数为奇数时,剩余一个瓶盖无法兑换,我们用n%2取余保留下来,下次兑换时可以使用
}
printf("最后可得到可乐:%d\n", k);
system("pause");
return 0;
}
欢迎大家交流!