就是
每次遇到
這種題目 我就不知道如何下手
誰可以告訴我
例如說
輸入 56556
程式該如何寫才能 讓
第一個數5 + 第二個數6 + 第三個數5 + 第四個數5 + 第六個數6
這樣就會等於 5+6+5+5+6 = 27
可以說一下C++程式碼各位都是如何打的嗎?
就是
每次遇到
這種題目 我就不知道如何下手
誰可以告訴我
例如說
輸入 56556
程式該如何寫才能 讓
第一個數5 + 第二個數6 + 第三個數5 + 第四個數5 + 第六個數6
這樣就會等於 5+6+5+5+6 = 27
可以說一下C++程式碼各位都是如何打的嗎?
大概有兩種方法吧
1. 將 56556 視為一個整數,利用迴圈每次對他做 mod 運算 (取 10 的餘數)
2. 將 56556 視為一個字串 str,用迴圈取出 str 的每個字元 (str[i] - '0' )
其中第二種方法比第一種方法快很多 (mod 運算非常耗時)
大概有兩種方法吧
1. 將 56556 視為一個整數,利用迴圈每次對他做 mod 運算 (取 10 的餘數)
2. 將 56556 視為一個字串 str,用迴圈取出 str 的每個字元 (str[i] - '0' )
其中第二種方法比第一種方法快很多 (mod 運算非常耗時)
我大部分都用第二種,雖然第一種比較直觀=_=
第一種方法: (放到integer陣列中,但是是反向放入 a[1]=6 a[2]=5 a[3]=5....etc)
temp:=56556;len:=0;
while temp<>0 do begin
inc(len);
a[len]:=temp mod 10;
temp:=temp div 10;
end;
第二種方法: (轉換成str,然後放入char or integer陣列)
temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
str(st[run],sttemp); //把第run位數變成char 或是 string;
val(sttemp,a[run]); //把 char 或是 string 換成數值後放入陣列
end;
第一種方法要注意就是
取出後是由低位到高位,並且只支援到 unsigned long long int
第二種方法則是
取出後由高位到低位(當然也可以改成低位到高位) 而數字不限制在insigned long long int
只跟 陣列可以開到多大有關
希望有幫到你...
temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
str(st[run],sttemp); //把第run位數變成char 或是 string;
val(sttemp,a[run]); //把 char 或是 string 換成數值後放入陣列
end;
不好意思....我真的很想學第二種方法
但是小弟C++真的不是很強
不知道程式碼能不能打的比較簡單一點...抱歉ˊˋ
temp:=56556;len:=0;
str(temp,st);
for run:=1 to length(st) do begin
str(st[run],sttemp); //把第run位數變成char 或是 string;
val(sttemp,a[run]); //把 char 或是 string 換成數值後放入陣列
end;
不好意思....我真的很想學第二種方法
但是小弟C++真的不是很強
不知道程式碼能不能打的比較簡單一點...抱歉ˊˋ
其實我有自己試試看但是加不起來 方便的話可以幫我看看嗎:D
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
string temp = "56556";
int c = 0 ;
for (int i = 0 ; i<6 ; i+=1)
{
c =c + temp[i];
cout << c << endl ;
}
system("PAUSE");
return 0;
}