鱼C论坛

 找回密码
 立即注册
查看: 2568|回复: 6

,武汉加油!三个数比较大小,求大佬看看,是不是电脑坏了,程序是书本的

[复制链接]
发表于 2020-1-23 23:21:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>

void main()
{
        void exchange(int *q1, int *q2, int *q3);
        int a, b, c, *p1, *p2, *p3;
        scanf_s("%d,%d,%d", &a, &b, &c);
        p1 = &a;
        p2 = &b;
        p3 = &c;

        exchange(p1, p2, p3);
        printf("%d,%d,%d\n", a, b, c);
}

void exchange(int *q1, int *q2, int *q3)
{
        void swap(int *pt1, int *pt2);
        if (*q1 < *q2)
        {
                swap(q1, q2);
        }
        if (*q1 < *q3)
        {
                swap(q1, q3);
        }
        if (*q2 < *q3)
        {
                swap(q2, q3);
        }
}



void swap(int *pt1, int *pt2)
{
        int temp;

        temp = *pt1;
        *pt1 = *pt2;
        *pt2 = temp;
}





输入的8,7,6
显示结果8,-858993460,-858993460
我以为vc坏了,下载stdioa也是这样的结果,我的台式机没问题啊,程序比较出来是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-24 08:31:57 | 显示全部楼层
你输入的时候 逗号是中文的逗号吧,代码里面用的是英文的逗号,格式的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-24 08:33:08 | 显示全部楼层
你输入8,7,6试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-24 21:39:53 | 显示全部楼层
scanf("%d,%d,%d", &a, &b, &c);你改成 scanf("%d %d %d", &a, &b, &c);测试下就没问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-27 15:29:12 | 显示全部楼层
本帖最后由 love_qj 于 2020-1-27 15:30 编辑

个人觉得最后的交换应该用空指针来,temp是整型变量,而pt1交换的是地址,有可能超过了整型长度,导致乱码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-28 00:40:07 | 显示全部楼层
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void swap(int *pt1, int *pt2)
{
        int temp;
        temp = *pt1;
        *pt1 = *pt2;
        *pt2 = temp;
}

void exchange(int *q1, int *q2, int *q3)
{
        if (*q1 < *q2)
        {
                swap(q1, q2);
        }
        else if (*q1 < *q3)
        {
                swap(q1, q3);
        }
        else if (*q2 < *q3)
        {
                swap(q2, q3);
        }
}

void main()
{
        int a, b, c, *p1, *p2, *p3;
        printf("请输入三个数:\n");
        scanf("%d%d%d", &a, &b, &c);
        p1 = &a;
        p2 = &b;
        p3 = &c;
        exchange(p1, p2, p3);
        printf("%d,%d,%d\n", a, b, c);

        system("pause");
}
运行正常,4楼解答是正解。scanf的格式建议百度一下,%d中间不要加逗号、空格这些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-28 06:13:13 From FishC Mobile | 显示全部楼层
exchange函数中包含了swap函数声明,却没有定义,编译能通过吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 07:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表