PAT計算機能力考試乙級1-10題答案_第1頁
PAT計算機能力考試乙級1-10題答案_第2頁
PAT計算機能力考試乙級1-10題答案_第3頁
PAT計算機能力考試乙級1-10題答案_第4頁
PAT計算機能力考試乙級1-10題答案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1001害死人不償命的(3n+1)猜想(15分對任何一個正整數(shù) n,如果它是偶數(shù),那么把它砍掉一半;如果它是奇數(shù),那么把(3 n+1)砍掉一半。這樣一直反復砍下去,最后一定在某一步得到n=K卡拉茲在1950年的世界數(shù)學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果鬧得學生們無心學業(yè),一心只證(3 n+1),以至于有人說這是一個陰謀,卡拉茲是在蓄意延緩美國數(shù)學界教學與科研的進展我們今天的題目不是證明卡拉茲猜想,而是對給定的任一不超過1000的正整數(shù)n,簡單地數(shù)一下,需要多少步(砍幾下)才能得到n=1?分析:輸入一個正整數(shù)n進行循環(huán),n=1循環(huán)截止,判

2、斷n,如果它是偶數(shù),那么把它砍掉一半;如果它是奇數(shù),那么把 (3 n+1)砍掉一半。這樣一直反復砍下去,最后一定在某一步得 到n=1,并計算經(jīng)過的次數(shù)mt#include"stdlib.h"#include"stdio.h" int main() int n,m;m=0;scanf_s("%d",&n); while(n!=1) if(n%2=0) n=n else n=(3*n+1)/2; m+; printf_s("%dn",m); system("pause");1002寫出這個數(shù)

3、(20分)讀入一個正整數(shù)n,計算其各位數(shù)字之和,用漢語拼音寫出和的每一位數(shù)字。分析:輸入一個正整數(shù) n, while 循環(huán)求出n的各位數(shù)字之和 sum;如果sum等于0,那么 就輸出它的拼音“ ling ” ;如果不等于0,輸入數(shù)組b存放各位數(shù)字之和,在 switch對這 個數(shù)組進行判斷數(shù)組 b各個數(shù)的數(shù)值為多少,0對應"ling"1 對應"yi"2:對應 <"er"3對應"san"4對應"si"5對應"wu"6對應"liu"7對應"qi&

4、quot;8對應"ba"9 對應"jiu"#include<iostream>using namespace std;int main()char a101;cin>>a;int sum=0,i=0;while(ai!='0')sum+=ai-'0'+i;if(sum=0)cout<<"ling"<<endl;int b11,j=0;while(sum!=0)bj=sum%10;sum=sum/10;+j;for(int i=j-1;i>=0;-i)

5、switch(bi)case 0:cout<<"ling"break;case 1:cout<<"yi"break;case 2:cout<<"er"break;case 3:cout<<"san"break;case 4:cout<<"si"break;case 5:cout<<"wu"break;case 6:cout<<"liu"break;case 7:cout&l

6、t;<"qi"break;case 8:cout<<"ba"break;case 9:cout<<"jiu"break;if(i!=0)cout<<" "system("pause");return 0;1003我要通過?。?0分)“答案正確”是自動判題系統(tǒng)給出的最令人歡喜的回復。本題屬于PAT的“答案正確”大派送 只要讀入的字符串滿足下列條件, 系統(tǒng)就輸出“答案正確”,否則輸出“答案錯 誤”。得到“答案正確”的條件是:1 .字符串中必須僅有 P、A T

7、這三種字符,不可以包含其它字符;2 .任意形如xPATx的字符串都可以獲得“答案正確”,其中x或者是空字符串,或者 是僅由字母A組成的字符串;3 .如果aPbTc是正確的,那么 aPbATca也是正確的,其中 a、b、c均或者是空字符 串,或者是僅由字母 A組成的字符串。答案正確”的。現(xiàn)在就請你為PAT寫一個自動裁判程序,判定哪些字符串是可以獲得“分析:首先判斷輸入的字符串必須僅有P、A、T這三種字符;然后進行這樣的PATPAATAAPATAAAAPAATAAAA前面有前面有前面有前面有0 個 A,pt0 個 A,pt2 個 A,pt2 個 A,pt之間有1個A, 之間有2個A, 之間有1個A

8、, 之間有2個A,后面有0個A, 后面有0個A, 后面有2個A, 后面有2個A,0*1=00*2=02*1=22*2=4判斷: 正確 正確 正確 正確#include <stdio.h> #include <iostream> #include <string.h>int main() char c100;int i,j,n;int count_P,count_A,count_T,pos_P,pos_T; scanf( "%dn" ,&n);for (i=0;i<n;i+)gets(c);count_P = 0;count_

9、A = 0;count_T = 0;pos_P = 0;pos_T = 0;for (j=0;j<strlen(c);j+)if (cj= P ) count_P+;pos_P = j;if (cj= 'A') count_A+;if (cj= 'T') count_T+; pos_T = j; if (count_P+count_A+count_T != strlen(c) | pos_T-pos_P<=1 | count_P>1 | count_T>1 | pos_P*(pos_T-pos_P-1)!=strlen(c)-pos_T-

10、1) printf("NO'n");else printf("YES'n"); return 0;1004成績排名(20分)讀入n (>0)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。分析:首先我們需要輸入學生的姓名、學號、成績。把他們所有的成績作為一個整型數(shù)組,每個數(shù)與學生相對應,然后比較他們的成績,得到最高和最低成績。第i的成績最大或者最 小,對應第i個學生的信息。#include <stdio.h>#include <iostream>int main()int i, max=

11、0,min=0, n, score100;char name1008, id1008;scanf( "%d",&n);for (i=0;i<n;i+)scanf( "%s%s%d;hamei, idi, &scorei);for (i=0;i<n;i+)if (scorei>scoremax) max=i;printf( "%s %sn" ,namemax,idmax);for (i=0;i<n;i+)if (scorei<scoremin) min=i;printf( "%s %sn&q

12、uot; ,namemin,idmin);system( "pause");return 0;1005繼續(xù)(3n+1)猜想(25分)卡拉茲(Callatz)猜想已經(jīng)在1001中給出了描述。在這個題目里,情況稍微有些復雜。當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數(shù)。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候,就可以直接判定卡拉茲猜想的真?zhèn)危恍枰貜陀嬎?,因為這4個數(shù)已經(jīng)在驗證3的時候遇到過了,我們稱 5、8、4、2是被3 “覆蓋”的數(shù)。我們稱一個數(shù) 列中的某個數(shù) n為“關

13、鍵數(shù)”,如果 n不能被數(shù)列中的其他數(shù)字所覆蓋?,F(xiàn)在給定一系列待驗證的數(shù)字,我們只需要驗證其中的幾個關鍵數(shù),就可以不必再重復驗證余下的數(shù)字。你的任務就是找出這些關鍵數(shù)字,并按從大到小的順序輸出它們。分析:輸入n個數(shù),用數(shù)組 a存放。首先把如果碰到數(shù)組中有0的項,則跳過。判斷t,如果它是偶數(shù),那么把它砍掉一半;如果它是奇數(shù),那么把 (3 n+1)砍掉一半。然后進行 數(shù)組中所有數(shù)與運算中出現(xiàn)的數(shù)比較,如果數(shù)組中有和運算過程中相同的數(shù),就把數(shù)組中的該數(shù)改為0。因為輸入的數(shù)組是互不相同的數(shù),所以不會存在有多個匹配的情況,為了節(jié)省內 存減少運行時間,找到有一個匹配就可跳出。接著進行排序,然后輸出。#inc

14、lude <stdio.h>#include <iostream>int main()int a105;int n,i,t,j;scanf( "%d" ,&n);for (i=0;i<n;i+)scanf( "%d",&ai);for (i=0;i<n;i+)t=ai;if (t=0) continue ;while (t!=1)if (t%2=0)t/=2;elset=(3*t+1)for (j=0;j<n;j+)if (aj=t)aj=0;break ;int temp;for (i=0;i&

15、lt;n;i+)for (j=i+1;j<n;j+)if (ai<aj)temp=ai;ai=aj;aj=temp;for (i=0;ai>0;i+)printf("%d%s',ai,ai+1>0?"":"");system( "pause");1006 換個格式輸出整數(shù)(15分)讓我們用字母 B來表示“百”、字母 S表示“十”,用12.n 來表示不為零的個 位數(shù)字 n (<10),換個格式來輸出任一個不超過 3位的正整數(shù)。例如 234應該被輸出 為 BBSSS1234因為它有2個“百”

16、、3個“十”、以及個位的 4。分析:題目用字母 B來表示“百”、字母 S表示“十”,用12n 來表示不為零 的個位數(shù)字 n (<10),整數(shù)n不超過三位數(shù)。 首先求出整數(shù) n的百位a,十位b,個位c, 在通過自減a,b,c(直到a,b,c不大于0)判斷每一位上有幾個數(shù)#include <iostream> using namespace std;int main() int n,a,b,c,i=1;cin>>n;c = n%100;n /= 100;b = n%10;n /= 10;a-; b-; i+;c-;a = n;while (a>0)cout<

17、;< "B"while (b>0)cout<< "S"while (c>0) cout<<i;system( "pause");return 0;1007 素數(shù)對猜想(20分)分析:首先素數(shù)是 在大于1的自然數(shù)中,除了 1和它本身以外不再有其他因數(shù)。那么可以從2開始找,求出1到N之間的素數(shù);再判斷滿足條件的素數(shù)對個數(shù):素數(shù)對猜想”認為“存在無窮多對相鄰且差為 2的素數(shù)。#include <iostream>#include <cmath>using namespace

18、std;int main()int n;cin>>n;int i,j,count=0;int s=2;for (i=2;i<=n;i+)for (j=2;j<=sqrt(i);j+) if (i%j=0) break ;if (j>sqrt(i)if (i-s=2) count+;s=i;cout<<count;return 0;1008 數(shù)組元素循環(huán)右移問題(20 分)讓我們定義dn為:dn=pn+1-pn,其中pi是第i個素數(shù)。顯然有d1=1,且對于n>1有dn是偶數(shù)?!八財?shù)對猜想”認為“存在無窮多對相鄰且差為2的素數(shù)”。現(xiàn)給定任意正整數(shù) N

19、<105),請計算不超過N的滿足猜想的素數(shù)對的個數(shù)。分析:首先考慮到 m可能會比n大,為了減少不必要的移動,將m對n取余;先將前0n-m-1翻轉,再將n-mn-1翻轉,最后再整體進行數(shù)組的翻轉。#include <iostream>#include <stdio.h>using namespace std;int main( void )int n,m;cin>>n>>m;int a300;if (m>n)m=m%n;for (int i=0;i<n;i+)cin>>ai;ai+n=ai;int j=n-m;for (int i=0;i<n;i+)if (i!=0)cout<< ""cout<<aj;j+;cout<<endl;system( "pause");return 0;1009說反話 (20分)給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。分析:輸入一句英文,用二維數(shù)組存放(為了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論