循环正在跳过声明

时间:2014-03-07 17:07:12

标签: c

我只是想让这个程序取1到9之间的数字并计算半径并显示它。这个程序应该循环,但我得到的只是“感谢您使用该软件!”打印功能,它根本没有经过循环,我似乎无法理解为什么。

#include <stdio.h>
int main(void){

float i,r, V;
for(i=0; i <= 4; i++){
    while ( r != 0) {
        printf("Enter a radius between 1 and 9: \n");
        scanf ("%f", &r);
        V= (3.141592)*r*r*10;
        if (r>=1 && r<=9){
            printf("The cylinder volume is %f\n", V);
        }
        else if (r > 9 || r < 0){
            printf ("The input is out of the acceptable range. Select an integer less than $/n");
        }
        printf("Thank you for using the software!\n");
    }
    return 0; 
}

4 个答案:

答案 0 :(得分:6)

在进入r循环之前,您永远初始化 while,因此这是未定义的行为。

此外,您希望将int用于等于运算符,即==!=。在您的情况下,您可能希望包含r可以在其中的“错误”。

答案 1 :(得分:1)

要确保循环至少执行一次,您可以使用

do { // your code } while ( r != 0);

答案 2 :(得分:1)

在使用之前你没有初始化r。 你必须初始化它或使用i迭代循环。

INITIALIZE r here before using
    for (i = 0; i <= 4; i++)
     {
        while (r != 0)
        {
          //code
        }
     }

答案 3 :(得分:0)

你最好使用do while loop按照自己的方式去做。

for(i=0; i <= 4; i++){
    do {
        printf("Enter a radius between 1 and 9: \n");
        scanf ("%f", &r);
        V= (3.141592)*r*r*10;
        if (r>=1 && r<=9){
            printf("The cylinder volume is %f\n", V);
        }
        else if (r > 9 || r < 0){
            printf ("The input is out of the acceptable range. Select an integer less than $/n");
        }while ( r != 0)
        printf("Thank you for using the software!\n");
    }

我没有尝试过这个我自己。这可能会起作用。如果它有用的话就行了。