C跳过"while"循环?

Dav*_*use 3 c while-loop

我有一个问题,我试着写一个程序来显示从1到22的整个总和,然后,做2个while循环.第一个应该执行用户给出的某些数字的总和,例如:输入10,30和40然后当输入0时,程序将前三个数字相加.不幸的是,第一个while循环不起作用.它直接进入最后一个while循环,它应该键入一个十进制数字,如(10.20 30.50 40.55),再次输入0后,它将这些数字相加,并将每个条目加上和乘以1.19.到目前为止,最后一个循环工作正常,不幸的是第二个循环没有,如果我移动printf和scanf,它让我写,但只是开始写,没有停止我写的数字.先感谢您!

这是代码:

#include <stdio.h>

int main() 
{
    int sum = 0;                         
    int a;
    int b;
    double i;
    double sum1 = 0;
    for (a= 0; a <= 22; a++) {

        sum = sum + a; 
        printf("the sum from 1 till 22 : %i\n ", sum);
    }

    while (b != 0) {
        printf("type a number:");
        scanf("%i", &b);
        sum += b;
        printf("%i\n", b);

    }
    printf("the sum is : %i\n", sum);

    while(i !=0) {
        printf ("Type a decimal number:");
        scanf ("%lf",&i);                       
        sum1 += i*1.19;


        printf("%lf\n", i);

    }

    printf("The decimal summ is: %lf\n",sum1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 5

i在进入循环之前,不要初始化为任何值

while(i != 0)
Run Code Online (Sandbox Code Playgroud)

i此时可能很好,因此你的循环甚至不会输入一次.初始化i为非零值应解决此特定问题.变量也是如此b.

您应该在编译器中打开警告,这样就可以向您显示这样的问题.