PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
㊣經藝湘㊣
*停權中*
 

加入日期: Mar 2010
文章: 4
Question 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;
}
/*這裡就不行了...
*/

初學者中的初學者,希望大家能盡量講的簡單一點
感激不盡
     
      
舊 2010-06-09, 12:10 AM #1
回應時引用此文章
㊣經藝湘㊣離線中  
piyoko
Major Member
 
piyoko的大頭照
 

加入日期: Sep 2006
文章: 123
#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()
}
 
舊 2010-06-09, 12:23 AM #2
回應時引用此文章
piyoko離線中  
typh
Advance Member
 

加入日期: Mar 2010
您的住址: 三界火宅
文章: 396
首先,作業不在家作完卻跑來問人,失敗!
再來,以為在78區可以找到正經的答案,更是失敗中的失敗!
舊 2010-06-09, 12:27 AM #3
回應時引用此文章
typh離線中  
Bon-Chih
Golden Member
 
Bon-Chih的大頭照
 

加入日期: Mar 2003
您的住址: 我家
文章: 2,584
大哥 你跪錯地方了 這裡不是 摁姆01
舊 2010-06-09, 12:33 AM #4
回應時引用此文章
Bon-Chih離線中  
起司頭棕褲褲
*停權中*
 
起司頭棕褲褲的大頭照
 

加入日期: Jun 2010
您的住址: 紐開普市
文章: 1,545
㊣經藝湘㊣
請問您跟金義農是什麼關係
舊 2010-06-09, 12:54 AM #5
回應時引用此文章
起司頭棕褲褲離線中  
ResidentEvil
*停權中*
 

加入日期: May 2010
文章: 4
大寫英文字母的ASCII是65~90
小寫英文字母的ASCII是97~122

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

此文章於 2010-06-09 01:54 AM 被 ResidentEvil 編輯.
舊 2010-06-09, 01:52 AM #6
回應時引用此文章
ResidentEvil離線中  
ResidentEvil
*停權中*
 

加入日期: May 2010
文章: 4
如果要把陣列傳給函數,要使用指標指向陣列起始位置,再把指標當作參數傳給函數
舊 2010-06-09, 02:09 AM #7
回應時引用此文章
ResidentEvil離線中  
cheneyen
*停權中*
 

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

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

還用,寫if else不夠漂亮,switch比較有美感
舊 2010-06-09, 04:41 AM #8
回應時引用此文章
cheneyen離線中  
zongyou
Advance Member
 

加入日期: Apr 2002
文章: 308
引用:
作者㊣經藝湘㊣
使用者輸入一字串並輸入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;
}
/*這裡就不行了...
*/

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


strlwr()照字面看來你是要丟字串進去
但你丟了字元,且.......
宣告a[20],指a陣列有20字元可存
從第0開始,您算算第20是已經是第幾個字元
舊 2010-06-09, 06:22 AM #9
回應時引用此文章
zongyou離線中  
cheneyen
*停權中*
 

加入日期: Jun 2002
文章: 90
寫太快@@"前面有誤@@"
基本上你只要抄大小寫轉換那個就好了,至於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]
舊 2010-06-09, 07:29 AM #10
回應時引用此文章
cheneyen離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:57 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。