我正在编写一个程序,要求飞行员输入坐标。然后,稍后在其他函数中使用这些坐标,例如计算平面的距离和角度
这是我的主要功能:
int main()
{
plane_checker();
double angle_finder(int x, int y);
double distance_plane(int x, int y, int z);
void ils_conditions();
}
我的plane_checker()
函数是:
plane_checker()
{
printf("Please enter your identification code:");
scanf("%s", &plane_name[0]);
if( (plane_name[0]== 'j') || (plane_name[0]== 'f') || (plane_name[0]== 'm') || (plane_name[0]== 'J') || (plane_name[0]== 'F') || (plane_name[0]== 'M'))
{
printf("Sorry, we are not authorized to support military air vehicles.");;
}
else
{
printf("Please enter your current coordinates in x y z form:");
scanf("%d %d %d", &x, &y, &z);
if(z < 0)
{
printf("Sorry. Invalid coordinates.");
}
}
return;
}
用户输入坐标后,我希望程序返回主函数并继续执行其他功能。但是,当我运行程序时,我的函数返回输入的z值并结束程序。如下所示:
Please enter your identification code:lmkng
Please enter your current coordinates in x y z form:1 2 2
Process returned 2 (0x2) execution time : 12.063 s
Press any key to continue.
这可能是什么原因?我一字一句地检查了我的程序,但找不到这背后的原因?我错过了什么?
提前多多谢谢你!
答案 0 :(得分:2)
启用警告(-Wall
),它会告诉您plane_checker
,因为您没有在声明中指定它具有隐式int
返回值。
test.c:1:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
plane_checker()
^
您还会收到许多关于未声明变量的警告和错误:x,y,z和plane_name。解决所有问题。如果它们是全局的,那么它们就不应该是。
“我希望程序返回主函数并继续使用其他函数。”
这些不是函数调用,它们是函数的前向声明。函数调用类似于angle_finder(x, y)
。
我很遗憾地说您的代码存在错误。我建议你退后一步,阅读更多有关C语言编程的资料。
答案 1 :(得分:1)
如果你不希望你的函数返回任何东西,就像这样定义它
void plane_checker()
{
printf("Please enter your identification code:");
scanf("%s", &plane_name[0]);
if( (plane_name[0]== 'j') || (plane_name[0]== 'f') || (plane_name[0]== 'm') || (plane_name[0]== 'J') || (plane_name[0]== 'F') || (plane_name[0]== 'M'))
{
printf("Sorry, we are not authorized to support military air vehicles.");;
}
else
{
printf("Please enter your current coordinates in x y z form:");
scanf("%d %d %d", &x, &y, &z);
if(z < 0)
{
printf("Sorry. Invalid coordinates.");
}
}
}
但是你无法在plane_checker函数之外操作插入的数据。您应该从plane_checker()
返回插入的数据或使用指针。 https://www.tutorialspoint.com/cprogramming/c_pointers.htm