c语言利用数组指针方法 输入五个数字求出最小值 将最小值和数组第一个数字互换位置 输出数组

c语言利用数组指针方法 输入五个数字求出最小值 将最小值和数组第一个数字互换位置 输出数组比如五个数:5 6 1 8 3
则最小值为:1
最后输出结果为:1 6 5 8 3

#include <stdio.h>
#define N 5
int main()
{
int arr[N];
int i,min,j,tmp;
printf("输入5个数字: ");
for(i=0;i<N;i++)
scanf("%d",&arr[i]);
for(i=0,min=arr[0];i<N;i++){
if(min>arr[i]){
min=arr[i];
j=i;
}
}
arr[j]=arr[0];
arr[0]=min;
printf("输出结果为: ");
for(i=0;i<N;i++)
printf("%d ",arr[i]);
printf("\n");
return 0;
}

追问

数组运用到了 可是指针呢😭 必须要用到指针呢

追答

噢噢,好的,我修改下代码吧。修改后的代码如下:

#include <stdio.h>
#define N 5
int main()
{
    int arr[N];
int *p,*q;  //指针p用来遍历数组元素,指针q用来指向当前的最小值元素
    printf("输入5个数字: ");
    for(p=arr;p<arr+N;p++)
        scanf("%d",p);
    for(p=q=arr;p<arr+N;p++){
        if(*q > *p)
q=p;
    }
    arr[0]= *q;
    *q=arr[0];
    printf("输出结果为: ");
    for(p=arr;p<arr+N;p++)
        printf("%d ",*p);
    printf("\n");
    return 0;
}

追问

出错了🙄

一点小问题 我自己改了下 加了个变量t 把它们替换下就行了

还是谢谢你了

😊😊😊😊😊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-23
#include<stdio.h>
void main()
{
    double a[] = {3, 4.2, 4, 5.3, 1, 0.4, 5};
    double *max=(double *)malloc(sizeof(double));  // 最大值指针
    double *min=(double *)malloc(sizeof(double));  // 最小值指针
    int i;
    *max = a[0]; // 初始化最大值
    *min = a[0]; // 初始化最小值
    for(i=1; i<7; i++) // 7表示数组a的长度
    {
        if(*max<a[i])
            *max = a[i];  // 保存最大值
        if(*min>a[i])
            *min = a[i];  // 保存最小值  
    }
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网