C中while循环的问题-拒绝输入,但第二次接受相同的输入

C中while循环的问题-拒绝输入,但第二次接受相同的输入,c,C,我正在努力让这个程序正常运行。它会提示用户输入非零整数,如果未输入非零整数,则while循环应一直提示用户,直到输入非零整数 然后,它获取整数并将其用作用户可以输入的双条目数量。然后程序调用一个函数,该函数取这些用户确定的双倍值的最大值、最小值和平均值 我的问题是,即使我输入一个非零整数,它也会拒绝它并再次循环提示。但是,它第二次接受非零整数。代码如下。谢谢 #include<stdio.h> void mmm (int n); int main() { int num;

我正在努力让这个程序正常运行。它会提示用户输入非零整数,如果未输入非零整数,则while循环应一直提示用户,直到输入非零整数

然后,它获取整数并将其用作用户可以输入的双条目数量。然后程序调用一个函数,该函数取这些用户确定的双倍值的最大值、最小值和平均值

我的问题是,即使我输入一个非零整数,它也会拒绝它并再次循环提示。但是,它第二次接受非零整数。代码如下。谢谢

#include<stdio.h>

void mmm (int n);

int main()
{
    int num;

    printf("Enter a positive nonzero integer: ");
    scanf("%d", &num);

    while(num < 1);
    {
        printf("Invalid number!\n");
        printf("Enter a positive nonzero integer: ");
        scanf("%d", &num);
    }

    mmm(num);

    return 0;
}

void mmm (int n)
{
    double min, max, mean, sum, entry;
    int i;

    printf("***** MIN MAX and MEAN *****\n");
    printf("Enter %d numbers separated by spaces: ", n);

    sum = 0;
    for(i = 1; i <= n ; i++)
    {
        scanf("%lf", &entry);
        sum += entry;



        if(i == 1)
        {
            max = entry;
            min = entry;
        }

        if(max < entry) 
        max = entry; 

        if(min > entry)
        min = entry;

    }

    mean = sum/n;

    printf("Minimum, maximum, and mean of the %d numbers: %.2lf, %.2lf, %.2lf\n", n, min, max, mean);

}
#包括
无效mmm(int n);
int main()
{
int-num;
printf(“输入一个正的非零整数:”);
scanf(“%d”和&num);
而(num<1);
{
printf(“无效数字!\n”);
printf(“输入一个正的非零整数:”);
scanf(“%d”和&num);
}
mmm(num);
返回0;
}
无效mmm(整数n)
{
双最小值、最大值、平均值、总和、条目;
int i;
printf(“******最小最大值和平均值******\n”);
printf(“输入%d个数字,用空格分隔:”,n);
总和=0;
对于(i=1;i条目)
最小值=输入;
}
平均值=总和/n;
printf(“%d个数字的最小值、最大值和平均值:%.2lf、%.2lf、%.2lf\n”、n、最小值、最大值、平均值);
}

好的,我通过在main中实现do-while循环解决了这个问题:

#include<stdio.h>

void mmm (int n);

int main()
{
    int num;

    do{
        printf("Enter a positive nonzero integer: ");
        scanf("%d", &num);
    }

    while (num <= 0);


    mmm(num);

    return 0;
}
#包括
无效mmm(int n);
int main()
{
int-num;
做{
printf(“输入一个正的非零整数:”);
scanf(“%d”和&num);
}

while(num)将分号从while(num<1)中删除;
ought
for(i=1;i normal
for(i=0;i