題目是:利用if條件判斷式,將大寫字母轉小寫字母,以及小寫字母轉大寫字母兩個程式寫成一個,(程式開始前先問使用者要那種操作)
char x,y;
int z;
printf("請問要大寫轉小寫(選1),小寫轉大寫(選0)\n");
scanf("%d",&z);
if (z==1)
{
printf("請輸入大寫英文字母:\n");
scanf("%c",&x);
y=x+32;
printf("%c轉為%c",x,y);
}
else
printf("請輸入小寫英文字母:\n");
scanf("%c",&x);
y=x-32;
printf("%c轉為%c",x,y);
可是選擇1大轉小可以輸入但結果錯誤,
只要選擇0小轉大,
我要怎麼做修改呢???
還有為什麼會重復出現這兩個字和*
圖片參考:http://pic43.pic.wretch.cc/photos/9/m/missyou89123/34/1862391286.jpg
因為是自修c語言,沒有人可以問,
請各位大大幫忙解答,感激不盡!
2007-06-13 10:34:53 · 3 個解答 · 發問者 ? 5 in 電腦與網際網路 ➔ 程式設計
只要選擇0小轉大就沒辦法輸入,那裡沒打到!抱歉
2007-06-13 10:35:48 · update #1
//Power by Visual Studio 2005
#include
#include
int main(int argc, char* argv[]){
//==========START==========//
char x[2]={'\0'},y[2]={'\0'};
int z;
printf("請問要大寫轉小寫(選1),小寫轉大寫(選0)\n");
scanf("%d",&z);
if(z==1){
printf("請輸入大寫英文字母:\n");
scanf("%s",x);
y[0]=x[0]+32;
}else if(z==0){
printf("請輸入小寫英文字母:\n");
scanf("%s",x);
y[0]=x[0]-32;
}
printf("%s轉為%s\n",x,y);
//==========END==========//
system("PAUSE");
return 0;
}
2007-06-13 16:03:08 補充:
一個字元資料配置到記憶體後,連接這個字元後方的資料大多是「亂碼」或是其他的數值、字串資料,電腦讀取時,會一併把亂碼和其他資料給讀取出來;字串的結尾字元是 \0(這個零是整數值不是字元),所以電腦才會正確地讀取字串並顯示出來。
如果要讓電腦正確讀取和顯示字元資料,把字元資料修改成字串資料是唯一的方法。(字元資料的結尾加上 \0)
2007-06-13 11:51:30 · answer #1 · answered by Big_John-tw 7 · 0⤊ 0⤋
拉肚子的小毛病,用不著小題大做開刀住院,且讓我給你對症下藥。
你這個程式只要小小的修改,便能你如願的正常運行。
1.把所有 scanf("%c",&x) 的 %前面加一個空白即可。
2.把 else底下那 4行用{}括起來。
哈!就這麼簡單,你的程式又是活龍一條了。
2007-06-13 15:29:36 · answer #2 · answered by 東邪無弓 7 · 0⤊ 0⤋
C/C++裡面有很多是已經做好的函式(function)
(ctype.h)
轉大寫toupper
轉小寫tolower
人家專家寫的邏輯觀念才是正確的
真正的判斷程序很冗長
1. 必須判斷是英文字母 A~Z或是a~z
2. 若原來是大寫 要轉小寫才作ASCII減32的動作
3. 若原來是大寫 要轉大寫則不作動作
4. 若原來是小寫 要轉大寫才作ASCII加32的動作
5. 若原來是小寫 轉小寫則不作動作
若為字串也需一個一個字元作判斷
學應用就直接使用函式
學程式設計原理就詳細去考慮各種輸入情況
因為我若輸入'#',你的程式還是錯誤輸出
2007-06-13 14:06:11 · answer #3 · answered by 云 6 · 0⤊ 0⤋