执行下列C代码输入"-9,Y"会是什么结果?说明原因。(提示:注意第二个if的break语句)

#include<stdio.h>#include<math.h>#defineg9.8intmain(){floathigh=0;floattime=0;intkey=... #include<stdio.h>
#include<math.h>
#define g 9.8
int main(){
float high=0;
float time=0;
int key=0;
while(1){
printf("\n\t计算物体由静止自由落体时间(g=9.8):\n");
printf("\t**输入-9退出**\n");
printf("\t请输入高度(单位m):\n ");
scanf("%f",&high);
if(high==-9) {
printf("\t退出程序?(Y/N)\n");
scanf("%d",&key);
if(key==89||key==121){
printf("\t程序退出...\n");
break;
}
}
else if(high<=0) {
printf("\t高度应大于0,请重新输入...\n");
}
else{
time=pow(2*high/g,1);
printf("\t下落时间t=%.5f s\n",time);
}
}
return 0;
}
展开
 我来答
帐号已注销
2019-12-08 · TA获得超过318个赞
知道小有建树答主
回答量:345
采纳率:90%
帮助的人:88.5万
展开全部
输入"-9,Y",程序进入死循环。
原因如下:
scanf("%d",&key);
这句要求读取一个整型数给key,输入时给了一个字符Y,所以scanf跳过不读。
scanf("%f",&high);
这句要求读取一个float型数给high,因为前面scanf跳过字符Y但也没处理,所以Y就一直留在输入流中等待读取,结果这句scanf也跳过Y。所以,内存中high的值始终是-9。
因为两个scanf语句都跳过输入流中的字符Y,所以key=0,high=-9始终不会发生变化,程序进入死循环。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式