下面的程序的功能是將小寫字母變成對應(yīng)的大寫字母后的第二個字母。main(){char c;while((c=getchar())!='\n'){if(c>='a'&&c<='z'){c-=30;if(c>'Z'&&c<='Z'+2)c-=26;}printf("%c",c);}問:if(c>'Z'&&c<='Z'+2)c-=26;這兩句我看不明白 為什么要這么考慮?
熱心網(wǎng)友
我來解答樓主的問題吧.你這個程序沒有錯誤,但是你的理解有誤.不是"小寫字母變成對應(yīng)的大寫字母后的第二個字母",而是小寫字母變成對應(yīng)的大寫字母后的第三個字母!比如字母a-C,b- cII中,字母a--z的碼值是97----122.A---Z的值是65-----90.程序中,每輸入一個小寫字母.執(zhí)行:if(c='a'&&c'Z'&&c<='Z'+2),看是否是91和92.然后c-=26;,這樣就將y變成了Y,z變成了Z了.
熱心網(wǎng)友
1.程序顯然缺少一個花括號,可在末尾加上.2.把c限定在a和z之間作處理后,用if(c'Z')也就可以了.3.程序可完成既定功能;當c為y或z時,只轉(zhuǎn)換成A或B,故處理后還須-26.
熱心網(wǎng)友
你去查查每個字母在計算機里對應(yīng)都是一個數(shù)字字符可以運算的
熱心網(wǎng)友
你的這個程序有問題:你懷疑的那段語句:if(c'Z'&&c='A'&&c<='Z') c+=2;
熱心網(wǎng)友
補充樓上:要是超出了范圍,你的程序就沒有達到目的,也就是說失敗了!呵呵!你這個程序挺好玩的!有意思!
熱心網(wǎng)友
你想完全明白就要先了解 ASCII碼才可以。因為字母也有自己對應(yīng)的ASCII碼。if(c'Z'&&c<='Z'+2)這句的意思是判斷是否超出范圍如果超過的話就讓它執(zhí)行這句c-=26;