Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每当函数';主要';在C中调用_C_Loops_Variables_While Loop_Initialization - Fatal编程技术网

每当函数';主要';在C中调用

每当函数';主要';在C中调用,c,loops,variables,while-loop,initialization,C,Loops,Variables,While Loop,Initialization,所以,我做了这个基本的循环来获取用户输入,用它做一些计算,然后在循环中断后显示计算的总体平均值。问题在于我收到的警告。也许我在这里遗漏了一些东西,但我是新来的,所以我不知道问题是什么。第一个警告说,“无论何时调用函数‘main’,变量‘miles’都未初始化。”第二个警告说,“变量‘gallons’在这里使用时可能未初始化。”程序似乎工作正常,但我不知道如何修复这些警告。感谢您的帮助 #include <stdio.h> //library header int main() {

所以,我做了这个基本的循环来获取用户输入,用它做一些计算,然后在循环中断后显示计算的总体平均值。问题在于我收到的警告。也许我在这里遗漏了一些东西,但我是新来的,所以我不知道问题是什么。第一个警告说,“无论何时调用函数‘main’,变量‘miles’都未初始化。”第二个警告说,“变量‘gallons’在这里使用时可能未初始化。”程序似乎工作正常,但我不知道如何修复这些警告。感谢您的帮助

#include <stdio.h> //library header 
int main() { //declare main function    
    double gallons,miles;
    double sum=0;
    int count=0;

    while (miles>=0||gallons>=0) {
        sum+=(miles/gallons);
        count++;

        printf("\nEnter the gallons used (-1 to end): ");
        scanf("%lf",&gallons);

        if (gallons<0)
        break;

        printf("Enter the miles driven: ");
        scanf("%lf",&miles);

        if (miles<0)
        break;

        printf("The miles/gallon for this tank was: %lf", miles/gallons);
    }

    if (count>0) {
        printf("The average is: %lf", sum/(count-1));
    }

    return 0;
}
#包含//库头
int main(){//declare main函数
双加仑,英里;
双和=0;
整数计数=0;
而(英里>=0 |加仑>=0){
总和+=(英里/加仑);
计数++;
printf(“\n输入所用加仑数(-1到末尾):”;
scanf(“%lf”和加仑);

如果(加仑好的话,信息是清楚的,很容易在你的程序中发现:

double gallons,miles;

while (miles>=0||gallons>=0) {
miles
是在一个函数中声明的,因此是一个。自动变量没有初始化(所以它们已经初始化)。现在在第一个可执行语句中比较miles。但是miles仍然没有初始化。可以将以下行复制到while之前?加仑也是如此

    printf("Enter the miles driven: ");
    scanf("%lf",&miles);
注意:如果确实读取了值,请检查scanf的返回值


顺便说一句,你可以养成初始化局部变量的习惯,例如使用
双加仑=0.0,英里=0.0;
而不是仅仅声明
双加仑,英里;

反复阅读警告。它会出现在你面前。警告似乎足够描述性。你还没有初始化变量
加仑
在使用它们的值之前,请使用“代码< >双加仑,英里;< />代码>类似于<代码>双加仑=0,英里=0;。代码也需要再进行一些重构,比如移动<代码>求和+=(英里/加仑);< /COD>语句到刚才的代码> PrTrF(“平均值为……
,以获得所需的输出。