鱼C论坛

 找回密码
 立即注册
查看: 2125|回复: 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 | 显示全部楼层
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>

  3. void swap(int *pt1, int *pt2)
  4. {
  5.         int temp;
  6.         temp = *pt1;
  7.         *pt1 = *pt2;
  8.         *pt2 = temp;
  9. }

  10. void exchange(int *q1, int *q2, int *q3)
  11. {
  12.         if (*q1 < *q2)
  13.         {
  14.                 swap(q1, q2);
  15.         }
  16.         else if (*q1 < *q3)
  17.         {
  18.                 swap(q1, q3);
  19.         }
  20.         else if (*q2 < *q3)
  21.         {
  22.                 swap(q2, q3);
  23.         }
  24. }

  25. void main()
  26. {
  27.         int a, b, c, *p1, *p2, *p3;
  28.         printf("请输入三个数:\n");
  29.         scanf("%d%d%d", &a, &b, &c);
  30.         p1 = &a;
  31.         p2 = &b;
  32.         p3 = &c;
  33.         exchange(p1, p2, p3);
  34.         printf("%d,%d,%d\n", a, b, c);

  35.         system("pause");
  36. }
复制代码

运行正常,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, 2024-4-27 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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