组织数字直到输入0 0 0

时间:2017-05-20 17:25:11

标签: c

你好我制作了一个程序来组织用户提交的3个号码。该程序有效,但出于某种原因,当我把0 0 0它没有完成时。

while (k == 1)
    {
        k=inputthree(&num1, &num2, &num3);
        if (k == 1)
        {
            sortthree(&num1, &num2, &num3);
            printf("%d %d %d\n", num1, num2, num3);
        }else printf("Finish!");

inputthree似乎总是返回1我不知道为什么。完整代码: -

#include <stdio.h>
#define N 3
int inputthree(int* num1, int* num2, int* num3);
void sorttwo(int* num1, int* num2);
void sortthree(int* num1, int* num2, int* num3);
int main()
{
    int num1, num2, num3,k=1;
    while (k == 1)
    {
        k=inputthree(&num1, &num2, &num3);
        if (k == 1)
        {
            sortthree(&num1, &num2, &num3);
            printf("%d %d %d\n", num1, num2, num3);
        }else printf("Finish!");
    }
}
int inputthree(int* num1, int* num2, int* num3)
{
    printf("Enter 3 numbers:- ");
    scanf("%d %d %d", num1, num2, num3);
    if (num1 == 0 && num2 == 0 && num3 == 0)
        return 0;
    else return 1;

}
void sorttwo(int* num1, int* num2)
{
    int temp;
    if (*num1 > *num2)
    {
        temp = *num1;
        *num1 = *num2;
        *num2 = temp;
    }

}
void sortthree(int* num1, int* num2, int* num3)
{
    sorttwo(num1, num2);
    sorttwo(num1, num3);
    sorttwo(num2, num3);


}

感谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

您正在检查NULL范围内的所有参数是否为inputthree。试试,

if(*num1 == 0 && *num2 == 0 && *num3 == 0)

答案 1 :(得分:0)

您正在比较指针,而不是nums。使用:

if(*num1 == 0 && *num2 == 0 && *num3 == 0)