精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(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)了錯誤,無法判斷了.
    其他人氣:965 ℃時間:2020-05-30 16:04:59
    優(yōu)質(zhì)解答
    給你一個改動最少的方案:
    #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(),這樣就多接收了一個字符了
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版