PTA6-2 用指针访问数组 分数 18 作者 王峰单位 华北水利水电大学 答案

题目:

用指针实现,输入6个整数,把最小数与第1个数交换,最大数与最后1个数交换,其它数据不动。输入保证最大值和最小值唯一。请编写3个函数:(1)输入6个数;(2)进行处理函数;(2)输出6个数,每个数占3个宽度,左对齐。

函数接口定义:

 

void inputdata(int *p); void swapdata(int *p); void printdata(int *p);

p是传入的数组首地址。

裁判测试程序样例:

 

#include <stdio.h> void inputdata(int *p); void swapdata(int *p); void printdata(int *p); int main(){ int a[6]; inputdata(a); swapdata(a); printdata(a); return 0; }

输入样例1:

2 1 6 5 4 3

输出样例1:

1  2  3  5  4  6  

答案:

void inputdata(int* p)//输入
{
    int i = 0;
    for (i = 0; i < 6; i++, p++)
    {
        scanf("%d", &*p);
    }
}
void swapdata(int* p)//执行
{
    int* max = (p + 5);
    int* min = p;
    int* pp = p;
    int* pm = (p + 5);
    int i = 0;
    int b = 0, c = 0;
    for (i = 0; i < 6; i++, p++)
    {
        if (*min > *p)min = p;//找出最小数的地址;
    }
    b = *pp;//
    *pp=*min;//
    *min = b;//加最小数的值与第一个数互换
    p--;//防止出现野指针
    for (i=5;i>=0;i--,p--)
    {
        if (*max < *p)max= p;
    }
    c= *pm;
    *pm = *max;
    *max = c;//与最小数类似

}
void printdata(int* p)//输出
{
    int i = 0;

    for (i = 0; i < 6; i++, p++)
    {
        printf("%-3d", *p);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

綤!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值