#include <stdio.h> #include <math.h> double s = 1034.84; double r = 6371; double d(double h){ double result1 = asin((s / 2 )/ r); double degrees1 = result1 * (180 / M_PI); // 弧度转为度数 double result2 = atan(h / (s / 2)); double degrees2 = result2 * (180 / M_PI); // 弧度转为度数 //printf("结果(度数): %f\n", degrees); double pangle = degrees2 - degrees1; printf("俯仰角:%.4f \n", pangle); return pangle; } int number() { int number; printf("请输入一个数字: "); while(1){ if(scanf("%d", &number) != 1){ printf("输入错误,:\n"); fflush(stdin); continue; // 重新开始循环 } if(number < 6 && number > 28){ printf("输入的数字不在范围内,请重新输入(6-28):\n"); fflush(stdin); continue; // 重新开始循环 } switch(number) { case 6: double h = 240; double re6 = d(h); printf("反射高度:240 \n"); printf("方位图:60 \n"); break; case 7: double h = 245; double re7 = d(h); printf("反射高度:245 \n"); printf("方位图:60 \n"); break; } } return 0; } int main(){ number(); } 纠错
时间: 2024-04-12 07:28:54 浏览: 181
根据您提供的代码,我注意到在`number()`函数中,您定义了两次相同名称的变量`h`,这是不允许的。在每个`case`语句中,您需要为不同的情况分配不同的变量名称。您可以通过将变量`h`移动到`switch`语句之前,并在需要时进行分配来解决这个问题。此外,您还需要在`case 7`之前声明变量`h`。
修正后的代码如下所示:
```c
#include <stdio.h>
#include <math.h>
double s = 1034.84;
double r = 6371;
double d(double h){
double result1 = asin((s / 2 )/ r);
double degrees1 = result1 * (180 / M_PI); // 弧度转为度数
double result2 = atan(h / (s / 2));
double degrees2 = result2 * (180 / M_PI); // 弧度转为度数
//printf("结果(度数): %f\n", degrees);
double pangle = degrees2 - degrees1;
printf("俯仰角:%.4f \n", pangle);
return pangle;
}
int number() {
int number;
double h; // 在此处声明变量h
printf("请输入一个数字: ");
while(1){
if(scanf("%d", &number) != 1){
printf("输入错误,请重新输入:\n");
fflush(stdin);
continue; // 重新开始循环
}
if(number < 6 || number > 28){
printf("输入的数字不在范围内,请重新输入(6-28):\n");
fflush(stdin);
continue; // 重新开始循环
}
switch(number) {
case 6:
h = 240;
double re6 = d(h);
printf("反射高度:240 \n");
printf("方位图:60 \n");
break;
case 7:
h = 245;
double re7 = d(h);
printf("反射高度:245 \n");
printf("方位图:60 \n");
break;
}
}
return 0;
}
int main(){
number();
return 0;
}
```
这样修复后的代码应该可以正常运行。我还修复了在`number()`函数中的一些错误消息打印和循环逻辑。希望对您有所帮助!
阅读全文