ISBN碼 0 1 3 1 6 2 9 5 9 10(X)
第一次累加和 0 1 4 5 11 13 22 27 36 46
第二次累加和 0 1 5 10 21 34 56 83 119 165
經由計算可得其識別碼為165,乃是11之倍數,故此為一合法之ISBN碼,因此應該要輸出YES於螢幕上。
試題一解答
試題目錄
回到首頁
學習程式設計,語法固然重要,也是許多程式設計課程的教學重點。但是看的懂 C ,不見得會用 C 來解決問題(Problem solving),所以學會解題是重點中的重點。 學習C語言的不二法門,就是從寫程式解題開始,這裡的考古題由淺而深,循序漸進,對初學者甚有助益。 ACM 協會針對每年程式設計比賽的練習需求,建立一個線上的題庫與評分系統,希望藉由題庫練習的機會,在此心得分享,讓有心學習程式解題的人,能有個溝通成長的橋樑。
ISBN碼 0 1 3 1 6 2 9 5 9 10(X)
第一次累加和 0 1 4 5 11 13 22 27 36 46
第二次累加和 0 1 5 10 21 34 56 83 119 165
1 則留言:
這一題沒有解答可參考,在忽略'-'及x=10部分想了很久終於解出來了。
先宣告一個字串陣列及一個整數陣列。
再來用字串陣列判斷忽略'-'以及輸入X=10,
將解果傳到整數陣列再計算即可。
1.忽略'-':
一開始將字串陣列的容量宣告為10個以上,
再判斷輸入的內容是否為'-',是的話將陣列內容往左移,故需要10個以上的容量來確保有10個數字。
for(i=0;i<20;i++)
{
if(cISBN[i]=='-')
{
for(j=i;j<20;j++)
{
cISBN[j]=cISBN[j+1];
}
}
}
2.判斷輸入'x'or'X'就會=10:
for(i=0;i<10;i++)
{
if(cISBN[i]=='x'||cISBN[i]=='X')
cISBN[i]=10;
}
3.將字串陣列傳到整數陣列:
因為直接傳送數值會不對,所以用switch的方式來判斷及傳送。
for(i=0;i<10;i++)
{
switch(cISBN[i])
{
case '0':
{iISBN[i]=0;break;}
case '1':
{iISBN[i]=1;break;}
.
.
.
case 10:
{iISBN[i]=10;break;}
}
}
4.使用整數陣列計算即可。
張貼留言