亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

輸出的時候,為什么直接就跳過Do you like sport Y/N的輸入環節?

輸出的時候,為什么直接就跳過Do you like sport Y/N的輸入環節?

C
喵喵時光機 2023-01-12 19:15:11
#include "stdafx.h"#include<stdio.h>void main(){float faHeight,moHeight,myHeight; char sex,sport,diet;printf("You are F or M:\n");scanf("%c",&sex); printf("DO you like sport Y/N:\n");scanf("%c",&sport);printf("DO you diet Y/N:\n");scanf("%c",&diet);printf("please check in your father height:\n");scanf("%f",&faHeight);printf("please check in your mother height:\n");scanf("%f",&moHeight);if(sex=='M')myHeight=(faHeight+moHeight)*0.54;elsemyHeight=(faHeight*0.923 + moHeight)/2;if(sport=='Y')myHeight=myHeight*(1+0.02);if(diet=='Y')myHeight=myHeight*(1+0.015);printf("myHeight is %f \n",myHeight);}
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

犯堆棧溢出等的安全檢查。

傳統C函數,scanf()按現代觀點,就屬于不安全函數。。
所以MS 定義了scanf_s()函數,建議用它代替scanf

這只是個警告信息,你初學C語言,建議忽略它。

查看完整回答
反對 回復 2023-01-15
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

從鍵盤輸入的每個字符都會送到輸入緩沖流中,scanf函數從輸入緩沖流中依次讀數據,第一次輸入的回車符也在輸入緩沖流中,而scanf函數遇到空格或換行符就結束,所以第二次scanf時還是從輸入緩沖流中的回車符開始讀,讀到即結束,然后執行下一個語句。

解決方法:
在每個scanf語句后加一句getchar();
因為getchar()函數不會忽略回車符和空格符,也就是說getchar()函數會將回車符或空格符讀出,然后讀下一個字符。這樣下一次scanf()時就是從回車符的下一個字符開始讀了。

查看完整回答
反對 回復 2023-01-15
  • 2 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號