计算C中三角形边的长度

计算C中三角形边的长度,c,function,geometry,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(

我正试图编写一个程序,借助毕达哥拉斯方程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;

}
但是,由于某种原因,当我给变量&l赋值时,程序会显示这段代码的内容:printfMarimea ipotenuzei este:%d,c;而不是扫描x和y的值,并终止。下面是一张结果图片:

您在scanf中使用%s作为字符类型变量,请改为使用此变量

scanf(" %c", &l);

首先,您需要将scanf语句更改为scanf%c,&l; 现在,变量l包含用户输入的字符。 接下来,在比较过程中,将if条件更改为ifl=='a',如果l=='b',因为a和b是字符文本

有了这些变化,程序应该可以运行了!
快乐编码

扫描%s,&l;更改为扫描%c,&l;另外,只是一个建议,请提供一些英文评论。很容易理解。你的问题与标题不匹配。另外,如果l==a,l==b是错误的。也许您想要的是,如果l='a',请不要使用图像来显示纯文本输出。一般来说,声誉较高的海报很乐意插入图像,但只有在相关的情况下。只需复制文本即可。