计算C中三角形边长

时间:2014-11-18 13:42:07

标签: c function geometry

我正在尝试编写一个程序,借助毕达哥拉斯方程(c²=a²+b²)计算三角形一边的长度。用户必须可以选择他想要计算的一面,这就是我尝试过的:

#include <conio.h>
#include <stdio.h>
#include <math.h>
// Pitagora:
//          c=sqrt(pow(a,2)+pow(b,2));
//          a=sqrt(pow(c,2)-pow(b,2));
//          b=sqrt(pow(c,2)-pow(a,2));
int cateta(int x, int y){
    int cat;
    printf("Dati marimea lui:");
    scanf("%d", &x);
    printf("Dati marimea lui:");
    scanf("%d", &y);
    cat=sqrt(pow(x,2)-pow(y,2));
    return cat;
}
int main(){

    int a,b,c;
    char l;
    printf("Ce latura doriti sa aflati?");
    printf("\n c : ipotenuza\n a : cateta alaturata\n b : cateta opusa\n");
    printf("Introduceti litera laturei respective : ");
    scanf("%s", &l);
    if (l == a){
        a=cateta(c,b);
        printf("Marimea catetei alaturate este: %d", a);
    }
    else if (l == b){
        b=cateta(c,a);
        printf("Marimea catetei opuse este: %d", b);
    }
    else {
    c=sqrt(pow(a,2)+pow(b,2));
    printf("Marimea ipotenuzei este: %d", c);
    printf("\n");
    }
    getch ();
    return 0;

}

但是,出于某种原因,当我向变量a提供值&l时,程序会显示这段代码的内容:printf("Marimea ipotenuzei este: %d", c);而不是扫描x的值和y,并终止。这是一张结果为https://www.dropbox.com/s/wzk3osw1t8729et/Untitled.png?dl=0

的图片

2 个答案:

答案 0 :(得分:1)

您在%s中使用scanf()作为字符类型变量,而不是使用此

scanf(" %c", &l);

答案 1 :(得分:0)

首先,你需要将scanf语句改为scanf(&#34;%c&#34;,&amp; l); 现在变量l包含用户输入的字符。 接下来,在比较期间,将if条件更改为if(l ==&#39; a&#39;),if(l ==&#39; b&#39;)为a和b是字符文字。

通过这些更改,程序应该可以正常工作! 快乐的编码!!