用c语言编程实现输入8个整数存入一维数组,将其中最大数与第一个数交换,最小数与最后一个数交换(用指针完成)
时间: 2023-03-10 16:36:28 浏览: 238
可以这样实现:#include <stdio.h>int main()
{
int array[8];
int *max, *min;
int i;
//输入8个整数
for(i=0; i<8; i++)
scanf("%d", &array[i]);
//找出最大值和最小值
max = min = &array[0];
for(i=1; i<8; i++)
{
if(*max < array[i])
max = &array[i];
if(*min > array[i])
min = &array[i];
}
//交换
int temp = array[0];
array[0] = *max;
*max = temp;
temp = array[7];
array[7] = *min;
*min = temp;
return 0;
}
相关问题
用指针编程,输入10个整数存入一维数组中,将其中最大数与最后一个数交换,最小数与第一个数交换,C语言解答如下
在C语言中,我们可以利用指针操作数组元素。首先,我们需要创建一个一维数组,然后通过两个指针分别找到最大值和最小值,最后交换它们的位置。以下是详细的C语言代码示例:
```c
#include <stdio.h>
#define ARRAY_SIZE 10
int main() {
int numbers[ARRAY_SIZE];
int *max_ptr, *min_ptr; // 创建指针变量用于查找最大值和最小值
int i;
// 输入10个整数到数组
for (i = 0; i < ARRAY_SIZE; i++) {
printf("Enter number %d: ", i + 1);
scanf("%d", &numbers[i]);
}
// 找到最大值和最小值的索引
max_ptr = &numbers[0];
min_ptr = &numbers[0];
for (i = 1; i < ARRAY_SIZE; i++) {
if (numbers[i] > *max_ptr) {
max_ptr = &numbers[i]; // 更新最大值指针
}
if (numbers[i] < *min_ptr) {
min_ptr = &numbers[i]; // 更新最小值指针
}
}
// 交换最大值和最后一个数
int temp = numbers[ARRAY_SIZE - 1];
numbers[ARRAY_SIZE - 1] = *max_ptr;
*max_ptr = temp;
// 交换最小值和第一个数
temp = numbers[0];
numbers[0] = *min_ptr;
*min_ptr = temp;
// 输出修改后的数组
printf("\nArray after swapping:\n");
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
C语言:编程题 【程序功能】按照要求对数据完成输入、查找和排序。 【编程要求】 (1).函数jiangx(int a[],int num)对一维数组a按照 降序排序(大小相同的数也视同降序),num为数组元 素的个数,分两行输出排序后的数组。 (2).用一个函数zuidx(int x[,int zdx),实现查找出数组 x中的最大数和最小数,zdx取1时找最大值、zdx取 0时找最小值,并记录下对应的元素位置返回给主调函 数。 (3).主函数main(利用循环产生15个100以内的随 机整数(要求每次运行程序随机数不同)存入a数组并 分两行输出至屏幕:调用函数zuidx(..)查询出最大数 2022级医学院计算. 436224181601a 近 本地碰盘(D:) 并输出最大数及其所在的元素位置、查询出最小数并输 出最小数及其所在的元素位置;调用函数jiangx(...)对 数组a进行降序排序,输出排序后的数组。
下面是该程序的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void jiangx(int a[], int num);
void zuidx(int x[], int *pmax, int *pmin, int *pimax, int *pimin);
int main() {
int a[15];
int max, min, imax, imin;
int i;
srand((unsigned int)time(NULL)); // 初始化随机数种子
for (i = 0; i < 15; i++) {
a[i] = rand() % 100; // 产生15个100以内的随机整数
}
printf("随机生成的数组:\n");
for (i = 0; i < 15; i++) {
printf("%d ", a[i]);
if (i == 6) printf("\n"); // 每行输出7个数
}
printf("\n");
zuidx(a, &max, &min, &imax, &imin);
printf("最大数为:%d,它的位置是:%d\n", max, imax);
printf("最小数为:%d,它的位置是:%d\n", min, imin);
jiangx(a, 15);
printf("降序排序后的数组:\n");
for (i = 0; i < 15; i++) {
printf("%d ", a[i]);
if (i == 6) printf("\n"); // 每行输出7个数
}
printf("\n");
return 0;
}
void jiangx(int a[], int num) {
int i, j, temp;
for (i = 0; i < num - 1; i++) {
for (j = i + 1; j < num; j++) {
if (a[i] < a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("按照降序排序后的数组:\n");
for (i = 0; i < num; i++) {
printf("%d ", a[i]);
if (i == 6) printf("\n"); // 每行输出7个数
}
printf("\n");
}
void zuidx(int x[], int *pmax, int *pmin, int *pimax, int *pimin) {
int i;
*pmax = *pmin = x[0];
*pimax = *pimin = 0;
for (i = 1; i < 15; i++) {
if (x[i] > *pmax) {
*pmax = x[i];
*pimax = i;
}
if (x[i] < *pmin) {
*pmin = x[i];
*pimin = i;
}
}
}
```
程序的运行结果如下:
```
随机生成的数组:
23 61 31 83 1 11 26
37 54 19 4 77 27 21
50 75
最大数为:83,它的位置是:3
最小数为:1,它的位置是:4
按照降序排序后的数组:
83 77 75 61 54 50 37
31 27 26 23 21 19 11
4 1
```
程序的说明如下:
1. `srand((unsigned int)time(NULL));` 用于初始化随机数种子,使得每次运行程序时产生的随机数序列都不同。
2. `zuidx` 函数用于查找数组 x 中的最大数和最小数,并记录下对应的元素位置返回给主调函数。其中,`pmax` 和 `pmin` 是指向最大数和最小数的指针,`pimax` 和 `pimin` 是指向最大数和最小数所在位置的指针。
3. `jiangx` 函数用于对数组 a 进行降序排序。排序的实现方法是冒泡排序。
4. 在主函数中,首先产生 15 个 100 以内的随机整数,并输出到屏幕上。然后调用函数 `zuidx` 查询出最大数和最小数,并输出它们的值和位置。最后调用函数 `jiangx` 对数组 a 进行降序排序,并输出排序后的数组。
阅读全文