PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   C++嫩咖一問,跪求大家幫忙 (https://www.pcdvd.com.tw/showthread.php?t=896712)

㊣經藝湘㊣ 2010-06-09 12:10 AM

C++嫩咖一問,跪求大家幫忙
 
使用者輸入一字串並輸入1.2.3.執行
1.轉大寫(用strupr字串轉換函數)
2.轉小寫 strlwr
3.大小寫互轉
重點要用函數表達


#include <iostream>
#include <cstdlib>
using namespace std;
void star(char);
int main()

{
char a[20];
int b;
cout<<"input a string";

cin.getline(a,20);
cout<<"1.轉大寫2.轉小寫3.大小寫互轉";
cin>>b;
if (b=1)
star(a[20]);


system("pause");
return 0;

}
void star(char a)
{
strlwr(a);
cout<<a<<endl;
}
/*這裡就不行了... :cry:
*/

初學者中的初學者,希望大家能盡量講的簡單一點
感激不盡
:cry: :cry: :cry:

piyoko 2010-06-09 12:23 AM

#include <iostream>
#include <cstdlib>
using namespace std;
void star(char); //函數宣告
int main()

{
char a[20]; //變數宣告
int b;
cout<<"input a string"; //印出訊息"input a string"

cin.getline(a,20); //輸入訊息至 char a[20]
cout<<"1.轉大寫2.轉小寫3.大小寫互轉";
cin>>b; //輸入 int b
if (b=1) //如果b =1 , 轉大寫
star(a[20]); //呼叫函數 , 跳至star()


system("pause");
return 0; //結束

}
void star(char a)
{
strlwr(a); // 將 string char a[20] -> 小寫
cout<<a<<endl; // 輸出結果 ,返回 main()
}

typh 2010-06-09 12:27 AM

首先,作業不在家作完卻跑來問人,失敗! :unbelief: :unbelief: :unbelief:
再來,以為在78區可以找到正經的答案,更是失敗中的失敗! :D :D :D

Bon-Chih 2010-06-09 12:33 AM

大哥 你跪錯地方了 這裡不是 摁姆01 :jolin:

起司頭棕褲褲 2010-06-09 12:54 AM

㊣經藝湘㊣
請問您跟金義農是什麼關係

ResidentEvil 2010-06-09 01:52 AM

大寫英文字母的ASCII是65~90
小寫英文字母的ASCII是97~122

String 是字元陣列,將輸入的字串存到陣列中,加32是小寫,減32是大寫

ResidentEvil 2010-06-09 02:09 AM

如果要把陣列傳給函數,要使用指標指向陣列起始位置,再把指標當作參數傳給函數

cheneyen 2010-06-09 04:41 AM

ResidentEvil的方向是
1:轉大寫作xor 32
2:轉小寫作or 32
大小寫互轉,把1,2混合,一行就可以判定完成(敵動,我不動口訣)

不過你要作現成的,該用的函數不是知道了,怎麼還有問題?

還用,寫if else不夠漂亮,switch比較有美感

zongyou 2010-06-09 06:22 AM

引用:
作者㊣經藝湘㊣
使用者輸入一字串並輸入1.2.3.執行
1.轉大寫(用strupr字串轉換函數)
2.轉小寫 strlwr
3.大小寫互轉
重點要用函數表達


#include <iostream>
#include <cstdlib>
using namespace std;
void star(char);
int main()

{
char a[20];
int b;
cout<<"input a string";

cin.getline(a,20);
cout<<"1.轉大寫2.轉小寫3.大小寫互轉";
cin>>b;
if (b=1)
star(a[20]);


system("pause");
return 0;

}
void star(char a)
{
strlwr(a);
cout<<a<<endl;
}
/*這裡就不行了... :cry:
*/

初學者中的初學者,希望大家能盡量講的簡單一點
感激不盡
:cry: :cry: :cry:


strlwr()照字面看來你是要丟字串進去
但你丟了字元,且.......
宣告a[20],指a陣列有20字元可存
從第0開始,您算算第20是已經是第幾個字元

cheneyen 2010-06-09 07:29 AM

寫太快@@"前面有誤@@"
基本上你只要抄大小寫轉換那個就好了,至於switch這種東西就不墜述了

PS:直接作加減會有問題,因為可能有破表危機^^"你還要後續檢查,太麻煩了

範例:
大小互轉--xor
(input[index]>=65 && input[index]<=90) || (input[index]>=97 && input[index]<=122)?(input[index]^32):input[index]

轉小寫--or
(input[index]>=65 && input[index]<=90) || (input[index]>=97 && input[index]<=122)?(input[index]|32):input[index]

轉大寫--先or再xor
(input[index]>=65 && input[index]<=90) || (input[index]>=97 && input[index]<=122)?((input[index]|32)^32):input[index]


所有的時間均為GMT +8。 現在的時間是03:35 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。