C++字串~可以幫忙註解嗎?小弟我有許多不懂>\"<
#include
#include
int main(void)
{
char str[100];
int j;
printf(\"請輸入一個帶有空白及標點符號的英文字串供程式轉換\\n\");
gets(str);
printf(\"原字串 %s\\n\",str);
if(str[0]>96)
if(str[0]<123)
str[0]=str[0]-32;
else
str[0]=str[0];
else
str[0]=str[0];
for(j=1;j != 100;j++){
if(str[j]<91)
if(str[j]>64)
str[j]=str[j]+32;
else
str[j]=str[j];
else
str[j]=str[j];
}
printf(\"新字串 %s\\n\",str);
return 0;
}
煩請幫忙完整註解或詳細解釋~
能夠讓我瞭解~謝謝!
看不太懂第一個陣列元素那邊
2006-05-26 21:04:05 · 1 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
if(str[0]>96) // 如果字串中第「0」個字元(一般人講話說第一個字元)的值大於96的話
if(str[0]<123) // 就看看它是不是也小於123
str[0]=str[0]-32; // 如果是的話就將它減32
else
str[0]=str[0]; // 如果不是小於123的話值不變
else
str[0]=str[0]; // 如果不是大於96的話值不變
大於96小於123也就是97到122, 97是'a'的ASCII碼, 98是'b'的ASCII碼......, 122是'z'的ASCII碼.
減32的話就是65到90, 65是'A', 66是'B',......, 90是'Z'
也就是說如果小寫的a到z會換成大寫的A到Z.
for(j=1;j != 100;j++){ //j從1開始做,每次加1,j不等於100就一直做,j=99還做,j=100時跳出不會再做
if(str[j]<91)
if(str[j]>64)
str[j]=str[j]+32;
else
str[j]=str[j];
else
str[j]=str[j];
}
道理是一樣的,str[j]小於91的話,看看有沒有大於64,有就加32沒有就不變.
大於64就是65也就是'A',小於91就是90也就是'Z',65+32=97='a',90+32=122='z',
從str[1]到str[99],也就是字串中第「1」到第「99」字元(口語上第2到第100字元),
如果是大寫A到Z就換成小寫a到z,不是就不要改變.
2006-05-27 03:53:38 · answer #1 · answered by chan 5 · 0⤊ 0⤋