PTA程序設計答案(共231頁)_第1頁
PTA程序設計答案(共231頁)_第2頁
PTA程序設計答案(共231頁)_第3頁
PTA程序設計答案(共231頁)_第4頁
PTA程序設計答案(共231頁)_第5頁
已閱讀5頁,還剩164頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PTA所有答案工業(yè)gc1601學習小組一、判斷題二、選擇題 三、函數(shù)題4-3 求m到n之和 (10分)答案:int sum(int m, int n) int s=0,i; for(i=m;i=n;i+) s+=i; return s;4-34 簡單輸出整數(shù) (10分)答案:void PrintN ( int N ) int i; for(i=1;i=N;i+) printf(%dn,i);4-36 簡單求和 (10分)答案:int Sum ( int List, int N ) int i,s=0; for(i=0;iN;i+) s+=Listi; return s;4-40 簡單階乘計算

2、(10分)答案:int Factorial( const int N )int i, s=1;if( N 0 )return 0;else if( N = 0)return 1;else for(i=1; i= b)max = a;elsemax = b;return max;4-44 數(shù)字金字塔 (15分)答案:void pyramid(int n)int i, j, space;for(i=1; i = n; i+)space = n - i;for(j=0; j space; j+)printf( );for(j=0; j i; j+)printf(%-2d, i); printf(n)

3、;4-45 判斷奇偶性 (10分)答案:int even( int n )if( n%2=0 )return 1;elsereturn 0;4-46 使用函數(shù)求奇數(shù)和 (15分)答案:int even( int n )if( n%2=0 )return 1;elsereturn 0;int OddSum( int List, int N )int i;int oddsum = 0;for(i=0; iN; i+)if(even(Listi)=0)oddsum += Listi;return oddsum;4-47 使用函數(shù)計算兩點間的距離 (10分)答案:double dist(double

4、x1, double y1, double x2, double y2)double d;d = sqrt(x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2);return d;4-48 使用函數(shù)求素數(shù)和 (20分)答案:int prime( int p )int i,j,count =0;for(j=2;j0&p!=1)return 1;elsereturn 0;int PrimeSum( int m, int n ) int i,sum=0; for(i=m;i 0) integer = integer / 10; count+; powerSum = 0;

5、integer = number; for (i = 0; i count; i+) digit = integer % 10; integer = integer / 10; power = 1; for (j = 0; j count; j+) power = power*digit; powerSum = powerSum + power; if (powerSum = number) flag = 1; else flag = 0; return flag;void PrintN(int m, int n) int i; for (i = m + 1; i e)count+;if(co

6、unt%2!=0) cj=1;for(j=1; j=i; j+) cj=cj*j;d=pow(x,i)/cj;sum=sum+d;i+=2; else cj=1;for(j=1; j= a&si = A&si = 0&si = 9)n3+;else n4+;printf(letter = %d, blank = %d, digit = %d, other = %d,n1,n2,n3,n4);4-7 使用函數(shù)求特殊a串數(shù)列和 (20分)答案:int fn( int a, int n )int x,p=0,i;for(i=0; in; i+)x= a * pow(10,i);p = p + x;r

7、eturn p;int SumA( int a, int n )int k;int sum=0;for(k=0; kn+1; k+)sum = sum + fn( a , k );return sum;4-22 使用函數(shù)輸出指定范圍內的完數(shù) (20分)答案:int factorsum( int number ) int i,s=1; for(i=1; i1 & number%i = 0) s+=i; return s;void PrintPN( int m, int n )int k,t,found = 0;for(k=m; k=n; k+)if (factorsum( k ) = k)fou

8、nd = 1;printf(%d = 1,k); for(t=1; t1 & k%t = 0)printf( + %d, t);printf(n);if (found = 0)printf(No perfect number); 4-25 使用函數(shù)輸出一個整數(shù)的逆序數(shù) (20分)答案:int reverse( int number )int m=0;if(number 0)m = m*10 + number%10;number=number/10;return m;4-50 移動字母 (10分)答案:void Shift( char s )int i,n;char a3;n = strlen(

9、s);for(i=0; i3)for(i=3; in; i+)si-3 = si;for(i=0; i3; i+)sn-3+i=ai;4-51 在數(shù)組中查找指定元素 (15分)答案:int search(int list, int n, int x) int i, result; for (i=0; i=n)m=m%n;if(m!=0)for(i=n-m; i=0; i-)ai+m=ai;for(i=0; i= A&si = a&si = 0&si = 9)n4+;else n5+;printf(%d %d %d %d %d,n1,n2,n3,n4,n5);4-26 使用遞歸函數(shù)計算1到n之和

10、 (10分)答案:int sum( int n )int i,sum=0;if(n=0)return 0;elsefor(i=1; i=n; i+)sum += i;return sum;4-28 遞歸求階乘和 (15分)答案:double fact( int n )int i;double m=1;if(n=0)return m;elsefor(i=1; i0)for(j=1; j=n; j+)sum += fact(j);return sum;4-29 遞歸實現(xiàn)指數(shù)函數(shù) (15分)答案:double calc_pow( double x, int n )int i;double m=1;f

11、or(i=1; i=n; i+)m = m*x;return m;4-32 遞歸求Fabonacci數(shù)列 (10分)答案:int f( int n )int d;if(n=0)d=0;else if(n=1)d=1;else d=f(n-2)+f(n-1);return d;4-33 十進制轉換二進制 (15分)答案:void dectobin( int n )int t;if(n=0|n=1)printf(%d,n%2);elset=n;dectobin(n=n/2);printf(%d,t%2);4-8 遞歸實現(xiàn)順序輸出整數(shù) (15分)答案:void printdigits(int n)i

12、f (n 0) s += number%10; number /= 10;if(s = 5)return 1;else return 0;void count_sum( int a, int b )int i, count=0, count_sum=0;for(i=a; i=b; i+)if( is(i) )count+;count_sum += i;printf(count = %d, sum = %d, count, count_sum);4-10 簡單實現(xiàn)x的n次方 (10分)答案:double mypow( double x, int n )int i;double s=1;for(i

13、=0; in; i+)s = s*x;return s;4-13 使用函數(shù)求1到10的階乘和 (10分)答案:double fact( int n )int i;double s=1;for(i=1;i=n; i+)s = s * i;return s;4-14 使用函數(shù)求最大公約數(shù) (10分)答案:int gcd( int x, int y )int i,t;if(x=1;i-)if(x%i=0 & y%i=0)break;return i;4-15 使用函數(shù)的選擇法排序 (25分)答案:void sort( int a, int n )int i,j,k,t;for(i=0;in-1;i+

14、) for(j=i+1;jn;j+) if(ajai) t=ai;ai=aj;aj=t; 4-16 函數(shù)實現(xiàn)字符串逆序 (15分)答案:void f(char *p) int i,n=0; char t; for(i=0; pi != 0; i+) n+; for (i=0; i 1)z = (2*n-1)*P(n-1,x) - (n-1)*P(n-2,x)/n;return z;4-1 計算存款利息-genlib (10分)答案:int main(void) int money, year;double interest, rate;scanf(%d, &money);scanf(%d, &

15、year);scanf(%lf, &rate);interest = money * pow(1+rate,year) - money; printf(interest = %.2fn, interest); return 0;4-2 彈球距離 (15分)答案:double dist( double h, double p )double d=h;while(p!=0)h=p*h;if(hTOL)break;d=d+2*h;return d;四、編程題單詞長度 (20分)答案:#include #include int main()char a1000;int i, n = 0, k, t =

16、 0;for (i = 0; i+)scanf(%c, &ai);if (ai = .)break;k = i;for (i = i - 1; i = 0; i-)if (ai = )t+;else break;for (i = 0; i = k; i+)if (ai = .)if (n != 0)printf(%d, n);printf(n);break;if (ai = )if (n != 0)printf(%d, n);n = 0;if (i k - t)printf( );elsen+;return 0;掉入陷阱的數(shù)字 (20分)答案:#include int main()int n1

17、000, s1000, i, t;scanf(%d, &n0);for (i = 1; i 0)si - 1 += t % 10;t /= 10;ni = 3 * si - 1 + 1;printf(%d:%dn, i, ni);if (ni = ni - 1)break;return 0;九宮格輸入法 (20分)答案:#include #includeint main()char *key10 = 0 , 1,.?!, 2ABC, 3DEF,4GHI, 5JKL, 6MNO,7PQRS, 8TUV, 9WXYZ;int length10;for (int i = 0; i10; i+)len

18、gthi = strlen(keyi);char ch;char p;int count = 0;doch = getchar();if (ch != &ch != n)p = ch;count+;elseputchar(keyp - 0(count - 1) % lengthp - 0);count = 0; while (ch != n);return 0;算術入門之加減乘除 (20分)答案:#include main()int a, b, r1, r2, r3, r41, c;float r42;scanf(%d %d, &a, &b);r1 = a + b;r2 = a - b;r3

19、= a*b;printf(%d + %d = %dn%d - %d = %dn%d * %d = %dn, a, b, r1, a, b, r2, a, b, r3);c = a%b;if (c = 0)r41 = a / b;printf(%d / %d = %d, a, b, r41);elser42 = (float)a / b;printf(%d / %d = %.2f, a, b, r42);return 0;人民幣兌換 (20分)答案:#include main()int n, n5, n2, n1;scanf(%d, &n);for (n5 = 1; n5 = 0; n2-)n1

20、 = 100 - n5 - n2;if (5 * n5 + 2 * n2 + n1 = 150)printf(%d %d %dn, n5, n2, n1);return 0;求n以內最大的k個素數(shù)以及它們的和 (20分)答案:#include int fun(int x)int i;if (x = 0 | x = 1)return 0;if (x = 2)return 1;for (i = 2; i*i = 1; j-)if (fun(j)if (t)printf(%d, j); t = 0;elseprintf(+%d, j);s += j;k-;if (k = 0)break;printf

21、(=%d, s);return 0;編程打印空心字符菱形 (20分)答案:#include main()char ch;int j, j1, i, k, t;scanf(%c %d, &ch, &j);j1 = (j + 1) / 2;if (j = 1)printf(%c, ch);elsefor (i = 1; i = j1 - 1; i+)printf( );printf(%cn, ch);for (i = 2; i = j1; i+)for (k = 1; k = j1 - i; k+)printf( );printf(%c, ch + i - 1);for (k = 1; k = (

22、2 * i - 3); k+)printf( );printf(%cn, ch + i - 1);for (i = j1 + 1; i = j - 1; i+)t = 2 * j1 - i;for (k = 1; k = j1 - t; k+)printf( );printf(%c, ch + t - 1);for (k = 1; k = (2 * t - 3); k+)printf( );printf(%cn, ch + t - 1);for (i = 1; i = j1 - 1; i+)printf( );printf(%c, ch);到底有多二 (20分)答案:#include #inc

23、lude main()char N51;int len, i, t=0;float d = 100, b;scanf(%s, N);if (N0 = -)d *= 1.5;len = strlen(N) - 1;if (Nlen % 2 = 0)d *= 2;for (i = 1; i len + 1; i+)if (Ni = 2)t+;elselen = strlen(N);if (Nlen - 1 % 2 = 0)d *= 2;for (i = 0; i len; i+)if (Ni = 2)t+;b = (float)t / len;d *= b;printf(%.2f%, d);ret

24、urn 0;奇偶分家 (20分)答案:#include main()int N, n1000, i, a, b = 0;scanf(%d, &N);for (i = 0; i N; i+)scanf(%d, &ni);for (i = 0; i N; i+)if (ni % 2 = 0)b+;a = N - b;printf(%d %d, a, b);return 0;后天 (20分)答案:#include main()int D, DT;scanf(%d, &D);if (D = 1 & D = 5)DT = D + 2;else DT = D - 5;printf(%d, DT);retu

25、rn 0;正整數(shù)A+B (20分)答案:#include #include main() char str11100, str21100; scanf(%s,str1); getchar(); gets(str2); int len1=strlen(str1), len2=strlen(str2); int flag1=1, flag2=1; if(len14) flag1=0; else for(int i=0;str1i;i+) if(str1i9) flag1=0;break; if(len24) flag2=0; else for(int i=0;str2i;i+) if(str2i9

26、) flag2=0;break; int sum1, sum2; if(flag1=1) sum1=0; for(int i=0;str1i;i+) sum1=sum1*10+(str1i-0); if(sum11000) flag1=0; if(flag2=1) sum2=0; for(int i=0;str2i;i+) sum2=sum2*10+(str2i-0); if(sum21000) flag2=0; if(flag1=1&flag2=1) printf(%d + %d = %dn,sum1,sum2,sum1+sum2); else if(flag1=1&flag2=0) pri

27、ntf(%d + ? = ?n,sum1); else if(flag1=0&flag2=1) printf(? + %d = ?n,sum2); else printf(? + ? = ?n); return 0;判斷素數(shù) (20分)答案:#include #include main()int N, i, flag;long long n;scanf(%d, &N);while (N-)scanf(%lld, &n);flag = 1;if (n = 0 | n = 1) flag = 0;else if (n = 2) flag = 1;else for (i = 2; i = sqrt(

28、n); i+)if (n % i = 0)flag = 0; break;if (flag) printf(Yesn);else printf(Non);return 0;到底是不是太胖了 (20分)答案:#include #include main()int N, H20, W20, i;float WS20;scanf(%d, &N);for (i = 0; i N; i+)scanf(%d, &Hi);scanf(%d, &Wi);for (i = 0; i N; i+)WSi = (Hi - 100)*0.9 * 2;if (fabs(Wi - WSi) WSi)printf(You

29、are tai pang le!n);else printf(You are tai shou le!n);return 0;小于m的最大的10個素數(shù) (20分)答案:#include #include main()int m, i, j, t, flag;scanf(%d, &m);t = m - 1;for (i = 1; i = 10; t-)flag = 1;if (t = 0 | t = 1) flag = 0;else if (t = 2) flag = 1;else for (j = 2; j = sqrt(t); j+)if (t % j = 0)flag = 0; break

30、;if (flag)printf(%6d, t); i+;return 0;輸出水仙花數(shù) (20分)答案:#include int fun(int x)int i, j, digit, power, powerSum, integer, n, flag;n = 0;integer = x;while (integer 0)integer = integer / 10;n+;powerSum = 0;integer = x;for (i = 0; i n; i+)digit = integer % 10;integer = integer / 10;power = 1;for (j = 0; j

31、 n; j+)power = power*digit;powerSum = powerSum + power;if (powerSum = x)flag = 1;elseflag = 0;return flag;main()int k;for (k = 100; k = 999; k+)if (fun(k)printf(%dn, k);return;計算階乘和 (20分)答案:#include int fact(int x)int i, f = 1;for (i = 1; i = x; i+)f *= i;return f;main()int N, S = 0, j;scanf(%d, &N)

32、;for (j = 1; j = N; j+)S += fact(j);printf(%d, S);return 0;跟奧巴馬一起畫方塊 (20分)答案:#include main()int N, M, i, j;char ch;scanf(%d %c, &N, &ch);M = (N + 1) / 2;for (i = 1; i = M; i+)for (j = 1; j = N; j+)printf(%c, ch);printf(n);return 0;查驗身份證 (20分)答案:#include main()int weight17 = 7, 9, 10, 5, 8, 4, 2, 1,

33、6, 3, 7, 9, 10, 5, 8, 4, 2 ;char M12 = 1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2 ;int N, i, j, l, flag = 1;char id19;scanf(%dn, &N);for (i = 1; i = N; i+)scanf(%s, id);int s = 0;for (j = 0; j 17; j+)s += (idj - 0)*weightj;if (Ms % 11 != id17)printf(%sn, id);flag = 0;if (flag) printf(All passed);return 0;出生年 (

34、20分)答案:#include int main() int y, n, y0, i;int num4, all10;scanf(%d %d, &y, &n);y0 = y;while (1) for (i = 0; i 10; i+)alli = 0;num0 = y / 1000;num1 = y / 100 % 10;num2 = y / 10 % 10;num3 = y % 10;for (i = 0; i 4; i+) allnumi+;int sum = 0;for (i = 0; i 10; i+)if (alli) sum+;if (sum = n)break;y+;printf(%d %04dn, y - y0, y);return 0;A除以B (20分)答案:#include int main() int A, B;float r;scanf(%d %d, &A, &B);if (B 0)r = (float)A / B;printf(%d/%d=%.2f, A, B, r);else if (B 0)r = (float)A / B;printf(%d/(%d)=%.2f, A, B, r);else printf(%d/0=Error, A);return 0;尋找250 (20分)答案:#include

溫馨提示

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

評論

0/150

提交評論