題目如下
第一步:輸入
因為n小於10的100次方,所以可以用長度為100的字元型陣列儲存。這裡仍然要討論結束符的問題。如果輸入長度為100,那麼編譯器會不會自動再陣列結尾插入乙個結束符?如果使用cin>>,是不會出現這種情況的。這裡做了乙個小嘗試。
#include
using
namespace
std;
int main()
}return (len);
}
什麼是null,為什麼在陣列中沒有賦值的位址上的值為null?
c++中定義null即為0.在陣列中,無論什麼型別的陣列,如果元素沒有被初始化,就會被設定為預設值『0』。int型將會初始化為0.char或者string型陣列將會初始化為「」(ascii碼為0)。所以,上述判定條件也可以寫成: if (a[i]!=0).
雖然這裡不涉及空指標問題,但是我也查了一點這方面的資料。空指標不會指向任何物件和函式。所以任何物件或者函式的位址均不為空。那麼空指標到底指向什麼地方呢?答案是,看系統而定。有的是指向位址為0的記憶體。有的是指向其他的位置。
參考資料:
初始化問題
空指標問題
2.2 求和
int getsum(const char (&a)[100])
return (sum);
}
這裡注意格式轉換就行
第三部 輸出
3.1 定義string陣列。
用含有10個元素的string陣列來儲存拼音資訊。之所以用const,是因為希望保護string內的元素,不允許修改。
const
string pinyin[10]=;
3.2 列印
這裡我思考了一段時間,如何保證從非零首位開始列印。我想的辦法是從高位開始遍歷,設定乙個標誌位,當標誌位為1時,才能夠列印。而只有出現非零值時,標誌位才會改變為1.還有就是如何將int型值的每一位依次取出。演算法如下
void output(const
string (&pinyin)[10], int sum)
; int flag=0;
for ( int i =3;i>0;i--)
if(flag==1)
if (i!=1 & flag==1)}}
綜合**:
#include
#include
#include"math.h"
using
namespace
std;
void getinput(char (&a) [100])
int getinputlen(const
char (&a)[100])
}return (len);
}int getsum(const
char (&a)[100])
return (sum);
}void output(const
string (&pinyin)[10], int sum)
; int flag=0;
for ( int i =3;i>0;i--)
if(flag==1)
if (i!=1 & flag==1)
}}int main()
; char input[100]=;
int sum=0;
getinput(input);
sum = getsum(input);
output(pinyin,sum);
return(0);
}
PAT乙級真題
include includeint main char zhuan 10 sprintf zhuan,d he for int i 1 0 i 1 includeint main else if grade to else if grade includebool search int a,int...
PAT乙級1006題感想
初學c 很多東西搞得雲裡霧裡。這題很簡單,但是做的很不好。題目如下 正整數a的 da 為1位整數 部分 定義為由a中所有da組成的新整數pa。例如 給定a 3862767,da 6,則a的 6部分 pa是66,因為a中有2個6。剛開始對string了解很不好,在做比較時,寫的很蠢。不管蠢不蠢,我搞清...
PAT乙級訓練題 1002
讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098765...