台灣最大程式設計社群網站
線上人數
956
 
會員總數:243984
討論主題:188418
歡迎您免費加入會員
討論區列表 >> C/C++ >> 各位數字連乘
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
各位數字連乘
價值 : 10 QP  點閱數:216 回應數:5

樓主

cyatmirror
門外漢
0 3
28 5
發送站內信

捐贈 VP 給 cyatmirror






先輸入一個數字代表後續要輸入的資料數
然後再輸入各數字
接者輸出各位數字的連乘積
ex:123=1*2*3=6

但是我這樣的程式碼跑出來的結果是錯誤的
希望版上的大大可以幫我看一下是哪裡出錯
感謝^^

搜尋相關Tags的文章: [ 數字連乘 ] ,
本篇文章發表於2018-10-06 00:13
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小魚
檢舉此回應
a明明是string怎麼能夠當數字來處理?
你取出來的可能是ASCII碼...
本篇文章回覆於2018-10-06 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

cyatmirror
捐贈 VP 給 cyatmirror 檢舉此回應
謝謝你的回答~
原本沒有想到那個會是asc2碼
我把at.()後面-48就可以得出答案了
本篇文章回覆於2018-10-06 22:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小魚
檢舉此回應
C++ 跟 C# 對類型非常重視,
不同類型不能混著用,
在C++中字串是以char/byte為底,
所以string取單一字元其實就是一個char/byte,
char/byte是以ASCII碼來儲存,顯示出來就是ASCII碼代表的字元。
(即使看到是數字,對電腦來說也是一個ASCII的字元)
這個觀念要很清楚,不能把字元直接當成數字來處理。
本篇文章回覆於2018-10-07 08:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Raymond
檢舉此回應
嚴格來說, C 及 C++ 語言是沒有 ASCII 這個概念的. ASCII 是其中一種編碼的格式, 而世界上並不只一種編碼格式, 有些系統也不是以 ASCII 作為其編碼格式的.

所以用 -48 來把字元 '1' 轉成數值 1 這種寫法是不可攜的, 因為它鎖定了只能在以 ASCII 編碼的系統上執行.

但你可以用 - '0'. 因為語言標準保證數字字元 '0'~'9' 必須是連續的, 且每一個數值比前一個大一 (但不保證其它字元如字母字元的連續性).

同時建議你用 isdigit() (需要 <ctype.h> 或 <cctype>) 來做錯誤檢查.

比方說:


【對你原程式的問題/建議...】
- 不要用 using namespace std, 因為這容易導致名字衝撞. 初學者儘量習慣用 std:: 來前綴所有 C++ 的名字.

- 用有意義的名字取代 'n'. 單字母的變數名字一般是用在簡單迴圈的計數器, 如


- string a[n] 這個宣告是錯誤的. C++ 不支援「動態陣列」這種寫法, 陣列必須在編譯期就固定大小, 或在執行期動態配置. 但 C++ 有很多 collection class (如 std::vector) 來做到你要的目的.

- 因為你程式的著重點是『字元』, 所以用字串陣列有點小題大作. 建議可以用 std::vector<char> 來儲存.


- 用字元來輸入有個好處, 就是可以不管資料輸入的方式. 比方說, 輸入第一個表示要輸入的資料數後, 後續的資料不管是怎麼輸入的都無所謂, 如果 nCount 輸入 3, 後面的資料可以輸入

  123<enter 鍵>

 或:

  1<空格>2<空格>3<enter 鍵>

 或:

  1<enter 鍵>
  2<enter 鍵>
  3<enter 鍵>


data[0]~data[2] 都會分別得到 '1', '2', '3'.

要計算結果, 用這個就可以了:


本篇文章回覆於2018-10-14 23:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

cyatmirror
捐贈 VP 給 cyatmirror 檢舉此回應
最近這兩天學校段考
所以很抱歉沒有及時回覆
看到有人回覆那麼多內容給一個初學者真的很感動~

原本在寫這個程式的時候也還不知道vector還有
"但你可以用 - '0'. 因為語言標準保證數字字元 '0'~'9' 必須是連續的, 且每一個數值比前一個大一 (但不保證其它字元如字母字元的連續性"
這件事等等

但是看完你的回應之後真的對於一個初學者來說學到很多
總之,謝謝你的回覆^^
本篇文章回覆於2018-10-16 23:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.