输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。输出10个数。(该题请用指针完成)
时间: 2023-05-31 12:18:30 浏览: 163
### 回答1:
以下是用指针完成的代码:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int nums[10];
int *p = nums;
printf("请输入10个整数:\n");
for (int i = ; i < 10; i++) {
scanf("%d", p + i);
}
int *min = p, *max = p;
for (int i = 1; i < 10; i++) {
if (*(p + i) < *min) {
min = p + i;
}
if (*(p + i) > *max) {
max = p + i;
}
}
swap(p, min);
if (max == p) {
max = min;
}
swap(max, p + 9);
printf("交换后的数组为:\n");
for (int i = ; i < 10; i++) {
printf("%d ", *(p + i));
}
return ;
}
### 回答2:
题目要求我们输入10个整数,并对其进行一些操作,需要使用指针来完成。先定义一个包含10个整数的数组,然后定义两个指针,分别指向数组的第一个和最后一个元素。
1. 输入10个整数
使用循环语句,输入10个整数并将它们存入数组中。
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
2. 求出最小值和最大值,并进行对换
使用循环语句,定义指针p_min,从第一个元素开始遍历数组,每当发现比当前最小值小的数就将指针指向该元素,最后将最小值与第一个数对换。
int min=a[0];
int* p_min=&a[0];
for(int i=1;i<10;i++)
{
if (a[i]<min)
{
min=a[i];
p_min=&a[i];
}
}
//将最小值与第一个数对换
int temp=a[0];
a[0]=*p_min;
*p_min=temp;
同样的方式求出最大值和位置,并将最大值和最后一个数对换。
int max=a[9];
int* p_max=&a[9];
for(int i=8;i>=0;i--)
{
if (a[i]>max)
{
max=a[i];
p_max=&a[i];
}
}
//将最大值与最后一个数对换
temp=a[9];
a[9]=*p_max;
*p_max=temp;
3. 输出10个数
使用循环语句,输出10个数。
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
完整代码如下:
#include <stdio.h>
int main()
{
int a[10];
printf("输入10个整数:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int min=a[0];
int* p_min=&a[0];
for(int i=1;i<10;i++)
{
if (a[i]<min)
{
min=a[i];
p_min=&a[i];
}
}
//将最小值与第一个数对换
int temp=a[0];
a[0]=*p_min;
*p_min=temp;
int max=a[9];
int* p_max=&a[9];
for(int i=8;i>=0;i--)
{
if (a[i]>max)
{
max=a[i];
p_max=&a[i];
}
}
//将最大值与最后一个数对换
temp=a[9];
a[9]=*p_max;
*p_max=temp;
printf("处理后的数组为:\n");
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
### 回答3:
这道题目是一道比较基础的数组操作题目,需要我们理解指针的基本使用方法。
首先,我们需要定义一个数组,用来存储10个整数,然后利用指针将数组元素进行交换,最终输出交换后的数组。
下面是一个具体的实现过程:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[10];
int *p;
// 输入10个整数
for(p = arr; p < arr + 10; p++) {
scanf("%d", p);
}
// 找到最小值与第一个数交换
int *min = arr;
for(p = arr + 1; p < arr + 10; p++) {
if(*p < *min) {
min = p;
}
}
swap(min, arr);
// 找到最大值与最后一个数交换
int *max = arr;
for(p = arr + 1; p < arr + 10; p++) {
if(*p > *max) {
max = p;
}
}
swap(max, arr + 9);
// 输出交换后的数组
for(p = arr; p < arr + 10; p++) {
printf("%d ", *p);
}
return 0;
}
```
首先,我们定义了一个数组`arr`,并定义了一个指针`p`,使用`scanf`函数输入10个整数。
然后,我们通过循环找到最小值和最大值,并使用`swap`函数进行交换。注意,我们通过指针的方式进行交换,可以直接修改数组元素的值。
最后,我们使用指针循环遍历数组,并使用`printf`函数输出数组元素。
需要注意的是,数组下标从0开始,因此我们在对最大值进行交换时,需要将最大值与数组中的第9个元素进行交换,而不是第10个元素。
总的来说,这道题目比较简单,需要我们熟练掌握指针的基本使用方法。
阅读全文