|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:用指针方法解决:输入三个整数,按由小到大的顺序输出。
代码如下:
#include <stdio.h>
int main()
{
int *p1, *p2, *p3, *p;
int a, b, c;
scanf("%d %d %d",&a ,&b ,&c );
p1 = &a;
p2 = &b;
p3 = &c;
if(a >= b)
{
p = p1;
p1 = p2;
p2 = p;
}
if(a >= c)
{
p = p1;
p1 = p3;
p3 = p;
}
if(b >= c)
{
p = p2;
p2 = p3;
p3 = p;
}
printf("%d %d %d\n",*p1, *p2, *p3);
return 0;
}
输入: 5 1 2
输出:2 5 1
感谢路过的大佬帮忙看看[玫瑰]
你好!看到你的代码了,问题出在你交换指针的地方。你应该交换指针所指向的值,而不是指针本身。以下是修改后的代码:
- #include <stdio.h>
- void swap(int *a, int *b) {
- int temp = *a;
- *a = *b;
- *b = temp;
- }
- int main() {
- int a, b, c;
-
- scanf("%d %d %d", &a, &b, &c);
-
- if (a > b) {
- swap(&a, &b);
- }
- if (a > c) {
- swap(&a, &c);
- }
- if (b > c) {
- swap(&b, &c);
- }
-
- printf("%d %d %d\n", a, b, c);
-
- return 0;
- }
复制代码
这个程序使用了一个名为`swap`的函数,它接受两个指针参数,并交换它们所指向的值。在主函数中,我们输入三个整数,然后通过比较和调用`swap`函数来实现从小到大排序。
希望对你有所帮助!如果还有其他问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
|
|