指针实训,第1关:整数排序

第1关:整数排序

100

  • 任务要求
  • 参考答案
  • 评论36

任务描述

输入3个整数,按由大到小的顺序输出。(要求用指针方法处理)

本关知识
定义指针变量

定义指针变量的一般形式为: 类型名 * 指针变量名; 如: int * pointer_1, * pointer_2; 说明: (1)左边的int类型是在定义指针变量时必须指定的基类型,指针变量的基类型用于表示指针变量可以指向的变量的类型。 (2)指针变量前面的“*”表示该变量的类型为指针型变量。 (3)指针变量名是pointer_1pointer_2,而不是* pointer_1* pointer_2

怎样引用指针变量

在引用指针变量时,可以有三种情况: (1)给指针变量赋值。 如:

 
  1. int * p;
  2. int a = 3;
  3. p = &a; //把a的地址赋给指针变量p

这样,指针变量p的值就是变量a的地址,也可以说p指向a注意:&为取地址运算符,&a表示a的地址。

(2)引用指针变量指向的变量 如在上例基础上增加以下语句: printf("%d",* p); 便可以以整数形式输出指针变量p所指向的变量的值,即变量a的值3。 注意:*为指针运算符,* p代表指针变量p所指向的对象

如有以下赋值语句: * p = 1; 表示将整数1赋给指针p所指向的变量,相当于a=1;

编程要求

本关的编程任务是补全Sort2.c文件中main函数,以实现对3个整数排序的功能。 实际的测试样例参见下文。 本关涉及的代码文件Sort2.c的代码框架如下:

 
  1. //包含标准输入输出函数
  2. #include <stdio.h>
  3. //定义main函数
  4. int main()
  5. {
  6. //请在此添加‘实现三个整数排序’的代码
  7. /*****************Begin******************/
  8. /***************** End ******************/
  9. return 0;
  10. }

其中: #include <stdio.h>的意思是包含stdio函数库,使得当前程序可以调用标准输入输出函数库中的函数。 int main()是定义main函数,每个C程序都必须有且只有一个main函数。该函数是整个程序的入口,程序执行会从main函数的第一条语句开始。 int表示main函数的返回值类型。函数结束时需要返回一个整数。 return 0; 是函数返回,这里是从main函数返回,0是返回的整数值。return语句会结束一个函数的运行。

测试说明

本关的测试过程如下:

  1. 平台编译Sort2.c,然后链接相关程序库并生成Sort2.exe;
  2. 平台运行Sort2.exe,并以标准方式提供测试输入;
  3. 平台获取Sort2.exe的输出,然后将其与预测输出对比,如果一致则测试通过;否则测试失败。 以下是平台对Sort2.c的测试样例:

测试输入: 66 77 88 预期输出: 88 77 66

测试输入: 4 5 2 预期输出: 5 4 2

//包含标准输入输出函数

#include <stdio.h>

//定义main函数

int main()

{

    //请在此添加‘实现三个整数排序’的代码

    /*****************Begin******************/

    int num1, num2, num3;

    scanf("%d%d%d", &num1, &num2, &num3);

    // printf("%d,%d,%d\n", num1, num2, num3);

    int *p1, *p2, *p3, temp;

    p1 = &num1;

    p2 = &num2;

    p3 = &num3;

    if (*p1 < *p2)

    {

        temp = *p1;

        *p1 = *p2;

        *p2 = temp;

    }

    if (*p2 < *p3)

    {

        temp = *p2;

        *p2 = *p3;

        *p3 = temp;

    }

    if (*p1 < *p2)

    {

        temp = *p1;

        *p1 = *p2;

        *p2 = temp;

    }

    printf("%d %d %d\n", num1, num2, num3);

   

    /***************** End ******************/

    return 0;

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值