作者 主題: 請教C語言問題  (閱讀 998 次)

0 會員 與 1 訪客 正在閱讀本文。

student f

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
請教C語言問題
« 於: 2021-03-22 02:40 »
題目:輸入一個英文字母,輸出其大寫字母
我打的程式碼如下:

#include <stdio.h>
int main()
{
    while(1==1)
    {
        char ch;
        printf("input char = ");
        scanf("%c",&ch);

        if(ch<90)
        {
            printf("char is : %c\n\n",ch);
        }
        else
        {
            ch-=32;
            printf("char is : %c\n\n",ch);
        }
    }
}

請問輸出時,為何會多跑出下面這一行,沒用while時不會出現,但我想讓它可以重複輸入,不知道是哪裡出錯了,麻煩大家了。

input char = char is :


twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5411
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 請教C語言問題
« 回覆 #1 於: 2021-03-22 08:16 »
自己把 ch 用 %d 印出來看是什麼字再去想為什麼吧.

要精確的控制輸入, 就不要用 scanf 處理, 它的運作可能跟你想的不太一樣.

student f

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
Re: 請教C語言問題
« 回覆 #2 於: 2021-03-22 12:56 »
目前我知道ch用%d會輸出對應的十進位碼,
寫這樣是想利用大寫和小寫差32來換算。

用 %d 印除了原本的         input char = char is :
還多了一行                     char is : 10
好神奇喔 :o :o

小弟是初學,
對scanf的運作還有其他輸入不太了解,
請問能指引一下要往那個方向去學呢?
感謝回復。
« 上次編輯: 2021-03-22 12:59 由 student f »