給你一個改動最少的方案:
#include<stdio.h>
main()
{
char letter;
printf("please input the first letter of someday\n");
while((letter=getchar())!='y')
{
fflush(stdin);//這兒加一個強制鍵盤緩沖區(qū)清空處理,用以清空while判斷里輸入時最后所帶的回車
switch (letter)
{
case 's':printf("please input second letter:\n");
if ((letter=getchar())=='a')printf("saturday\n");
else if (letter=='u')printf("sunday\n"); //這兒直接判斷l(xiāng)etter,而不需要再判斷l(xiāng)etter=getchar()
else printf("Data error\n");break;
case 'f':printf("friday\n");break;
case 'm':printf("monday\n");break;
case 't':printf("please input second letter:\n");
if ((letter=getchar())=='u')printf("tuesday\n");
else if (letter=='h')printf("thursday\n"); //這兒直接判斷l(xiāng)etter,而不需要再判斷l(xiāng)etter=getchar()
else printf("Data error\n");break;
case 'w':printf("wednesday\n");break;
default:printf("error\n");
}
fflush(stdin);//這兒加一個強制鍵盤緩沖區(qū)清空處理,用以清空case語句里輸入時最后所帶的回車
}
}
上面各位說的關(guān)于強制鍵盤緩沖區(qū)清空處理的都是對的,主要就是要注意輸入數(shù)值時,回車的影響.
但是上面各位的改造都過于復(fù)雜,主要是對于if/else語句的執(zhí)行范圍認(rèn)識有誤,
對于
if ((letter=getchar())=='a')printf("saturday\n");
這個語句,即使當(dāng)前輸入的第2個字符不是'a',這里if判斷里的letter=getchar()也會執(zhí)行的,只是=='a'判斷為假,所以if分支不執(zhí)行.
所以其實用戶輸入的第2個字符已經(jīng)被接收了,所以當(dāng)前l(fā)etter中已經(jīng)存放了用戶輸入的第2個字符.
因此,后面的else if需要直接判斷l(xiāng)etter,而不需要再判斷l(xiāng)etter=getchar(),這樣就多接收了一個字符了
請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù) 判斷第二個字母.
請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù) 判斷第二個字母.
#include
main()
{char i,j;
printf("please enter the first letter ");
scanf("%c",&i);
switch(i)
{case 'm':printf("monday\n"); break;
case 'w':printf("wednesday\n"); break;
case 'f':printf("friday\n"); break;
case 't':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='u') printf("tuesday\n");
\x09\x09 if (j=='h') printf("thursday\n");break;
\x09\x09
case 's':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='a') printf("saturday\n");
\x09\x09 if (j=='u') printf("sunday\n"); break;
default :printf("error\n"); break;
}
}
在要判斷第二個letter時,出現(xiàn)了錯誤,無法判斷了.
#include
main()
{char i,j;
printf("please enter the first letter ");
scanf("%c",&i);
switch(i)
{case 'm':printf("monday\n"); break;
case 'w':printf("wednesday\n"); break;
case 'f':printf("friday\n"); break;
case 't':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='u') printf("tuesday\n");
\x09\x09 if (j=='h') printf("thursday\n");break;
\x09\x09
case 's':printf("please enter the next letter\n");
\x09 scanf("%c",&j);
\x09\x09 if (j=='a') printf("saturday\n");
\x09\x09 if (j=='u') printf("sunday\n"); break;
default :printf("error\n"); break;
}
}
在要判斷第二個letter時,出現(xiàn)了錯誤,無法判斷了.
其他人氣:965 ℃時間:2020-05-30 16:04:59
優(yōu)質(zhì)解答
我來回答
類似推薦
- 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第二個字母.
- java 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù) 判斷第二個字母
- 一輛停在山崖前某處的汽車鳴笛后經(jīng)過1.2s聽到回聲在空氣中的傳播速度340m/s則距山崖的距離約為多少?
- 折射的虛像怎么形成的?
- 仿照課文中兩兩對稱的語句,將下列句子補充完整,使之兩兩對稱
- 2.x²-Kx-4 有一個因式為 (x+1) 則另一個因式---- 及 K=------
- 設(shè)集合A={-2},B={x|ax+1=0,a∈B},若A∩B=B,求a的值
- you should go to the park to have a rest同義句
- 英語翻譯
- 如何選擇重結(jié)晶溶劑
- 雪松彎曲和反彈的品質(zhì)你想起了什么人什么事
- 如圖,在正方形ABCD中,E為CD邊上一點,F(xiàn)為BC延長線上一點,CE=CF. 求證:BE=DF.
猜你喜歡
- 1求一組蘊含人生哲理的排比句.句中兼用比喻或擬人手法,語言生動形象.
- 2請問,財務(wù)竣工決算審計和工程造價審計用英語如何翻譯?
- 3three mountains are covered with snow,tower over the land.
- 4you have to go to america by piane的同義句
- 5水溶液稱氯水,氯水存在的微粒,分析一下其中存在的分子有 ,離子有 ,
- 6找出古詩詞中詠荷的三句名句,并加以賞析.
- 7分析the doctor has decided what to do.麻煩幫我分析一下 在句子的成分 結(jié)果 什么從句
- 8誰能幫我把中文翻印成英文..就2句..
- 9作一個直角三角形兩個銳角的角平分線,所夾的角是多少度?
- 10陳老師家四月份用水21噸,用電126度,共付水電費132元,其中水費相當(dāng)于電費的7分之4
- 11以知下列關(guān)于x方程:4(x-3)+2a=負(fù)X+5和7x-3=a+x
- 12在實數(shù)單位內(nèi)化簡3-!1-根號下-x²!表示絕對值 今晚8:30前