循环终止没有任何错误

时间:2015-10-26 16:11:41

标签: c loops

我一直在尝试编写这个程序,它接受任意数量的整数,直到条件为真,使用do while循环,但即使满足条件,循环也会终止。我无法理解代码中的缺陷......我会感谢任何帮助

#include<stdio.h>
#include<conio.h>
int main()
{
    int max,min,test;
    char next;
    printf("enter an integer:\n");
    scanf("%d",&max);
    min=max;
    do
    {
        printf("enter next integer:\n");
        scanf("%d",&test);
        if(test>max)
            max=test;
        else if(test<min)
            min=test;
        printf("want to enter next number y/n\n");
        scanf("%c",&next);
    }while(next=='y');
    printf("Maximum=%d\nMinimum=%d\nRange=%d\n",max,min,max-min);
    getch();
}

3 个答案:

答案 0 :(得分:1)

试试这个......

#include<stdio.h>
#include<conio.h>
int main()
{
    int max,min,test;
    char next;
    printf("enter an integer:\n");
    scanf("%d",&max);
    min=max;
    do
    {
        printf("enter next integer:\n");
        scanf("%d",&test);
        getchar();        // added this
        if(test>max)
            max=test;
        else if(test<min)
            min=test;
        printf("want to enter next number y/n\n");
        scanf("%c",&next);
    }while(next=='y');
    printf("Maximum=%d\nMinimum=%d\nRange=%d\n",max,min,max-min);
    getch();
}

在您按输入后输入测试后,您的代码将输入作为新行字符。要避免这种情况,请通过 getchar()获取新行字符。

答案 1 :(得分:1)

通过scanf()读取输入时,它不会消耗返回键,因此'\ n'将保留在stdin中,等待读取下一个char输入。这就是你的程序失控的原因。因此,要避免此问题,请在getchar()之后使用scanf("%d",&test);

答案 2 :(得分:-1)

else if (condition) 中您编写了test<min,其中变量min没有任何值。你应该写

else if(test<max)
(
 min = test
)