我正在尝试编写一个程序,借助毕达哥拉斯方程(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
答案 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是字符文字。
通过这些更改,程序应该可以正常工作! 快乐的编码!!