指针实现从键盘输入3个整数,按从小到大的顺序输出

本关任务: 从键盘输入任意3个整数给a,b,c变量,用算法实现按从小到大的顺序存在变量a,b,c中,然后输出(指针实现)。

相关知识

为了完成本关任务,你需要掌握: 1.指针变量的定义、初始化和引用; 2.指针变量做函数参数; 3.交换的算法; 4.实参和形参之间的参数传递方式。

指针变量的定义和初始化

指针变量的一般定义形式如下: 类型说明符 *指针变量名; 其中,“类型说明符”表示本指针变量所指向的变量的数据类型,“指针变量名”即为定义的指针变量名标识符。 例如有定义“int *p1;”,表示p1是一个指针变量,它的值是某个整型变量的地址。 又如: short *k, *w; // 定义指针变量k,w k = &a; w = &b; // 取变量a,b地址分别赋给k,w

指针变量的引用

引用指针变量的一般形式为: *指针变量名 如果有:p1=&a; p2=&b;以下两种方式输出结果一样: printf("%d, %d\n",a,b); printf("%d, %d\n",*p1,*p2);

指针变量做函数参数

见教材

实参和形参之间的参数传递方式

见教材

编程要求

1.编写函数swap(int *p1,int *p2),实现两个变量值的交换; 2.编写主函数,根据已有的代码提示,在编辑器补充代码,实现本关的功能。

测试说明

输入: 15,14,13 输出: 13,14,15

#include <stdio.h>
swap(int *p1,int *p2)
{
	int p;
	p=*p1;
	*p1=*p2;
	*p2=p;
}
main( )
{
	int n1,n2,n3;
	int *p1=&n1,*p2=&n2,*p3=&n3;
	scanf("%d%d%d",&n1,&n2,&n3);
	if(n1>n2) swap(p1,p2);
	if(n1>n3) swap(p1,p3);
	if(n2>n3) swap(p2,p3);
	printf("%d,%d,%d\n",n1,n2,n3);
}

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用指针实现输入的3个整数排序,具体步骤如下: 1. 定义3个整型变量a、b、c,并从键盘输入它们的值。 2. 定义3个指向整型变量指针pa、pb、pc,分别指向a、b、c。 3. 利用指针比较大小,将它们按从小到大顺序排列。 4. 输出排列后的结果。 具体代码如下: ``` #include <stdio.h> int main() { int a, b, c; printf("请输入3个整数:\n"); scanf("%d%d%d", &a, &b, &c); int *pa = &a, *pb = &b, *pc = &c; int temp; if (*pa > *pb) { temp = *pa; *pa = *pb; *pb = temp; } if (*pa > *pc) { temp = *pa; *pa = *pc; *pc = temp; } if (*pb > *pc) { temp = *pb; *pb = *pc; *pc = temp; } printf("排序后的结果为:%d %d %d\n", *pa, *pb, *pc); return ; } ``` ### 回答2: 对于用指针实现输入的3个整数排序,按从小到大顺序输出,我们可以使用指针变量实现。具体步骤如下: 1. 首先定义三个整型变量 a、b、c,用于存储用户输入的三个整数。 2. 然后定义三个指针变量 p1、p2、p3,分别指向 a、b、c。 3. 接下来使用 if 语句对三个整型变量进行比较,使得 p1 指向其中最小的数,p3 指向其中最大的数。 4. 然后在比较剩下两个数的大小,使 p2 指向中间的数。 5. 最后输出 p1、p2、p3 指向的三个数,即为将输入的三个整数从小到大排序后的结果。 具体代码如下: ```c++ #include <iostream> using namespace std; int main() { int a, b, c; cout << "请输入三个整数:" << endl; cin >> a >> b >> c; int *p1 = &a, *p2 = &b, *p3 = &c; if (*p1 > *p2) { int *temp = p1; p1 = p2; p2 = temp; } if (*p2 > *p3) { int *temp = p2; p2 = p3; p3 = temp; } if (*p1 > *p2) { int *temp = p1; p1 = p2; p2 = temp; } cout << *p1 << " " << *p2 << " " << *p3 << endl; return 0; } ``` 当用户输入三个整数为 3、2、5 时,输出为: ``` 2 3 5 ``` 这说明我们的指针排序方法是实现正确的,可以得到正确结果。 ### 回答3: 指针法是C语言中非常重要的一种重要的编程思想和技能。学会使用指针法,可以更加灵活高效地进行编程。对于输入的3个整数排序,按从小到大顺序输出,可以通过指针法来实现。 首先,我们可以定义3个int类型的变量a、b、c,来分别存储输入的3个整数。然后,我们需要定义3个指向int类型数据的指针pa、pb、pc,分别指向a、b、c这三个变量。 接下来,我们需要使用if语句对a、b、c进行比较,并用指针比较它们的值的大小。这样,我们就可以判断数值的大小,然后通过交换指针的指向实现三个数的排序。 最后,我们可以按照从小到大顺序输出这三个数。具体实现方法如下: #include <stdio.h> void main() { int a, b, c; int *pa, *pb, *pc; scanf("%d %d %d", &a, &b, &c); pa = &a; pb = &b; pc = &c; if (*pa > *pb) { int temp; temp = *pa; *pa = *pb; *pb = temp; } if (*pa > *pc) { int temp; temp = *pa; *pa = *pc; *pc = temp; } if (*pb > *pc) { int temp; temp = *pb; *pb = *pc; *pc = temp; } printf("%d %d %d\n",*pa, *pb, *pc); } 以上就是使用指针实现输入的3个整数排序,按从小到大顺序输出的具体方法,希望能够为大家提供帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值