有人可以帮我解决我的C代码吗?

时间:2013-10-05 10:59:42

标签: c if-statement floating-point scanf

我正在努力制定欧姆的法律计划。 V = IR。

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int V,I,R; 

    printf("please enter the value of the current if the value is not known make I=0 ");
    scanf("%d", &I);
    printf("please entre the value of the resistance if the value is not known make R=0");
    scanf("%d", &R);
    printf("please enter the value of the voltage, if unknown make V=0");
    scanf("%d", &V);

    if (V == 0) 
        V = I*R;
    {
        printf(" V = %d",V);
    }
    else if (I==0)
        I = V/R;
    {
        printf("I = %d ",I);
    }
    else
        R = V/I; 
    {
        printf("R= %d",R);

    }

    return 0;
}

我是初学者,我如何改进我的代码,所以它有效? 任何帮助都非常感谢谢谢。

4 个答案:

答案 0 :(得分:1)

使用浮点变量:

#include <stdio.h>

int main(int argc, const char * argv[])
{
    float V,I,R; 

    printf("welcome to my lovely program");
    printf("please enter the value of the current if the value is not known make I=0 ");
    scanf("%f", &I);
    printf("please entre the value of the resistance if the value is not known make R=0");
    scanf("%f", &R);
    printf("please enter the value of the voltage, if unknown make V=0");
    scanf("%f", &V);
    if (V == 0)
    {
        V = I*R;
        printf(" V = %f",V);
    }
    else if (I==0)
    {
        I = V/R;
        printf("I = %f ",I);
    }
    else
    {
        R = V/I; 
        printf("R= %f",R);
    }
return 0;
}

如果您使用int而不是floatdouble,则在划分时会出现截断值。并且请学会缩进你的代码 - 你的if-else块都搞砸了。

答案 1 :(得分:1)

你需要学习缩进,并且应该在if / else if / else块中给出语句

if (V == 0) {
   V = I*R;
   printf(" V = %d",V);
} else if (I == 0) {
   I = V/R;
   printf("I = %d ",I);
} else {
   R = V/I; 
   printf("R= %d",R);
}

让你所有的声明浮动,因为你在第二和第三中计算I和R因为整数你将得到整数部分。

答案 2 :(得分:0)

首先 - 如果在“if”条件中要执行多于1行的条件,则条件遵循括号,因此您应将第一行放在括号内的if条件之后,而不仅仅是print statement.same for all你使用的条件语句就像elseif

答案 3 :(得分:0)

虽然您可以使用不带括号的if语句编写决策,但您所做的事情(在if语句之后添加决策,然后放置括号,然后添加另一个决策)是C中的错误语法。通常,我总是做出决定在括号内的if或else语句中,因为它使您和其他人更容易阅读和编辑您的代码。因此,对于它的工作,请根据上述说明进行以下操作

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int V,I,R; 

    printf("please enter the value of the current if the value is not known make I=0 ");
    scanf("%d", &I);
    printf("please entre the value of the resistance if the value is not known make R=0");
    scanf("%d", &R);
    printf("please enter the value of the voltage, if unknown make V=0");
    scanf("%d", &V);

    if (V == 0) 

    {
     V = I*R;
        printf(" V = %d",V);
    }
    else if (I==0)
        I = V/R;
    {
        printf("I = %d ",I);
    }
    else

    {
    R = V/I;
        printf("R= %d",R);

    }

    return 0;
}

然而,这仅适用于整数,所以如果我是你,我会使用浮点数或双数据类型(尽管不使用双数据类型,因为它使用的内存比浮点更多,而且你不会'真的需要一个数字到太多的小数位。还有为什么你甚至一次不使用它们就把参数放在int main函数中?