第1关:整数排序
100
- 任务要求
- 参考答案
- 评论36
任务描述
输入3
个整数,按由大到小的顺序输出。(要求用指针方法处理)
本关知识
定义指针变量
定义指针变量的一般形式为: 类型名 * 指针变量名;
如: int * pointer_1, * pointer_2;
说明: (1)左边的int
类型是在定义指针变量时必须指定的基类型,指针变量的基类型用于表示指针变量可以指向的变量的类型。 (2)指针变量前面的“*”
表示该变量的类型为指针型变量。 (3)指针变量名是pointer_1
和pointer_2
,而不是* pointer_1
和* pointer_2
。
怎样引用指针变量
在引用指针变量时,可以有三种情况: (1)给指针变量赋值。 如:
int * p;
int a = 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
的代码框架如下:
//包含标准输入输出函数
#include <stdio.h>
//定义main函数
int main()
{
//请在此添加‘实现三个整数排序’的代码
/*****************Begin******************/
/***************** End ******************/
return 0;
}
其中: #include <stdio.h>
的意思是包含stdio
函数库,使得当前程序可以调用标准输入输出函数库中的函数。 int main()
是定义main
函数,每个C
程序都必须有且只有一个main函数。该函数是整个程序的入口,程序执行会从main
函数的第一条语句开始。 int
表示main
函数的返回值类型。函数结束时需要返回一个整数。 return 0;
是函数返回,这里是从main
函数返回,0
是返回的整数值。return
语句会结束一个函数的运行。
测试说明
本关的测试过程如下:
- 平台编译
Sort2.c
,然后链接相关程序库并生成Sort2.exe
; - 平台运行
Sort2.exe
,并以标准方式提供测试输入; - 平台获取
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;
}