最新TPA部分試題_第1頁
最新TPA部分試題_第2頁
最新TPA部分試題_第3頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、算法與程序設(shè)計(jì)PTA習(xí)題集第4周本題目要求計(jì)算下列分段函數(shù)f(x)的值:輸入格式:輸入在一行中給出實(shí)數(shù)x。都保留一位小數(shù)。輸出格式:在一行中按“ f(x) = result”的格式輸出,其中x與result輸入樣例1: 10輸出樣例 1:f(10.0) = 0.1輸入樣例2: 0輸出樣例2: f(0.0) = 0.0#i nclude<stdio.h>int main()float x,result;sca nf("%f", &x);if (x=0)result=0;elseresult=1.0/x;prin tf("f(%.1f) = %.1

2、f",x,result);return 0;編寫一個(gè)程序,要求用戶輸入 24小時(shí)制的時(shí)間,然后顯示 12 小時(shí)制的時(shí)間。 輸入格式:輸入在一行中給出帶有中間的 :符號(半角的冒號) 的 24小時(shí)制的時(shí)間, 如 12:34 表示 12 點(diǎn) 34 分。當(dāng)小時(shí)或分鐘數(shù)小于 10 時(shí),均沒有前導(dǎo)的零,如 5:6 表示 5 點(diǎn)零 6 分。 提示: 在 scanf 的格式字符串中加入 : ,讓 scanf 來處理這個(gè)冒號。輸出格式: 在一行中輸出這個(gè)時(shí)間對應(yīng)的 12 小時(shí)制的時(shí)間,數(shù)字部分格式與輸入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串 PM如5:6 PM表示下午5點(diǎn)

3、零 6 分。注意,在英文的習(xí)慣中, 中午 12 點(diǎn)被認(rèn)為是下午, 所以 24 小時(shí)制的 12:00 就是 12小時(shí)制的12:0 PM ;而0點(diǎn)被認(rèn)為是第二天的時(shí)間,所以是 0:0 AM。輸入樣例: 21:11輸出樣例: 9:11 PM#include<stdio.h>int main()int a,b;scanf("%d:%d",&a,&b); if(a>12)printf("%d:%d",a-12,b);if(a=12)printf("%d:%d",a,b);if(a<12)printf(&q

4、uot;%d:%d AM",a,b);elseprintf(" PM",a,b);return 0;給定平面上任意三個(gè)點(diǎn)的坐標(biāo) (x1,y1) 、 (x2,y2) 、 (x3,y3) ,檢驗(yàn)它們能否構(gòu)成三角形。輸入格式 :輸入在一行中順序給出六個(gè) - 100,100 范圍內(nèi)的數(shù)字,即三個(gè)點(diǎn)的坐標(biāo)x1、y1、x2、 y2、 x3、 y3。輸出格式 : 若這 3 個(gè)點(diǎn)不能構(gòu)成三角形,則在一行中輸出“ Impossible ”;若可以,則在一 行中輸出該三角形的周長和面積,格式為“ L = 周長 , A = 面積”,輸出到小數(shù)點(diǎn)后 2 位。輸入樣例 1: 4 5 6 9

5、 7 8輸出樣例 1: L = 10.13, A = 3.00輸入樣例 2: 4 6 8 12 12 18輸出樣例 2: Impossible#include<stdio.h>int main()int a,b,c;scanf("%d %d %d",&a,&b,&c); if(a+b>c)&&(b+c>a)&&(a+c>b)printf("YES");elseprintf("NO");return 0;輸入一個(gè)年份,判斷其是否為閏年,若是閏年輸出“

6、yes”的信息,否則輸出“no”的信息。輸入格式 :直接輸入一個(gè) 4 位數(shù)年份,沒有其它任何附加字符。輸出格式:直接輸出“yes”或“n o”,沒有其它任何附加字符。輸入樣例 :1900 輸出樣例 :no輸入樣例 :2000 輸出樣例 :yes輸入樣例 :1904 輸出樣例 :yes#include<stdio.h>int main()int a;scanf("%d",&a);if(a%4=0&&a%100!=0|a%400=0) printf("yesn");else printf("non");

7、return 0;輸入三個(gè)整數(shù) x,y,z ,請把這三個(gè)數(shù)由小到大輸出。輸入格式 : 在一行中直接輸入 3 個(gè)整數(shù),之間各用一個(gè)空格間隔。最大值、次大輸出格式:在一行中按照"x=最小值 y次小值,z=最大值”的順序輸出結(jié)果, 值和最小值均原樣輸出,沒有寬度控制。輸入樣例 :2 1 3 輸出樣例 : x=1,y=2,z=3#include<stdio.h>int main()int x,y,z,temp;scanf("%d %d %d",&x,&y,&z,&temp);if(x>y) temp=x,x=y,y=tem

8、p;if(x>z) temp=x,x=z,z=temp;if(y>z) temp=y,y=z,z=temp; printf("x=%d,y=%d,z=%d",x,y,z);return 0;第5周本題要求編寫程序?qū)⒁粋€(gè)百分制成績轉(zhuǎn)換為五分制成績。轉(zhuǎn)換規(guī)則: 大于等于90分為A;小于90且大于等于80為B; 小于80且大于等于70為C;小于70且大于等于60為D;* 小于60為E。輸入格式:輸入在一行中給出一個(gè)整數(shù)的百分制成績。輸出格式:在一行中輸出對應(yīng)的五分制成績。輸入樣例:90輸出樣例:A#i nclude<stdio.h>int main()in

9、t a,ch;sca nf("%d",&a);if(a>90|a=90)ch='A'else if(a>80|a=80)ch='B'else if(a>70|a=70)ch=C;else if(a>60|a=60)ch='D'elsech='E'prin tf("%c",ch);return 0;中國有句俗語叫“三天打魚兩天曬網(wǎng)”。假設(shè)某人從某天起,開始“三天打魚兩天曬網(wǎng)”, 問這個(gè)人在以后的第 N 天中是“打魚”還是“曬網(wǎng)”?輸入格式: 輸入在一行中給出一個(gè)

10、不超過 1000 的正整數(shù) N。輸出格式:在一行中輸出此人在第 N天中是"Fishing ” (即"打魚”)還是"Drying ” (即 “曬網(wǎng)”),并且輸出“ in day N ”。輸入樣例 1: 103輸出樣例 1: Fishing in day 103輸入樣例 2: 34輸出樣例 2: Drying in day 34#include<stdio.h>int main()int N;scanf("%d",&N);if(N%5=4|N%5=0)printf("Drying in day %d",N);

11、elseprintf("Fishing in day %d",N);return 0;本題要求編寫一個(gè)簡單計(jì)算器程序,可根據(jù)輸入的運(yùn)算符,對 2 個(gè)整數(shù)進(jìn)行加、減、乘、除 或求余運(yùn)算。題目保證輸入和輸出均不超過整型范圍。輸入格式: 輸入在一行中依次輸入操作數(shù)1、運(yùn)算符、操作數(shù) 2,其間以 1 個(gè)空格分隔。操作數(shù)的數(shù)據(jù)類型為整型,且保證除法和求余的分母非零。輸出格式: 當(dāng)運(yùn)算符為 +、-、*、/ 、%時(shí),在一行輸出相應(yīng)的運(yùn)算結(jié)果。若輸入是非法符號(即除了加、減、乘、除和求余五種運(yùn)算符以外的其他符號)則輸出ERROR輸入樣例 1: -7 / 2輸出樣例 1: -3輸入樣例 2:

12、3 & 6 輸出樣例 2: ERROR#include <stdio.h>int main()int x,y;char ch;scanf("%d %c %d", &x, &ch, &y);switch(ch)case '+':printf("%dn",x+y);break;case '-':printf("%dn", x-y);break;case '*':printf("%dn", x*y);break;case '

13、;/':printf("%dn", x/y);break;case '%':printf("%dn", x%y);break;default:printf("ERRORn");break;return 0;股票價(jià)格漲跌趨勢,常用蠟燭圖技術(shù)中的K線圖來表示,分為按日的日K線、按周的周K線、按月的月K線等。以日K線為例,每天股票價(jià)格從開盤到收盤走完一天,對應(yīng)一根蠟燭 小圖,要表示四個(gè)價(jià)格:開盤價(jià)格Open (早上剛剛開始開盤買賣成交的第1筆價(jià)格)、收盤價(jià)格 Close (下午收盤時(shí)最后一筆成交的價(jià)格)、中間的最高價(jià)

14、 High 和最低價(jià) Low。如果Close<<<Open,表示為"BWASolid "(即"實(shí)心藍(lán)白蠟燭”);如果Close>»Open,表示為“R -Hol low"(即"空心紅蠟燭”);如果 Open等于Close,則為“R -Cross"(即"十字紅蠟燭”)。如果Low比Open和Close低,稱為"Lower Shadow (即"有下影線”), 如果High比Open和Close高,稱為"Upper Shadow (即"有上影線”)。請編程序

15、,根 據(jù)給定的四個(gè)價(jià)格組合,判斷當(dāng)日的蠟燭是一根什么樣的蠟燭。輸入格式:輸入在一行中給出 4 個(gè)正實(shí)數(shù),分別對應(yīng) Open、 High 、 Low、 Close ,其間以空格分隔。輸出格式: 在一行中輸出日 K 蠟燭的類型。如果有上、下影線,則在類型后加上with 影線類型。如果兩種影線都有,則輸出with Lower Shadow and Upper Shadow 。輸入樣例 1:5.110 5.250 5.100 5.105輸出樣例 1: BW-Solid with Lower Shadow and Upper Shadow輸入樣例 2:5.110 5.110 5.110 5.110輸出樣

16、例 2: R-Cross輸入樣例 3:5.110 5.125 5.112 5.126輸出樣例 3: R-Hollow#include <stdio.h>#include <math.h>int main()double open, high, low, close; scanf("%lf%lf%lf%lf", &open, &high, &low, &close); if(close < open) printf("BW-Solid");else if(close > open) pri

17、ntf("R-Hollow");else if(fabs(close - open) = 0) printf("R-Cross");if(low < open && low < close) && (high > open && high > close) printf(" with Lower Shadow and Upper Shadown");else if(low < open && low < close) printf(&q

18、uot; with Lower Shadown");else if(high > open && high > close) printf(" with Upper Shadown");return 0;本題要求編寫程序計(jì)算某年某月某日是該年中的第幾天。輸入格式:輸入在一行中按照格式"yyyy/mm/dd” (即"年 /月/日”)給出日期。注意:閏 年的判別條件是該年年份能被 4整除但不能被 100整除、或者能被 400 整除。閏年的 2月有 29 天。輸出格式 : 在一行輸出日期是該年中的第幾天。輸入樣例 1: 2

19、009/03/02輸出樣例 1: 61輸入樣例 2: 2000/03/02輸出樣例 2: 62#include<stdio.h>int main()int day,month,year; scanf("%d/%d/%d",&year,&month,&day);int i;int sum;sum=day;for(i=1;i<month;i+)switch(i)case 1:sum+=31;break;case 3:sum+=31;break;case 5:sum+=31;break;case 7:sum+=31;break;case

20、8:sum+=31;break;case 10:sum+=31;break;case 12:sum+=31;break;case 4:sum+=30;break;case 6:sum+=30;break;case 9:sum+=30;break;case 11:sum+=30;break;case 2: if(year%4=0&&year%100!=0)|(year%400=0) sum+=29;else sum+=28;printf("%dn",sum);return 0;第6周三個(gè)球A、B、C,大小形狀相同且其中有一個(gè)球與其他球重量不同。找出這個(gè)不一樣的

21、球。輸入格式:輸入在一行中給出 3個(gè)正整數(shù),順序?qū)?yīng)球 A、B C的重量。輸出格式: 在一行中輸出唯一的那個(gè)不一樣的球。輸入樣例: 1 1 2 輸出樣例: C#include<stdio.h>int main()int a,b,c;char ch;scanf("%d %d %d",&a,&b,&c);if(a=b)ch='C'else if(a=c)ch='B'elsech='A'printf("%cn",ch);return 0;40 小時(shí),按正常工作時(shí)間計(jì)酬;1.5

22、倍計(jì)酬。員工按進(jìn)公司時(shí)間分為5 年以下的為新職工。新職工的正常某公司員工的工資計(jì)算方法如下:一周內(nèi)工作時(shí)間不超過 超出 40 小時(shí)的工作時(shí)間部分,按正常工作時(shí)間報(bào)酬的 新職工和老職工,進(jìn)公司不少于 5 年的員工為老職工,工資為 30元/小時(shí),老職工的正常工資為50 元/小時(shí)。請按該計(jì)酬方式計(jì)算員工的工資。輸入格式: 輸入在一行中給出 2 個(gè)正整數(shù), 分別為某員工入職年數(shù)和周工作時(shí)間, 其間以空 格分隔。輸出格式: 在一行輸出該員工的周薪,精確到小數(shù)點(diǎn)后 2 位。輸入樣例 1: 5 40 輸出樣例 1: 2000.00輸入樣例 2:3 50 輸出樣例 2:1650.00#include <

23、stdio.h>int main()int time,year;double money;scanf("%d%d",&year,&time);if(year>=5)if(time<=40)money=time*50;elsemoney=2000+(time-40)*50*1.5;elseif(time<=40)money=time*30;elsemoney=1200+(time-40)*30*1.5;printf("%.2lfn",money);return 0;輸入三個(gè)實(shí)數(shù),代表三條線段的長度。判斷這三條線段組成

24、的三角形是什么類型:等邊( equilateral triangle )、等腰( isosceles triangle )、不等邊( common triangle ) 或不能構(gòu)成三角形( not a triangle )。輸入格式 : 輸入三條線段的長度,輸入保證所有數(shù)據(jù)均大于0。輸出格式 : 輸出三角形的類型: 等邊( equilateral triangle )、等腰( isosceles triangle )、 不等邊( common triangle )或不能構(gòu)成三角形( not a triangle)。輸入樣例 :3 3 3 # 輸出樣例 :equilateral triangle

25、#include <stdio.h>int main()float a,b,c;scanf("%f %f %f",&a,&b,&c);if (a + b <= c | a + c <= b | b + c <= a)printf("not a trianglen");else if (a = b && b = c)printf("equilateral trianglen");else if (a = b | b = c | a = c)printf("i

26、sosceles trianglen");elseprin tf("com mon tria nglen");return 0;有一分段函數(shù)如下:-V3 -1(工 < -1)3x +1( 1蘭xWl)'嚴(yán)十5(l<x<10)5x + 31g(2x2-1)-13 (>10)根據(jù)輸入的x值,計(jì)算對應(yīng)的y值。輸入格式:輸入x。輸出格式:輸出y的值,保留兩位小數(shù)。#i nclude<stdio.h>#in clude<math.h>int main()double x,y;scan f("%lf"

27、, &x);if(x<-1)y=pow(x,3)-1;if(x>=-1 && x<=1)y=-3*x+1;if(x>1 && x<=10)y=3*exp(2*x-1)+5;if(x>10)y=5*x+3*log10(2*x*x-1)-13;prin tf("%.2f",y);return 0;第7周本題要求編寫程序,輸入 10 個(gè)字符,統(tǒng)計(jì)其中英文字母、空格或回車、數(shù)字字符和其他字 符的個(gè)數(shù)。輸入格式 :輸入為 10 個(gè)字符。最后一個(gè)回車表示輸入結(jié)束,不算在內(nèi)。輸出格式 : 在一行內(nèi)按照 lette

28、r = 英文字母個(gè)數(shù) , blank = 空格或回車個(gè)數(shù) , digit = 字字符個(gè)數(shù) , other = 其他字符個(gè)數(shù)的格式輸出。輸入樣例 :aZ &09 Az 輸出樣例 : letter = 4, blank = 3, digit = 2, other = 1 #include<stdio.h> int main()int l=0,b=0,d=0,o=0,i=1;char ch;scanf("%c",&ch); while(i<=10) if(ch>='a'&&ch<='z'

29、|ch>='A'&&ch<='Z')l+;else if(ch>='0'&&ch<='9')d+;else if(ch=' '|ch='n')b+;elseo+;scanf("%c",&ch);i+;printf("letter= %d, blank = %d, digit = %d, other = %d",l,b,d,o);return 0;本題要求編寫程序,找出給定一系列整數(shù)中的最小值。輸入

30、格式:輸入在一行中首先給出一個(gè)正整數(shù)nnn,之后是nnn個(gè)整數(shù),其間以空格分隔。輸出格式: 在一行中按照“ min = 最小值”的格式輸出 nnn 個(gè)整數(shù)中的最小值。輸入樣例: 4 -2 -123 100 0輸出樣例: min = -123#include<stdio.h>int main()int n,x,y,i=1,min;scanf("%d%d",&n,&x);min=x;while(i<n)scanf("%d",&y);if(min>y)min=y;elsemin=min;i+;printf(&qu

31、ot;min = %dn",min);return 0;本題要求計(jì)算給定的一系列正整數(shù)中奇數(shù)的和。輸入格式 : 輸入在一行中給出一系列正整數(shù),其間以空格分隔。當(dāng)讀到零或負(fù)整數(shù)時(shí),表示輸入結(jié)束,該數(shù)字不要處理。輸出格式 : 在一行中輸出正整數(shù)序列中奇數(shù)的和。輸入樣例 :8 7 4 3 70 5 6 101 -1輸出樣例 :116#include <stdio.h>int main()int n,sum=0; scanf("%d",&n);while(n>0) if(n%2=0) sum=sum;else sum=sum+n; scanf(&

32、quot;%d",&n); printf("%dn",sum);return 0;輸入若干學(xué)生成績, 以負(fù)數(shù)結(jié)束輸入。 計(jì)算所有學(xué)生的平均成績并統(tǒng)計(jì)成績在 80 到 90 分(不 含 90 )之間的人數(shù)。輸入格式 : 在一行輸入幾個(gè)百分制實(shí)型成績, 數(shù)據(jù)之間以一個(gè)空格間隔。 輸入負(fù)數(shù)結(jié)束輸入。輸出格式:在一行中按照“ ave=平均分,門=人數(shù)”的順序輸出結(jié)果,其中平均分要求保留兩 位小數(shù),人數(shù)是正整數(shù)。輸入樣例 :58 89 84 55 -1輸出樣例 : ave=71.50,n=2#include<stdio.h>int main()int x

33、,n=0,sum=0,i=0; scanf("%d",&x); while(x>=0)i+;if(x>=80&&x<90)n=n+1; sum=sum+x;scanf("%d",&x);printf("ave=%.2f,n=%dn",sum*1.0/i,n);return 0;對于給定的正整數(shù) N求它的位數(shù)及其各位數(shù)字之和。輸入格式:輸入在一行中給出一個(gè)不超過 109107109的正整數(shù)No輸出格式:在一行中輸出N的位數(shù)及其各位數(shù)字之和,中間用一個(gè)空格隔開。輸入樣例: 321 輸出樣例

34、: 3 6#include<stdio.h>int main()int n,x,i=0,sum=0;scanf("%d",&n);while(n!=0)sum=sum+n%10;n=n/10;i+;printf("%d %dn",i,sum);return 0;第8周以下程序統(tǒng)計(jì)輸入的一行字符中字母、數(shù)字、空格、其它字符的個(gè)數(shù)(行末以換行符結(jié) 束,最后的換行符不統(tǒng)計(jì)在內(nèi))。例如,輸入的一行字符為 aB 3* 則字母有 2 個(gè),數(shù)字 有 1 個(gè),空格有 1 個(gè),其它字符有 1 個(gè)。#include <stdio.h>int

35、main()int letters, digits, spaces, others;letters=0,digits=0,spaces=0,others=0;char ch;while(ch=getchar()!='n')if(ch>='a'&&ch<='z'|ch>='A'&&ch<='Z')letters+;else if(ch>='0'&&ch<='9')digits+;else if(ch=&

36、#39; '|ch='n')spaces+;elseothers+;printf("字母、數(shù)字、空格、其它字符分別有:%d %d %d %(個(gè)n",letters,digits,spaces,others);自然常數(shù)e可以用級數(shù)1+1/1!+1/2!+ ?+1/n!來近似計(jì)算。本題要求對給定的非負(fù)整數(shù)n,求該級數(shù)的前 n 項(xiàng)和。輸入格式:輸入第一行中給出非負(fù)整數(shù)n (w 1000)。輸出格式 : 在一行中輸出部分和的值,保留小數(shù)點(diǎn)后八位。輸入樣例 :10輸出樣例 :2.71828180#include<stdio.h>int main()

37、int n,i=1;double sum=1,a=1;scanf("%d",&n);while(i<=n)a=a*i;sum=sum+1/a;i+;printf("%.8f",sum);return 0;一只猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半, 還不過癮, 又多吃了一個(gè);第二天早上又 將剩下的桃子吃掉一半, 又多吃了一個(gè)。 以后每天早上都吃了前一天剩下的一半加一個(gè)。 到 第 N 天早上想再吃時(shí),見只剩下一個(gè)桃子了。問:第一天共摘了多少個(gè)桃子?輸入格式 :輸入在一行中給出正整數(shù) N(1<Nw10)。輸出格式 : 在一行中輸出第一天共

38、摘了多少個(gè)桃子。輸入樣例 :3 輸出樣例 :10#include<stdio.h>int main()int N,i;scanf("%d",&N);int sum=1;for(i=0;i<N-1;i+)sum=(sum+1)*2;printf("%dn",sum);return 0;給定兩個(gè)整數(shù) A和B,輸出從A到B的所有整數(shù)以及這些數(shù)的和。輸入格式:輸入在一行中給出 2個(gè)整數(shù)A和B,其中-100W AW BW 100,其間以空格分隔。輸出格式:首先順序輸出從 A到B的所有整數(shù),每5個(gè)數(shù)字占一行,每個(gè)數(shù)字占5個(gè)字符寬 度,向右對

39、齊。最后在一行中按Sum = X 的格式輸出全部數(shù)字的和 X。輸入樣例: -3 8輸出樣例:-3 -2 -1 0 12 3 4 5 67 8Sum = 30#include<stdio.h>int main()int a,b,i,sum=0,n=0;scanf("%d%d",&a,&b); for(i=a;i<=b;i+) sum=sum+i; printf("%5d",i); n+; if(n%5=0)printf("n");if(n%5!=0)printf("n");print

40、f("Sum = %dn",sum);return 0;n 次冪之和等于本 要求:輸出所有位所謂的水仙花數(shù)是指一個(gè) n位數(shù)(n>=3 && n<=7),它的每個(gè)位上的數(shù)字 身。例如,3位數(shù)153是水仙花,各位數(shù)字的立方和 1A3+5A3+3A3=153。 數(shù)為 3 的水仙花數(shù)。輸入格式 : 無 輸出格式 : 位數(shù)為 3 的所有水仙花數(shù),每行一個(gè)。輸入樣例 : 無輸出樣例 :153#include<stdio.h>int main()int i,a,b,c;for(i=100;i<1000;i+) a=i/100; b=(i/10

41、)%10; c=i%10;if(a*a*a+b*b*b+c*c*c)=i) printf("%dn",i);return 0;對于給定的正整數(shù)N需要你計(jì)算S=1!+2!+3!+.+N!。輸入格式: 輸入在一行中給出一個(gè)不超過 10 的正整數(shù) N。輸出格式: 在一行中輸出 S 的值。輸入樣例: 3 輸出樣例: 9#include<stdio.h>int main()int n,i=1,a=1,sum=0; scanf("%d",&n); while(i<=n)a=a*i; sum=sum+a; i+;printf("%d

42、",sum);return 0;第9周 本題要求兩個(gè)給定正整數(shù)的最大公約數(shù)和最小公倍數(shù)。輸入格式:輸入在一行中給出兩個(gè)正整數(shù)M和N (W 1000)。1 空格分隔。輸出格式:在一行中順序輸出 M和N的最大公約數(shù)和最小公倍數(shù),兩數(shù)字間以輸入樣例 :511 292 輸出樣例 : 73 2044 #include<stdio.h>int main()int m,n,i,j;scanf("%d %d",&m,&n); for(i=m;i>=1;i-) if(m%i=0&&n%i=0) break; for(j=m;j<

43、;=m*n;j+) if(j%m=0&&j%n=0) break;printf("%d %d",i,j);一對兔子, 從出生后第 3 個(gè)月起每個(gè)月都生一對兔子。 小兔子長到第 3 個(gè)月后每個(gè)月又生一 對兔子。 假如兔子都不死, 請問第 1 個(gè)月出生的一對兔子, 至少需要繁衍到第幾個(gè)月時(shí)兔子 總數(shù)才可以達(dá)到 N 對?輸入格式 : 輸入在一行中給出一個(gè)不超過 10000 的正整數(shù) N。輸出格式 : 在一行中輸出兔子總數(shù)達(dá)到 N 最少需要的月數(shù)。輸入樣例 :30 輸出樣例 : 9#include<stdio.h>int main()int N,i,a,

44、b,c; scanf("%d",&N); a=1,b=0,i=1; if(N=a) printf("%dn",a);else+i;c=a+b;while(c<N)+i;b=a;a=c; c=a+b;printf("%dn",i);所謂完數(shù)就是該數(shù)恰好等于除自身外的因子之和。例如:6=1+2+3,其中 1、2、3為 6的因子。本題要求編寫程序,找出任意兩正整數(shù)m和n之間的所有完數(shù)。輸入格式:輸入在一行中給出 2個(gè)正整數(shù)m和n (0<mcnW 10000),中間以空格分隔。格式輸出格式: 逐行輸出給定范圍內(nèi)每個(gè)完數(shù)的因

45、子累加形式的分解式, 每個(gè)完數(shù)占一行, 為“完數(shù)=因子1 +因子2 + . + 因子k”,其中完數(shù)和因子均按遞增順序給出。若區(qū) 間內(nèi)沒有完數(shù),則輸出“ None”。輸入樣例: 1 30輸出樣例:1 = 16 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14 #include<stdio.h>int main()int m,n,i,j,sum; scanf("%d%d",&m,&n); for(i=m;i<=n;i+)/ 判斷 i 是否為完數(shù) sum=1;for(j=2;j<=i/2;j+) if(i%j=0) su

46、m=sum+j; if(sum=i) printf("%d = 1",i);for(j=2;j<=i/2;j+) if(i%j=0) printf(" + %d",j); printf("n");return 0;面是一個(gè)完整的下三角九九口訣表:1*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=

47、427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=721*1=19*9=81本題要求對任意給定的一位正整數(shù)N,輸出從1*1到N*N的部分口訣表。輸入格式:輸入在一行中給出一個(gè)正整數(shù)N (I < NC 9)。輸出格式:輸出下三角N*N部分口訣表,其中等號右邊數(shù)字占4位、左對齊。輸入樣例: 4輸出樣例:1*1=11*2=22*2=41*3=32*3=6 3*3=91*4=42*4=8 3*4=12 4*4=16#incIude <stdi

48、o.h>int main()int i,j,n;scanf("%d",&n);for(i=1;i<=n;+i)for(j=1;j<=i;+j)printf("%d*%d=%-4d",j,i,i*j);printf("n");return 0;輸出斐波那契(Fibonacci )數(shù)列(1,1,2,3,5,8,13)的前 20項(xiàng)輸出格式 : 每個(gè)數(shù)輸出占 8 列。輸出樣例 :112 3 5 8 132134 5589144233 3776109871597#include<stdio.h>int ma

49、in()int i,f1,f2,f3;f1=1;f2=1;printf("%8d%8d",f1,f2);for(i=3;i<=20;i+)f3=f1+f2;f1=f2;f2=f3; printf("%8d",f3); if(i%20=0) putchar('n');return 0;第 10 周本題要求對兩個(gè)整數(shù) a和b,輸出其中較大的數(shù)。函數(shù)接口定義: int max( int a, int b );其中 a 和 b 是用戶傳入的參數(shù),函數(shù)返回的是兩者中較大的數(shù)。輸入樣例: -5 8 輸出樣例: max = 8#include&l

50、t;stdio.h>int max(int x, int y)int z;if (x>y)z=x;elsez=y;return(z);int main()int a,b,c; c=max(a,b);scanf("%d %d", &a, &b);printf("max = %dn", max(a, b);return 0;本題要求實(shí)現(xiàn)一個(gè)計(jì)算兩個(gè)數(shù)的最大公約數(shù)的簡單函數(shù)。 函數(shù)接口定義: int gcd( int x, int y );其中 x 和 y 是兩個(gè)正整數(shù),函數(shù) gcd 應(yīng)返回這兩個(gè)數(shù)的最大公約數(shù)。 輸入樣例: 32

51、72 輸出樣例: 8#include<stdio.h> int gcd(int x,int y)int i;精品文檔for(i=y;i>=1;i-)if(x%i=0&&y%i=0)return i;int main()int a,b;scanf("%d%d",&a,&b);printf("%d",gcd(a,b);return 0;本題要求實(shí)現(xiàn)一個(gè)計(jì)算非負(fù)整數(shù)階乘的簡單函數(shù), 使得可以利用該函數(shù), 計(jì)算 1!+2!+ ? +10! 的值。函數(shù)接口定義: double fact( int n );其中 n

52、是用戶傳入的參數(shù),其值不超過 10。如果 n 是非負(fù)整數(shù),則該函數(shù)必須返回 n 的階 乘。輸入樣例: 本題沒有輸入。輸出樣例: 1!+2!+.+10! = 4037913.000000#include<stdio.h>double fact( int n )int i,a,sum;while(i<=n)a=a*i;sum=sum+a;i+;return i;int main()int i;double sum;sum = 0;for(i = 1; i <= 10; i+)sum = sum + fact(i);printf("1!+2!+.+10! = %fn

53、", sum);return 0;fun函數(shù)的功能是:找出大于m的最小素?cái)?shù),并將其作為函數(shù)值返回。函數(shù)接口定義: int fun( int m);并將其作為函函數(shù)fun中m是用戶傳入的參數(shù),函數(shù)fun的功能是找出大于 m的最小素?cái)?shù), 數(shù)值返回。輸入樣例: 10輸出樣例: 11#include<stdio.h>int fun( int m)int i,j,fun;for(i=m+1;i>m;i+)for(j=2;j<i;j+)if(i%j!=0)fun=i;return fun;int main()int n;scanf("%d",&

54、n);printf("%dn",fun(n);return 0;0. 要求在主編寫函數(shù), 判斷指定的字符是否是數(shù)字字符, 如果是函數(shù)返回 1,否則函數(shù)返回 調(diào)函數(shù)中輸入該字符,調(diào)用函數(shù)并輸出判斷結(jié)果。輸入格式 :在一行中給出 1 個(gè)字符。輸出格式 : 對于給定輸入的字符,輸出判斷結(jié)果 yes 或 no。輸入樣例 : 6 輸出樣例 : yes輸入樣例 : H 輸出樣例 : no#include<stdio.h>int s( char a)int s;if(a>='0'&&a<='9')s=1;elses=

55、0;return s;int main()char b;int c;scan f("%ch",&b);c=s(b);if(c=1)prin tf("yesn");elseprin tf(" non");return 0;編寫函數(shù),計(jì)算下面分段函數(shù)的值。(x 5 2)(-2 < x < 3).(X > 3)-e2x+1 + 32x 12Zog0(3 尤 + 5) 11輸入格式:輸入一個(gè)實(shí)數(shù)x的值輸出格式:輸出y的結(jié)果值輸入樣例:0 輸出樣例:y=-1.000000 輸入樣例:3.5輸出樣例 : y=-8.619

56、337#include<stdio.h>#include<math.h> double hanshu( double x ) double t;if(x<=-2)t=-exp(2*x+1)+3;if(x<=3&&x>-2)t=2*x-1;if(x>3)t=2*log10(3*x+5)-11;return t;int main()double x;scanf("%lf",&x);printf("y=%.6lf",hanshu(x);return 0;第 11 周本題要求實(shí)現(xiàn)一個(gè)函數(shù),

57、可統(tǒng)計(jì)任一整數(shù)中某個(gè)位數(shù)出現(xiàn)的次數(shù)。 例如-21252 中,2 出現(xiàn)了 3 次,則該函數(shù)應(yīng)該返回3 。函數(shù)接口定義: int Count_Digit ( const int N, const int D );其中N和D都是用戶傳入的參數(shù)。N的值不超過int的范圍;D是0, 9區(qū)間內(nèi)的個(gè)位數(shù)。函數(shù)須返回N中D出現(xiàn)的次數(shù)。輸入樣例: -21252 2輸出樣例: 3#include <stdio.h>int Count_Digit ( const int N, const int D );int main()int N, D;scanf("%d %d", &N

58、, &D);printf("%dn", Count_Digit(N, D);return 0;int Count_Digit ( const int N, const int D )int i=0,s=N;if(N<0) s=-N;if(N=0)if(D=0)i=1;elsei=0; while(s>0)if(s%10=D)i+; s=s/10;return i;的值。的值。本題要求實(shí)現(xiàn)一個(gè)計(jì)算非負(fù)整數(shù)階乘的簡單函數(shù), 并利用該函數(shù)求 1!+2!+3!+.+n! 函數(shù)接口定義:double fact( int n );double factsum( int n );函數(shù) fact 應(yīng)返回 n 的階乘,建議用遞歸實(shí)現(xiàn)。函數(shù) factsum 應(yīng)返回 1!+2!+.+n! 題目保證輸入輸出在雙精度范圍內(nèi)。輸入樣例 1: 10輸出樣例 1:fact(10) = 3628800sum = 4037913輸入樣例 2: 0輸出樣例 2:fact(0) = 1sum = 0#include <stdio.h>doub

溫馨提示

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

最新文檔

評論

0/150

提交評論