第一種在scanf后面應(yīng)該加一個getchar
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、建水網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、電子商務(wù)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為建水等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
你為什么在第二個后面知道加第一個后面不知道加...
因為你在做scanf輸入時實際上輸入的是 88(成績) 回車 來結(jié)束輸入的
這個時候你把88賦值給了a但是 回車還在緩沖區(qū)里 如果你不用getchar來吸收回車那么
你第二次scanf時 由于緩沖區(qū)里面還有一個回車 所以不等你輸入他就將回車賦值給了c
因此無法進行后續(xù)循環(huán) 你輸入的Y/N反而是被getchar讀取了
第二種問題和上面類似 在每一個scanf后面加一個getchar來吸收回車
或者使用fflush(stdin); rewind(stdin);來刷新緩沖區(qū)
然后你最后判斷處出錯了
if(b=='Y')
if(b=='N')break;
這里滿足break的條件是先讓b=Y 如果 b = Y判斷成功 在判斷b=N 當b=Y滿足進一步要滿足b=N這怎么可能能夠break...
應(yīng)該if(b=='Y') continue;
else if(b=='N')break;
另外我覺得這個判斷有點繁瑣了 你只需要判斷一種就行了
只保留if(b=='N')break;就行了 當輸入N時結(jié)束 其他任意輸入繼續(xù) 就夠了
#includestdio.h
int main()
{
int nscore = 0;
scanf("%d",nscore);
if ( nscore 90 )
{
printf("成績優(yōu)!\n");
}
else if ( nscore 80 )
{
printf("成績良!\n");
}
else if ( nscore 60 )
{
printf("成績及格!\n");
}
else
{
printf("成績不及格!\n");
}
return 0;
}
#include “stdio.h”
main()
{
int? score;
scanf("%d",score);
if(score=90) printf("優(yōu)\n");
if(score=80score=89) printf("良\n");
if(score=70score=79) printf("中\(zhòng)n");
if(score=60score69) printf("及格\n");
else printf("不及格\n");
}
擴展資料:
if語句:
if語句是指編程語言(包括c語言、C++、C#、java、VB、匯編語言等)中用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。if的返回值為真或假,可以用bool型變量進行存儲,占用一字節(jié)。
if語句一般形式:
if(表達式)語句1
else? 語句2
if語句中的“表達式”可以是關(guān)系表達式、邏輯表達式,甚至是數(shù)值表達式。其中最直觀、最容易理解的是關(guān)系表達式。所謂關(guān)系表達式就是兩個數(shù)值進行比較的式子。
參考資料:百度百科-if語句
H2單元格輸入公式
=if(G2=300,"優(yōu)秀",if(G2=250,"及格","不及格"))
下拉填充