注册 登录
编程论坛 C语言论坛

为什么错了,请求大佬帮忙解决一下

暴君Dentiny 发布于 2019-08-18 13:05, 1666 次点击
程序代码:
#include<stdio.h>//题目:输入三个整数,a,b,c;要求按大小顺序输出a,b,c
static int A, S,C;
int* q1, * q2, * q3;

//A为排名第1的数,S为排名第2的数
int main()
{
    int max(int a);//最小值
    void mau(int* q1, int* q2, int* q3);
    void str(int *ss,int *sss);
    scanf_s("%d %d %d", &A, &S, &C);q1 = &A; q2 = &S; q3 = &C;
    printf("总和为%d\t", max(A));
    printf("大小顺序排列为%d\t %d\t %d\t", A, S, C);
    for (int sssss = 1; sssss < 4; sssss++)
        printf("\t\n");
    mau(q1, q2, q3);
    printf("%d\t%d\t%d\t", *q1, *q2, *q3);
    return 0;
}
int max(int a)
{
   
    a = A + S + C;
    A= A > (S > C ? S : C) ? A : (S > C ? S : C);
    C= A < (S < C ? S : C) ? A : (S < C ? S : C);
    S = a - A - C;
    return a;
   
}
void mau(int* q1, int* q2, int* q3)
{
    void str(int* ss, int* sss);
    if (*q1 < *q2) str(q1, q2);
    if (*q1 < *q3) str(q1, q3);
    if (*q2 < *q1) str(q2, q1);

}
void str(int *ss,int *sss)
{
    int qs;
    qs = *ss;
    *ss = *sss;
    *sss = qs;
}

调试结果
1315
14
15
总和为1344      大小顺序排列为1315       15      14


15      1315    14
E:\users\c\指针考题\Debug\指针考题.exe (进程 16716)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口...


[此贴子已经被作者于2019-8-18 13:10编辑过]

1 回复
#2
rjsp2019-08-19 08:44
if (*q2 < *q1) str(q2, q1);
改为
if (*q2 < *q3) str(q2, q3);
1