山科大C語言不完全題庫_第1頁
山科大C語言不完全題庫_第2頁
山科大C語言不完全題庫_第3頁
山科大C語言不完全題庫_第4頁
已閱讀5頁,還剩304頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ProblemA:兩整數(shù)相加減TimeLimit:1SecMemoryLimit:2MB

Submit:2320Solved:1304

[Submit][Status][WebBoard]Description計(jì)算a+b和a-boInput輸入為一對(duì)整數(shù)a和b。a,b用空格分開。Output輸出a+b和a-b的計(jì)算結(jié)果,各占一行。SampleInput修SampleOutput3-1#include<stdio.h>intmain()(inta,b,c,d;scanf("%d%d',,&a,&b);c=a+b;

d=a-b;printf(H%d\n%d\n,,,c,d);}ProblemB:求圓的面積和周長TimeLimit:1SecMemoryLimit:2MB

Submit:6778Solved:2819

[Submit][Status][WebBoard]Description從鍵盤輸入圓的半徑,求圓的面積和周長,圓周率取3.14。Input輸入一個(gè)浮點(diǎn)型數(shù)據(jù),有效數(shù)字不會(huì)超過十進(jìn)制的6位。Output輸出為兩行。第一行為圓的面積,第二行為圓的周長,格式見sample。SampleInput3SampleOutputArea:28.260000Perimeter:18.840000HINT了解浮點(diǎn)類型的輸入、輸出和算術(shù)運(yùn)算符

#include<stdio.h>#defineM_PI3.14intmain()(doubler,s,l;scant('^ir.&r);s=M_PI*r*r;l=2*M_PI*r;printf("Area:%.6lf\n",s);printf("Perimeter:}ProblemC:立方體的體積TimeLimit:1SecMemoryLimit:2MB

Submit:2888Solved:1542

[Submit][Status][WebBoard]Description給出長方體的長、寬、高,求其體積。Input

輸入三個(gè)浮點(diǎn)數(shù),分別表示長方體的長、寬、高。Output輸出體積,不輸出無意義的0。SampleInput345SampleOutput60#include<stdio.h>intmain(){doublea,b,c,v;scant("%lf%lf%lf',5&a,&bJ&c);v=a*b*c;printf("%g",v);}ProblemD:三個(gè)數(shù)求和TimeLimit:1SecMemoryLimit:2MBSubmit:778Solved:587[Submit][Status][WebBoard]Description輸入3個(gè)整數(shù),求它們的累加和。Input3個(gè)用一個(gè)空格隔開的整數(shù)。Output輸入的3個(gè)整數(shù)的和。SampleInput123SampleOutput6#include<stdio.h>intmain()(inta,b,c,d;scant("%d%d%d",&a,&b,&c);d=a+b+c;printfC'%d",d);TimeLimit:1SecMemoryLimit:2MB

Submit:9315Solved:2684

[Submit][Status][WebBoard]Description計(jì)算兩整數(shù)X和y(0<x,y<1000)的和、差、積、商、余數(shù)、x的平方和y的三次方。Input輸入只有一行,格式見sample。Output輸出為多行,按順序每行輸出x,y的和、差、積、商、余數(shù)、x的平方和y的三次方,格式見sampleSampleInputx=11,y=3SampleOutputx+y:14x-y:8x*y:33x/yquotient:3,remainder:2xA2:121yA3:27HINT注意輸入輸出格式。了解c語言整數(shù)除法運(yùn)算符的特點(diǎn),并且沒有求累的運(yùn)算符。#include<stdio.h>intmain()intx,y,a,b,c,d,e,f,g;scant("%d%d",&x,&y);a=x+y;b=x-y;c=x*y;d=x/y;e=x%y;f=x*x;g=y*y*y;printf("x+y:%d\n",a);printf("x-y:%d\n",b);printf("x*y:%d\n",c);printf("x/yquotient:%d\n",d);printf("remainder:%d\n",e);printf("x八2:%d\n",f);printf("yA3:%d",g);

ProblemB:平均值TimeLimit:1SecMemoryLimit:2MB

Submit:5060Solved:2709

[Submit][Status][WebBoard]Description求3個(gè)數(shù)的平均值。Input輸入只有一行,為3個(gè)較小的整數(shù)。Output輸出為這3個(gè)整數(shù)的平均值,保留3位小數(shù)。SampleInput123SampleOutput2.000HINT注意除法運(yùn)算對(duì)整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)是不一樣的。#include<stdio.h>intmain()inta,b,c;floatave;scant("%d%d%d",&a,&b,&c);ave=(a+b+c)/3.0;printf(M%.3fH,ave);}ProblemC:奇數(shù)還是偶數(shù)?TimeLimit:1SecMemoryLimit:2MB

Submit:3612Solved:2699

[Submit][Status][WebBoard]Description輸入一個(gè)整數(shù),判讀它是奇數(shù)還是偶數(shù)。Input輸入只有一行,為一個(gè)100以內(nèi)的正整數(shù)。Output輸出為一行。若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”.SampleInput30SampleOutputevenHINT用整數(shù)運(yùn)算可以解決,練習(xí)“?:”表達(dá)式。#include<stdio.h>intmain()(inta;scantC'%dH,&a);if(a%2==0)printf("even");elseprintf("odd");}ProblemA:按格式輸出(填空)TimeLimit:1SecMemoryLimit:2MB

Submit:910Solved:598

[Submit][Status][WebBoard]Description給出部分程序如下,在橫線內(nèi)填入合適的內(nèi)容使這個(gè)程序按規(guī)定格式輸出:#include<stdio.h>intmain()

intx,y;floatf;scanf("%d%d%f',&x,&y,&f);printf("- );)Input分別輸入兩個(gè)整數(shù)和一個(gè)實(shí)數(shù)Output按如下格式輸出(其中實(shí)數(shù)保留兩位小數(shù)輸出,行尾沒有回車):x=10,y=20,f=3.40SampleInput10203.4SampleOutputx=10,y=20,f=3.40#include<stdio.h>intmain()(intx,y;floatf;scanf("%d%d%f',,&x,&y,&f);printf(',x=%d,y=%d,f=%.2f',Jx,y,f);

}ProblemB:貨幣兌換TimeLimit:1SecMemoryLimit:2MB

Submit:6422Solved:2465

[Submit][Status][WebBoard]Description給出人民幣對(duì)美元、歐元、日元的當(dāng)日匯率,求給定金額的人民幣能兌換成外幣的金額,求給定金額的外幣能兌換成人民幣的金額。要計(jì)算的外幣有三種:美元、歐元、日元。Input輸入有三行。第一行依次為美元、歐元、日元外幣匯率,用空格分開。匯率用100外幣為單位,精確到小數(shù)點(diǎn)后4位,如668.5200表示“100美元=668.5200人民幣”。匯率浮動(dòng)范圍為(0,10000)。第二行為外幣金額x,第三行為人民幣金額y。x,y均為整數(shù),且0<x,y<10000。Output輸出為兩行。第一行是金額為X的美元、歐元、日元兌換成人民幣的金額,用空格分開。第二行是金額為y的人民幣兌換成美元、歐元、日元的金額,用空格分開。所有金額精確到小數(shù)點(diǎn)后兩位。SampleInput668.5200908.06857.985215001500SampleOutput10027.8013621.03119.78224.38165.1918784.75HINT了解浮點(diǎn)數(shù)據(jù)類型的精確度和輸出控制。

include<stdio.h>intmain(){doublea,b,c;doublex;doubley;scanf("%lf%lf%ir,&a,&b,&c);scanf("%lf",&x);scanf("%lf",&y);printf(M%.2lf%.2lf%.2lf\n",x*0.01*a,x*0.01*b,x*0.01*c);printf("%.2lf%.2lf%.2lf\n",y/a*100,y/b*100,y/c*100);return0;}ProblemC:求字符的值TimeLimit:1SecMemoryLimit:2MBSubmit:3729Solved:2538

[Submit][Status][WebBoard]Description從鍵盤輸入3個(gè)字符(不含雙字節(jié)字符),分別輸出每個(gè)字符的十進(jìn)制值(ASCII碼)、八進(jìn)制值和十六進(jìn)制值。

Input輸入為3個(gè)字符。Output輸出為3行。每一行為每個(gè)字符(對(duì)應(yīng)輸入順序)的十進(jìn)制、八進(jìn)制和十六進(jìn)制值,用空格分隔開。每個(gè)輸出的值占3個(gè)字符,不足3個(gè)字符前面補(bǔ)0。SampleInput0ASampleOutput048060030032040020065101041HINT了解字符值的存儲(chǔ)和整型的關(guān)系。#include<stdio.h>intmain(){chara,b,c;scant("%c%c%cM,&a,&b,&c);printf("%.3d%.3o%.3x\n",a,a,a);printf(M%.3d%.3o%.3x\n',,b,b,b);printf("%.3d%.3o%.3x\n",c,c,c);

ProblemD:絕對(duì)值TimeLimit:1SecMemoryLimit:2MB

Submit:6976Solved:2511

[Submit][Status][WebBoard]Description求整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)的絕對(duì)值。Input輸入兩個(gè)數(shù),第一個(gè)是整數(shù),第二個(gè)是浮點(diǎn)數(shù)。Output輸出為兩行,第一行為整數(shù)的絕對(duì)值,第二行為浮點(diǎn)數(shù)的絕對(duì)值,注意浮點(diǎn)數(shù)的絕對(duì)值不輸出無意義的0。SampleInput-11SampleOutput1HINT求絕對(duì)值可以用標(biāo)準(zhǔn)庫函數(shù)來完成,也可以自己判斷。注意浮點(diǎn)數(shù)的輸出格式。求絕對(duì)值的函數(shù)在哪個(gè)頭文件?貌似很多人會(huì)搞錯(cuò),包括很多編書的人!#include<stdio.h>intmain()

intx;doubley;scant("%d%lf",&x,&y);(x>=0)?printf("%d\n",x):printf(,,%d\n,'J-x);(y>=0)?printf("%lgM,y):printfC'%lgH,-y);}ProblemE:對(duì)稱的點(diǎn)TimeLimit:1SecMemoryLimit:128MBSubmit:1154Solved:819

[Submit][Status][WebBoard]Description對(duì)于給定的一個(gè)平面直角坐標(biāo)系中的點(diǎn)p,輸出p關(guān)于X軸、y軸和原點(diǎn)對(duì)稱的點(diǎn)的坐標(biāo)。Input輸入2個(gè)實(shí)數(shù),分別是點(diǎn)p的x坐標(biāo)和y坐標(biāo)。Output輸出分為3行,分別是p關(guān)于x軸、y軸和原點(diǎn)對(duì)稱的點(diǎn)的x坐標(biāo)和y坐標(biāo)。SampleInput3.56.7SampleOutput3.5-6.7-3.56.7-3.5-6.7#include<stdio.h>intmain()(doublex,y;scant("%lf%lf",&x,&y);printf('f%lg%+lg\nM,x,-y);printf("%+lg%lg\n,',-x,y);printf("%+lg%+lg\n,',-x,-y);}ProblemF:簡單的打折計(jì)算TimeLimit:1SecMemoryLimit:2MBSubmit:5018Solved:2516[Submit][Status][WebBoard]Description商店規(guī)定:消費(fèi)滿n元,可以打八八折。設(shè)某件商品標(biāo)價(jià)m元,輸入購買的件數(shù)x,計(jì)算出需要支付的金額(單位:元),精確到分。Input輸入只有一行,三個(gè)整數(shù)m、n和x,K0<x<m<n<1000oOutput輸出金額,精確到分。SampleInput953004SampleOutput334.40HINT了解浮點(diǎn)型的輸出控制,注意整型和浮點(diǎn)型混合運(yùn)算過程中的數(shù)據(jù)類型轉(zhuǎn)換。#include<stdio.h>intmain()(intm,x,n,a;floatb;scanf("%d%d%d",&m,&n,&x);0<x&&x<m;x<m&&m<n;m<n&&n<1000;a=m*x;if(a>n)b=0.88*a;else

b=a;printf(',%.2f\n,',b);return0;}ProblemG:判斷閏年TimeLimit:1SecMemoryLimit:2MB

Submit:5510Solved:2645

[Submit][Status][WebBoard]Description輸入一個(gè)正整數(shù)的年份,判斷是否為閏年。Input輸入只有一行,為一個(gè)10000以內(nèi)的正整數(shù)。Output輸出為一行。若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出"No”。SampleInput2010SampleOutputNoHINT了解邏輯運(yùn)算符和關(guān)系運(yùn)算符。#include<stdio.h>intmain()(intyear;scanf("%d”,&year);((year%4==0)&&(year%100!=0))||(year%400==0)?printf("Yes'1):printf("No");}ProblemH:球的表面積與體積TimeLimit:1SecMemoryLimit:128MBSubmit:1905Solved:692

[Submit][Status][WebBoard]Description給定一個(gè)球體的直徑(非負(fù)數(shù)),求它的表面積和體積。Input輸入只有一個(gè)非負(fù)實(shí)數(shù),表示球體的直徑。Output輸出有2行,格式見樣例。其中等號(hào)(“=”)前后各有一個(gè)空格,輸出的結(jié)果保留6位小數(shù)。SampleOutputarea=12.566371volume=4.188790HINT在math.h中,定義了一個(gè)常量M_PI,它就是圓周率。如果你的結(jié)果不對(duì),試著包含這個(gè)頭文件并使用常量M_PI代替你程序中的圓周率。使用math.h中M_PI的程序在OJ上無法編譯通過,請(qǐng)自行定義M_PI為3.14159265358979323846,或者用三角函數(shù)計(jì)算M_P1的值,如:4*atan(1.0),-2*asin(-l).#include<stdio.h>#defineM_PI3.14159265358979323846intmain()(doublel,r,s,v;scant("%ir,&l);r=l/2;s=4*M_PI*r*r;v=4/3.0*M_PI*r*r*r;print!("area=%.6lf\n",s);printf("volume=%.6lf",v);

ProblemI:判斷是否是元音字母TimeLimit:1SecMemoryLimit:2MB

Submit:1769Solved:1141

[Submit][Status][WebBoard]Description輸入一個(gè)英文字母,判斷是否是元音字母。元音字母是:a,e,i,ou,A,E,I,O,UInput輸入一個(gè)英文字母Output是元音字母,輸出“yes”,否則輸出“no”,行尾沒有回車。SampleInputASampleOutputyes#include<stdio.h>voidmain()charc;c=getchar();switch(c)(case'a':case'e':case'i':case'o':case'u':case'A':caseE:caseT:case'O':case'U^printf("yes");break;default:printf("no");ProblemA:水仙花數(shù)TimeLimit:1SecMemoryLimit:2MB

Submit:5304Solved:2738

[Submit][Status][WebBoard]Description如果一個(gè)三位十進(jìn)制數(shù)等于其各位數(shù)字的立方和,則稱這個(gè)數(shù)為水仙花數(shù)。如:13+53+33=153.Input一個(gè)整數(shù)x,100<=x<=999.OutputX是水仙花數(shù),則輸出“YES”,否則為“NO”。SampleInput153SampleOutputYES#include<stdio.h>intmain()(intx,a,b,c;scant("%d",&x);b=x/10%10;c=x/100;if(a*a*a+b*b*b+c*c*c==x)printf("YES");elseprintf("NO");}ProblemB:三個(gè)數(shù)比較大小TimeLimit:1SecMemoryLimit:2MB

Submit:6006Solved:2629

[Submit][Status][WebBoard]Description從鍵盤上輸入。?100之間的三個(gè)數(shù),按從小到大的順序輸出。Input輸入只有一行,為三個(gè)整數(shù)。Output按從小到大輸出這三個(gè)數(shù)。SampleInput151020HINT用if語句判斷各種情況可以解決這個(gè)問題。include<stdio.h>intmain()(inta,b,c;scantC'%d%d%d",&a,&b,&c);if(a>=b)(if(b>=c)printf(u%d%d%d,',c,b,a);else{if(a>=c)printf("%d%d%d",b,c,a);elseprintf("%d%d%d",b,a,c);}else(if(b<c)printf("%d%d%d",a,b,c);else(if(a<c)printf("%d%d%d",a,c,b);elseprintff'%d%d%d",c,a,b);}}}ProblemC:輸出是m的倍數(shù)或n的倍數(shù)、但不是m和n的公倍數(shù)的數(shù);Description輸出1?k之間是m的倍數(shù)或n的倍數(shù)、但不是m和n的公倍數(shù)的數(shù),其中l(wèi)<=m,nvkvlOO,且m與n不相等。Input輸入三個(gè)整數(shù),依次為k、m、noOutput從小到大輸出符合題意的所有整數(shù),兩數(shù)之間用一個(gè)空格分開。SampleInput1523SampleOutput23489101415HINT難點(diǎn)在于輸出格式的控制:空格在數(shù)的中間,學(xué)會(huì)用循環(huán)時(shí)邊界情況的特殊處理。#include<stdio.h>intmain(){intk,m,n,i=0,j;scant("%d%dfor(j=1;j<=k;j++){if((j%m==0&&j%n!=0)||(j%m!=0&&j%n==0)){i++;if(i==1)

printfelseprintf("}}ProblemD:A+BProblemDescription計(jì)算a+b,0<=a,b<1000。Input輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開。Output每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(yīng)。SampleInput121020SampleOutput330HINTOJ系統(tǒng)上測(cè)試輸入結(jié)束符為EOF(EndOfFile),其值為-1。用scanf()把文件所有內(nèi)容讀完后,會(huì)讀到EOF,所以可以用來判斷輸入是否完成,測(cè)試時(shí)可以用Ctrl+Z產(chǎn)生EOF。本題解法參看FAQo

#include<stdio.h>intmain()(inta,b;while(scanf(H%d%d'1,&a,&b)!=EOF)printf(,'%d\n,',a+b);)ProblemA:GHacker的解謎過關(guān)游戲DescriptionGHacker最近癡迷于一個(gè)新上市的解謎游戲,其中一關(guān)的過關(guān)是破解一個(gè)字符串S。經(jīng)過3天的冥思苦想,GHacker成功的搞明白了這其中的奧秘,把串S中的整數(shù)取出來求和,就可以過關(guān)了。但是GHacker的數(shù)學(xué)實(shí)在糟糕。他無法在短暫的時(shí)間內(nèi)算出來,只好求助Jackie。Jackie觀察到雖然每次出現(xiàn)的數(shù)字不同,但是其它的符號(hào)并不會(huì)變化。于是Jackie編寫了一個(gè)非常短的程序,幫助GHacker把這一關(guān)過了。Input輸入為串s,只有一行。Output串S中用非數(shù)字(0-9)分隔開的非負(fù)整數(shù)之和,不會(huì)超出int類型的數(shù)據(jù)范圍。SampleInput'13?:[7514],54.487=="(438922x159??392)%032\n111cdef120$95;SampleOutput447899

HINTscanf()可以解決這個(gè)問題,注意轉(zhuǎn)義字符和格式控制字符。#include<stdio.h>intmain()(inta,b,c,d,e,f5g,h,i5j5k5s;scanf("%*c%d%*c%*c%*c%d%*c%*c%d%*c%d%*c%*c%*c%*c%d%*c%d%*c%*c%d%*c%*c%d%*c%*c%d%*c%*c%*c%*c%d%*c%d%*c,,,&a5&b,&c,&d,&e,&f,&g,&h5&iJ&j,&k);s=a+b+c+d+e+f+g+h+i+j+k;printf("%d”,s);}ProblemB:多少張鈔票Description客戶去商店買東西時(shí),不超過100美金的賬單喜歡用現(xiàn)金支付。商店喜歡用最少的鈔票給付客戶的找零。請(qǐng)你編寫一個(gè)程序幫助商店計(jì)算出:當(dāng)客戶買了x元商品給了一張100美元的鈔票后,商店應(yīng)該付給客戶多少張20美元、10美元、5美元和1美元的鈔票,使得鈔票總數(shù)最少。假設(shè)不存在其他面值的鈔票,也不會(huì)有幾角幾分的價(jià)格,商店的各種鈔票總是夠用

的。Input輸入一個(gè)整數(shù)x,0<x<100,Output按順序輸出20美金、10美金、5美金和1美金面值的鈔票張數(shù)。輸出格式見sample。SampleInput7SampleOutput$20bills:4$10bills:1$5bills:0$1bills:3HINT當(dāng)能支付大面值鈔票時(shí)不要支付更小面值的鈔票,才能滿足鈔票總數(shù)最少,注意scanf()格式的控制。#include<stdio.h>intmain(){intx,s,a,b,c,d;scanf("%dM,&x);s=100-x;a=s/20;b=(s-20*a)/10;c=(s-20*a-10*b)/5;d=s-20*a-10*b-c*5;

printf("$20bills:%d\n",a);printf("$10bills:%d\n",b);printf("$5bills:%d\n",c);printf("$1bills:%d\n",d);}ProblemC:自動(dòng)撥出電話的程序Description某外國銷售公司需耍向國內(nèi)的一些大型單位打電話推銷產(chǎn)品。這個(gè)公司的工作場(chǎng)景是這樣推銷員坐在自己電腦旁邊,通過一款自動(dòng)撥電話的軟件與客戶聯(lián)系。所有需要被撥打的電話號(hào)碼都事先存儲(chǔ)在服務(wù)器上,推銷員不需要每次都很麻煩的輸入客戶的電話號(hào)碼,當(dāng)推銷員點(diǎn)擊軟件里撥打的按鈕,下一個(gè)電話將會(huì)自動(dòng)撥出?,F(xiàn)在你需要編寫個(gè)程序來模擬這個(gè)自動(dòng)撥電話軟件的工作過程。電話號(hào)碼是按照中國的習(xí)慣存儲(chǔ)下來的,可能是從網(wǎng)站上抓取的,也可能是掃描的手寫件。不過它們都被按照這樣的格式存儲(chǔ)下來:(城市區(qū)號(hào))分區(qū)前綴-分機(jī)號(hào)比如青島的一個(gè)大型單位的某部電話是(0532)621-15486,是指如果在單位內(nèi)部直接撥打15486就行,在青島的其他地方要撥打62115486,而在北京要撥打053262115486。根據(jù)常識(shí),先撥0就是要轉(zhuǎn)外線,所以一般電話號(hào)碼的各個(gè)部分都不會(huì)以0開頭。你的程序可以把如上格式的電話號(hào)碼翻譯成一個(gè)只包含有數(shù)字的串,發(fā)送給電話機(jī)并撥出。值得注意的是中國的城市區(qū)號(hào)長度并不相同,比如北京是010。再有不同城市的電話號(hào)碼位數(shù)也不相同,并且不同單位根據(jù)內(nèi)部電話分機(jī)數(shù)目多少,有的可能只有3位分機(jī)號(hào)碼,有的可能分區(qū)前綴號(hào)會(huì)只有2位。但不管怎樣中國現(xiàn)在還沒有哪個(gè)城市的電話號(hào)碼超過十位數(shù)的。中國的國際區(qū)號(hào)是0086。這里不含像114這樣的特服電話。Input輸入只有一行,是符合“(城市區(qū)號(hào))分區(qū)前綴-分機(jī)號(hào)”規(guī)律的電話號(hào)碼,這里面除了英文字符“(”、“)”、“一”之外只有數(shù)字。Output輸出只有一行,是帶中國區(qū)號(hào)的能電話號(hào)碼。注意從國外打國內(nèi)的電話,城市區(qū)號(hào)前面的o是不用撥打的。比如中國青島的國際分區(qū)號(hào)是0086532。(0532)621-15486SampleOutput008653262115486HINT這是個(gè)可以用scanf()解決的問題,請(qǐng)注意電話號(hào)碼都是數(shù)字這個(gè)規(guī)律。#include<stdio.h>intmain(){inta,b,c;scanf("(O%d)%d-%d",&a,&b,&c);printf("0086%d%d%d",a,b,c);?ProblemD:求1+2+…+n=?Description給定一個(gè)n,求出s=l+2+3+...+n的值。Input輸入只有一行,包含一個(gè)正整數(shù)n(n<=232)。Output輸出一行,為l+2+...+n的值。

10SampleOutput55HINTn的數(shù)據(jù)范圍大,需注意數(shù)據(jù)類型的選擇和計(jì)算次序,以避免數(shù)據(jù)溢出。#include<stdio.h>intmain()unsignedlonglongintn,s,i;scanf("%llu",&n);if(n%2==0)s=n/2*(n+1);elses=(n+1)/2*n;printfC%llu",s);ProblemE:2的多少次募Description從鍵盤輸入一個(gè)數(shù)X,x是2的整數(shù)次基(x=2y),請(qǐng)編程求出y的值。Input一個(gè)非負(fù)有理數(shù)X,X在[0,2256]范圍內(nèi)。Output一個(gè)整數(shù)y。SampleInput1SampleOutput|HINT看起來數(shù)據(jù)很大,但是用double完全可以存儲(chǔ)。為什么?請(qǐng)研究下IEEE-754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)存儲(chǔ)格式。這里要用到C語言標(biāo)準(zhǔn)庫的數(shù)學(xué)函數(shù)。法一:#include<stdio.h>#include<math.h>intmain(){doublex,n;scant("%lf",&x);n=(log10(x))/(log10(2));printf("%d",(int)n);)法二:

#include<stdio.h>#include<math.h>intmain(){doublex,y;scant("%lf",&x);printf("%g",(sqrt)(x));)ProblemF:A+BProblem(II):Input/OutputPracticeDescription計(jì)算a+b,0<=a,b<1000。Input輸入的第一行是一個(gè)整數(shù)N,后面有N對(duì)整數(shù)a和b,每對(duì)a和b占一行,a,b用空格分開。Output每行輸出一個(gè)a+b的和,順序與輸入對(duì)應(yīng)。SampleInput2121020SampleOutput330HINT

N給出了測(cè)試樣例數(shù),用for循環(huán)處理方便。#include<stdio.h>intmain()(intN,i,j;scanf("%d",&N);inta[N][2];for(i=0;i<N;i++)(for(j=0;j<2;j++)scant("%d",&a[i][j]);}for(i=0;i<N;i++)printf("%d\n”,a皿}ProblemG:A+BProblem(III):Input/OutputPracticeDescription

計(jì)算a+b,0<=a,b<1000。Input輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開。當(dāng)測(cè)試樣為00時(shí)表示輸入結(jié)束,00不參與運(yùn)算。Output每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(yīng)。SampleInput12102000SampleOutput330HINT練習(xí)break的使用。#include<stdio.h>intmain(){inta,b;while。)〃永真(scanf("%d%d",&a,&b);if(a==0&&b==0)break;else

printf("%d\n",a+b);})ProblemH:A+BProblem(IV):Input/OutputPracticeDescription計(jì)算a+b,0<=a,b<1000。Input輸入有多對(duì)整數(shù)a和b組成,每對(duì)a和b占一行,a,b用空格分開。Output每行輸出一個(gè)a+b的值,順序與輸入對(duì)應(yīng)。每個(gè)格式樣例之間用一個(gè)空行分隔開。SampleInput1210201535SampleOutput33050HINT由于輸出的和比空行多一個(gè),所以全部計(jì)算放在一個(gè)循環(huán)里是不行的,必須要特殊處理開頭或者結(jié)尾。#include<stdio.h>intmain()

inta,b;while(scanf("%d%d",&a,&b)!=EOF)(printf("%d\n",a+b);printf("\n");}}ProblemI:n個(gè)數(shù)的最大值和最小值Description找出n個(gè)數(shù)中最大的數(shù)和最小的數(shù),并將它們的值輸出出來。Input輸入為n+l個(gè)整數(shù),都在int類型范圍內(nèi)。這些數(shù)可能用若干空格或者換行符分隔開。輸入的第1個(gè)數(shù)為n,表示后續(xù)有n個(gè)數(shù)輸入。從輸入的第2個(gè)數(shù)開始,求出直到第n+l個(gè)數(shù)中最大的數(shù)和最小的數(shù)。Output輸出為兩行,格式見sampleoSampleInput301-1SampleOutput

Themaximumnumberis1.Theminimumnumberis-1.HINT分隔符是空格還是回車都是空白符,對(duì)scanf("%d")來說沒有區(qū)別;先讀入n,然后用for循環(huán)就很容易控制讀入n個(gè)數(shù)的過程。#include<stdio.h>intmain(){inti,n,m,max,min;scant("%d%d',,&n,&max);min=max;for(i=1;i<n;i++)(scant("%d",&m);if(m>max)max=m;elseif(m<min)min=m;}printf("Themaximumnumberis%d.\nTheminimumnumberis max,min);}ProblemJ:成績的等級(jí)Description把百分制的考試成績轉(zhuǎn)換成五級(jí)制的成績:90?100:Excellent80?89:Good70?79:Average60?69:Pass0?59:Failing不在0?100之間的輸入是非法數(shù)據(jù),輸出“Error”。Input輸入多行,每行一個(gè)整數(shù)。Output輸入所對(duì)應(yīng)的成績等級(jí)。SampleInput-18192356872100SampleOutputErrorGoodExcellentFailingPassAverageExcellentHINT用switch語句解決這個(gè)問題比較方便。#include<stdio.h>intmain()intwhile(scant("%d",&n)!=EOF)if(n==100)printf("ExcellentXn");elseif(n<0||n>100)printf("ErrorXn");elseswitch(n/10){case9:printf("Excellent\n");break;case8:printf("Good\n");break;case7:printf("Average\n");break;case6:printf("Pass\n");break;default:printf(,,Failing\nM);}}}ProblemA:求100以內(nèi)的素?cái)?shù)Description素?cái)?shù)是只能被i和自身整除的正整數(shù),根據(jù)數(shù)學(xué)定義?不是素?cái)?shù)。素?cái)?shù)也叫質(zhì)數(shù)。

Input輸入為兩個(gè)整數(shù)m和n,滿足0v=m<=nv=100。Output從大到小輸出m?n之間的所有素?cái)?shù),一個(gè)素?cái)?shù)一行。如果m?n之間沒有素?cái)?shù),則不輸出任何數(shù)。輸出的所有數(shù)在兩行"===="之間。SampleInput212SampleOutput=====117532=====HINT利用素?cái)?shù)的數(shù)學(xué)規(guī)律可以很容易的解出此題,題目給出的數(shù)據(jù)范圍是關(guān)鍵。#include<stdio.h>intmain()(intm,n,i,j,k;scanf(M%d%d,',&m,&n);printf("=====\n'');for(i=n;i>=m;i-){ k=0;

for(j=1;j<i;j++)if(i%j==O)k++;if(k==1)printf(',%d\nH,i);}printf(,'=====,');}ProblemB:最接近的偶數(shù)(AppendCode)Description編寫一個(gè)函數(shù):intnearest(intn);用于求不大于n的最大偶數(shù),并作為函數(shù)的返回值進(jìn)行返回。Input是一個(gè)int范圍內(nèi)的整數(shù)n?Output輸出不大于n的最大偶數(shù)。5SampleOutputHINTAppendCodeappend.c,#include<stdio.h>intnearest(intn){if(n%2==0)n=n;elseif(n%2!=0)n=n-1;returnn;}intmain()intm,n;scanf("%d",&m);n=nearest(m);printf("%d",n);return0;}ProblemC:編寫函數(shù):求三個(gè)整數(shù)的最大值Description求三個(gè)整數(shù)的最大值。編寫一個(gè)函數(shù)maxValue。求三個(gè)整數(shù)的最大值。其原型為:intmaxValue(inta,intb,intc);功能:函數(shù)的三個(gè)參數(shù)傳入a,b,c的值,返回其中最大值。函數(shù)的調(diào)用格式見“AppendCode”。Input輸入三個(gè)int類型的整數(shù),兩兩之間用空格隔開。Output輸出三個(gè)整數(shù)的最大值。SampleInput123

HINT參看系統(tǒng)首頁上的“AppendCode”使用說明,討論版(WebBoard)上也有。AppendCode#include<stdio.h>intmaxValue(inta,intb,intc)(if(a>=b){if(b>=c)returna;else{if(a>=c)returna;elsereturnc;elseif(b<c)returnc;else{if(a<c)returnb;elsereturnb;}))intmain()intx,y,z;

scanf("%d%d%d”,&x,&y,&z);printf("%d",maxValue(x,y,z));return0;}ProblemD:編寫函數(shù):是否元音字母?(AppendCode)Description判斷給定的一個(gè)字符是否是元音字母(a,e,i,o,u)?用C語言實(shí)現(xiàn):叩pend.c中函數(shù)原型為intis_vocals(charc);功能:若c是元音字母返回1,否則返回0。用C++實(shí)現(xiàn):append.cc中函數(shù)原型為boolisVbcals(charc);功能:若C是元音字母返回true,否則返回falseo函數(shù)的調(diào)用格式見“AppendCode”。Input輸入一個(gè)字母。Output如果是一個(gè)元音字母,則輸出:Itisavocals.否則輸出:Itisnotavocals.SampleInputa

Itisavocals.HINT參看系統(tǒng)首頁上的“AppendCode”使用說明,討論版(WebBoard)上也有。AppendCodeappend.c,append.cc,ttinclude<stdio.h>intis_vocals(charc){if((c—a)11(c=*e*)11(c=H)11(c=,o,)11(c=,uJ)11(c—)11(c=='E')||(c='I')||(c='O')||(c='U'))return1;elsereturn0;)intmain(){charch;scanf&ch);printf(is_vocals(ch)?”Itisavocals.”:*Itisnotavocals."));return0;ProblemA:只有一個(gè)二元運(yùn)算符的表達(dá)式運(yùn)算Description編程序讀入并計(jì)算只有一個(gè)二元運(yùn)算符的表達(dá)式的值。用到的二元運(yùn)算符有:、“*”、“/"、“%”,與c語言的語法一致。Input每行輸入一個(gè)表達(dá)式,格式為:二個(gè)整型的操作數(shù)a和b,中間用一個(gè)符號(hào)分開,這個(gè)符號(hào)就是運(yùn)算符。測(cè)試樣例不存在除數(shù)為0的情況。輸入以a和b為0,且用一個(gè)空格分開結(jié)束。Output每行對(duì)應(yīng)輸入的運(yùn)算符為“+”、、“*”、“/"、“%”,則計(jì)算a+b、a-b、a*b、a/b、a%b的值;否則輸出“invalidop”。SampleInput33+58*92.21-617/39%300SampleOutput3872invalidop-550HINT教材上有非常相似的例題可以參考。方法

#include<stdio.h>intmain()(inta,b;charc;while(1)(scantC'%d%c%d",&a5&c,&b);if(a==0&&b==0&&c==32)break;elseif(c=='+')printf("%d\n",a+b);elseif(c=="-')printf("%d\n",a-b);elseif(c==,**)printf("%d\n",a*b);elseif(c==7')printf(',%d\n',Ja/b);elseif(c=='%')printf("%d\n”,a%b);elseprintf("invalidop\n");}}方法二:#include<stdio.h>intmain()(intm,n;charc;while(scanf("%d%c%d",&m,&c,&n)&&(n!=O||m!=O||c!=''))switch(c)caseprintf(''%d\rT,m+n);break;case,J:printf(',%d\n",m-n);break;caseprintf(',%d\n",m*n);break;case71:printf(',%d\n",m/n);break;caseprintf("%d\n",m%n);break;default:printf("invalidop\n");break;ProblemB:攝氏一一華氏溫度轉(zhuǎn)換表Description已知華氏溫度F,轉(zhuǎn)換為攝氏溫度C的公式為C=(F-32)*5/9o輸出給定范圍(從low到high)和步長(si印)的攝氏 華氏溫度轉(zhuǎn)換表Input第1行若為“C->F”表示輸出:攝氏一一華氏溫度轉(zhuǎn)換表,若為“F->C”表示輸出:華氏一攝氏溫度轉(zhuǎn)換表。第2、3行為兩個(gè)整數(shù):high和low,其值在-100至IJ200之間。第4行為step,step精確到小數(shù)點(diǎn)后1位。Output輸出第一行為C和F,分別表示攝氏和華氏,與小數(shù)點(diǎn)對(duì)齊。若輸出攝氏一一華氏溫度轉(zhuǎn)換表,則C在前、F在后;反之,則輸出華氏一一攝氏溫度轉(zhuǎn)換表。從輸出的第2行開始為從溫度low到溫度high(包括low和high)的轉(zhuǎn)換表,溫度輸出精確到小數(shù)點(diǎn)后1位,表格被分為兩個(gè)寬度相同的部分,其它的測(cè)試樣例也不會(huì)給出超出寬度的數(shù)據(jù),格式詳見sampleo

C->F-10402.5SampleOutputC->F-10.0->14.0-7.5->18.5-5.0->23.0-2.5->27.50.0->32.02.5->36.55.0->41.07.5->45.510.0->50.012.5->54.515.0->59.017.5->63.520.0->68.022.5->72.525.0->77.027.5->81.530.0->86.032.5->90.535.0->95.037.5->99.540.0->104.0HINT輸出格式可以通過sample分析出來,因?yàn)閮蓹诘目倢挾仁枪潭ǖ?。一個(gè)隱藏的陷阱是step是浮點(diǎn)數(shù),某些浮點(diǎn)數(shù)是無法精確存儲(chǔ)的,因此經(jīng)過一定量的計(jì)算后這個(gè)誤差會(huì)影響到浮點(diǎn)數(shù)的相等性判斷,需要加上精度控制。#include<stdio.h>intmain(){doublea,b,c,C,F,n;charx,y;scanf("%c->%c",&x,&y);if(x=='C'&&y=='F')(scanf(',%lf\n%lf\n%lfM,&a,&b,&c);printfC*C->RnprintfC*C->RnM);for(n=a;n<=b+0.01;n=n+c)F=n*9/5+32;printf("%5.1lf->%5.1lf\n",n,F);}}else(scanf(',%lf\n%lf\n%lf",&a,&b,&c);printf("F->C\nM);for(n=a;n<=b+0.01;n=n+c){C=(n-32)*5/9;printf("%5.1lf->%5.1lf\n',,n,C);}return0;ProblemC:輾轉(zhuǎn)相除法Description輾轉(zhuǎn)相除法,也稱歐幾里得算法,是求最大公約數(shù)的算法。輾轉(zhuǎn)相除法首次出現(xiàn)于歐幾里得的《幾何原本》(第VII卷,命題i和ii)中,而在中國則可以追溯至東漢出現(xiàn)的《九章算術(shù)》。兩個(gè)整數(shù)的最大公約數(shù)(亦稱公約數(shù))是能夠同時(shí)整除它們的最大的正整數(shù)。輾轉(zhuǎn)相除法基于如下原理:兩個(gè)整數(shù)的最大公約數(shù)等于其中較小的數(shù)和兩數(shù)的差的最大公約數(shù)。例如,252和105的最大公約數(shù)是21(252=21X12;105=21X5);因?yàn)?52-105=147,所以147和105的最大公約數(shù)也是21。在這個(gè)過程中,較大的數(shù)縮小了,所以繼續(xù)進(jìn)行同樣的計(jì)算可以不斷縮小這兩個(gè)數(shù)直至其中一個(gè)變成零。這時(shí),所剩下的還沒有變成零的數(shù)就是兩數(shù)的最大公約數(shù)。例如,計(jì)算a=1071和b=462的最大公約數(shù)的過程如下:從1071中不斷減去462直到小于462(可以減2次,即商q0=2),余數(shù)是147:1071=2X462+147.然后從462中不斷減去147直到小于147(可以減3次,即ql=3),余數(shù)是21:462=3X147+21.再從147中不斷減去21直到小于21(可以減7次,即q2=7),沒有余數(shù):147=7X21+0.此時(shí),余數(shù)是0,所以1071和462的最大公約數(shù)是21。Input輸入為多行,每行有一對(duì)非負(fù)整數(shù)a,b,且a*b不會(huì)超出int類型的數(shù)據(jù)范圍。輸入至EOF結(jié)束。Output每行輸出一對(duì)a,b的最大公約數(shù)和最小公倍數(shù),順序與輸入對(duì)應(yīng)。從整除定義出發(fā):若a整除b(b除以a沒有余數(shù)),則b是a的倍數(shù),a是b的約數(shù),這里要求b不為0。因此0是任意整數(shù)的倍數(shù)(任意整數(shù)都是0的約數(shù)),但是0不能是約數(shù)。SampleInput1123223246751261892436

111622162121356129181272HINT按照題目描述所給的算法解題,注意以下幾點(diǎn):輾轉(zhuǎn)相除法對(duì)兩個(gè)數(shù)的大小關(guān)系有要求,根據(jù)倍數(shù)和約數(shù)的數(shù)學(xué)定義,一個(gè)非o數(shù)和o的約數(shù)是多少?輾轉(zhuǎn)相除法的計(jì)算過程是符合這種定義的。#include<stdio.h>intmain()(inta,b,c,m,t;while(scanf("%d%d',,&a,&b)!=EOF){if(a==O&&b!=O)printf("%d%d\n",b,a);elseif(a!=O&&b==O)printf(M%d%d\n",a,b);else{if(a<b)t=a;a=b;b=t;}m=a*b;c=a%b;while(c!=O)(a=b;b=c;c=a%b;}printf("%d%d\n",b,m/b);}}ProblemD:SumProblem(II):Input/OutputPractice

Description計(jì)算若干整數(shù)的和,這些整數(shù)都是小于1000的非負(fù)整數(shù)。Input輸入的第一行是一個(gè)整數(shù)M,后面有M個(gè)測(cè)試樣例。每個(gè)測(cè)試樣例以一個(gè)整數(shù)N開始,后面接著是N個(gè)整數(shù)。Output每組測(cè)試樣例對(duì)應(yīng)一行輸出,為所給的N個(gè)整數(shù)之和,順序與輸入對(duì)應(yīng)。SampleInput2312351015203050SampleOutput6125HINT用雙重循環(huán)解決這個(gè)問題,外層循環(huán)控制用例的輸入,內(nèi)層循環(huán)控制讀取N個(gè)整數(shù)。#include<stdio.h>intmain()(intM,N,n,i,j,s;scanf("%d'\&M);for(j=1;j<M;j++)scanf(M%d",&N);s=0;for(i=1;i<=N;i++){scanf("%d',,&n);s+=n;}printf("%d\n”,s);}scanf("%d",&N);s=0;for(i=1;i<=N;i++)(scanf("%d",&n);s+=n;ProblemE:SumProblem(III):Input/OutputPracticeDescription計(jì)算若干整數(shù)的和,這些整數(shù)都是小于1000的非負(fù)整數(shù)。Input輸入為多行,每行為一組測(cè)試樣例。每個(gè)測(cè)試樣例以一個(gè)整數(shù)N開始,后面接著是N個(gè)整數(shù)。當(dāng)輸入的N為0時(shí)表示輸入結(jié)束。Output每組測(cè)試樣例對(duì)應(yīng)一行輸出,為所給的N個(gè)整數(shù)之和,順序與輸入對(duì)應(yīng)。SampleInput3123510152030500SampleOutput6125HINT用雙重循環(huán)解決這個(gè)問題,外層循環(huán)控制用例的輸入,內(nèi)層循環(huán)控制讀取N個(gè)整數(shù)。#include<stdio.h>intmain()(intN,i,s,n;while(scanf(M%d",&N))if(N==O)break;else{s=0;for(i=1;i<=N;i++){scanf("%d",&n);s+=n;}printf("%d\n",s);Description輸入一個(gè)正整數(shù)的年份,判斷是否為閏年。編寫一個(gè)函數(shù)用于判斷閏年。用C語言實(shí)現(xiàn):append.c中函數(shù)原型為intis_leap_year(intyear);功能:若參數(shù)year是閏年返回1,否則返回0。用C++實(shí)現(xiàn):append.cc中函數(shù)原型為boolisLeapYear(intyear);功能:若參數(shù)year是閏年返回true,否則返回false?函數(shù)的調(diào)用格式見“AppendCode”。Input輸入只有一行,為一個(gè)10000以內(nèi)的正整數(shù)。Output輸出為一行。若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。SampleInput2010SampleOutputNoHINT參看系統(tǒng)首頁上的“AppendCode”使用說明,討論版(WebBoard)上也有。#include<stdio.h>intis_leap_year(intyear)

if(year%4==0&&year%100!=0||year%400==0)return1;elsereturn0;}intmain(){intyear;scanf(M%d",&year);is_leap_year(year)?printf("Yes''):printf("No");return0;}ProblemG:編寫函數(shù):求累加和(AppendCode)Description給出兩整數(shù)min和max,求min到max之間的數(shù)的累加和。

編寫一個(gè)函數(shù)add()。函數(shù)原型為intadd(intn);功能:每次調(diào)用都把參數(shù)n的值累加起來,并返回。函數(shù)add。的調(diào)用格式見“AppendCode”。Input輸入為兩個(gè)整數(shù)min和max,且max>=minoOutputmin和max之間所有整數(shù)的累加和,包括min和max。SampleInput110SampleOutput55HINTadd()函數(shù)里要用靜態(tài)變量來存儲(chǔ)累加和。當(dāng)然用全局變量也行,不過還是練練怎么用靜態(tài)變量吧。ttinclude<stdio.h>ints=0;intadd(intn){s+=n;returns;intmainOintmin,max,sum;scanf("%d%d”,&min,&max);while(min<=max)sum=add(min++);printfsum);return0;)ProblemA:電量的顯示Description手機(jī)大家都有吧?最上面的電量指示圖都知道吧?現(xiàn)在呢,就需要你來編一個(gè)程序,根據(jù)用戶給出的電量,模擬一個(gè)電量示意圖。原理很簡單:對(duì)于給定的一個(gè)0?100之內(nèi)的整數(shù)N(N就是電量的百分比,0%表示沒電了100%表示滿電&-),用N個(gè)來表示電量。Input輸入有多行。第一行是一個(gè)非負(fù)整數(shù)N,表示后面有N行輸入。之后的N行,每一行是一個(gè)介于[0,100]的整數(shù)K,表示要顯示的電量。Output輸出有N行,每行輸出與上述輸入 對(duì)應(yīng)。輸出的格式為:case?:IIIIIIIH……其中?表示用例編號(hào)(從1開始),“:”前、后各有一個(gè)空格,的個(gè)數(shù)與每行輸入相同。SampleInput401203SampleOutputcase1:case2:|case3:||||||||||||||||||||case4:|||#include<stdio.h>intmain()(intN,K,i,j=0,m;scanf("%d”,&N);for(i=1;i<=N;i++){scant("%d",&K);j++;{printf("case%d:",j);for(m=1;m<=K;m++)printf('T');printf("\n'^);}ProblemB:編寫函數(shù):素?cái)?shù)的判定(AppendCode)Description一個(gè)正整數(shù)n是素?cái)?shù):除門和n不能被其他數(shù)整除。I不是素?cái)?shù)。編寫一個(gè)函數(shù)用于判定一個(gè)正整數(shù)是不是素?cái)?shù)。用C語言實(shí)現(xiàn):叩pend.c中函數(shù)原型為intis_primer(intnum);功能:若num為素?cái)?shù)返回1,否則返回0。用C++實(shí)現(xiàn):append.cc中函數(shù)原型為boolisPrimer(intnum);功能:若num為素?cái)?shù)返回true,否則返回false。函數(shù)的調(diào)用格式見“AppendCode”。Input每行輸入一個(gè)正整數(shù)non不會(huì)超出int類型數(shù)據(jù)范圍。輸入最多不超過20個(gè)正整數(shù)。Output若n為素?cái)?shù),輸出“YES”,否則輸出“NO”。SampleInput1234567892147483647SampleOutputNOYESYESNOYESNOYESNONOYESHINT如果你是按照從小到大的順序選擇除數(shù)去判定一個(gè)數(shù),那么你超時(shí)的原因多半是用了太多不必要的除數(shù)。程序需要優(yōu)化,減少循環(huán)的次數(shù)。AppendCodeappend.c,append.cc,

#include<stdio.h>#include<math.h>intis_primer(intnum)(intj;(for(j=2;j<=sqrt(num);j++)if(num%j==0)return0;if((j>sqrt(num))&&(num!=1))return1;elsereturn0;}}intmain()intnum;while(scanf(',%d,'J&num)!=EOF)(if(is_primer(num))puts("YES");elseputs(',NOM);}return0;}ProblemC:多少個(gè)正整數(shù)?Description給出不超過100個(gè)整數(shù),輸出其中有多少個(gè)正數(shù)。Input輸入分為2行。第一行是一個(gè)0<N<=100,表示下一行有N個(gè)整數(shù)。第2行是N個(gè)整數(shù),均在int類型的表示范圍內(nèi)。Output一個(gè)數(shù)字,表示輸入中正數(shù)的個(gè)數(shù)。SampleOutputl|#include<stdio.h>intmain()(intN,n,i,j=0;scant("%d\n",&N);for(i=1;i<=N;i++){scant("%d",&n);if(n>0)j++;elsej+=0;}printf("%d”,j);ProblemD:兔子的繁殖問題Description假設(shè)一對(duì)兔子每月能生一對(duì)小兔(一雌一雄),每對(duì)小兔出生后的下一個(gè)月是沒有繁殖能力的,至出生后的第三個(gè)月開始又可以每月生一隊(duì)小兔,問從一對(duì)剛出生的小兔開始,經(jīng)過若干個(gè)月后一共有多少兔子(假設(shè)在此過程中兔子沒有死亡)?這個(gè)問題是意大利數(shù)學(xué)家菲波那契(Fibonacci)在他1202年出版的《算盤全書》中提出來的,從第一對(duì)剛出生的小兔開始每月的兔子數(shù)被乘坐菲波那契序列。Input輸入的第一個(gè)數(shù)為n,接下來有n個(gè)數(shù)字。每個(gè)數(shù)字為一個(gè)月份m(m<=45)。Output輸出為n行,每行為第m個(gè)月后的兔子總數(shù)。SampleInput61234510SampleOutput1235889HINT超時(shí)了吧!使用遞歸計(jì)算菲波那契序列,這合適嗎?用數(shù)組寫比較方便,用循環(huán)直接算也不超時(shí)。#include<stdio.h>intmain(){inta[46]={l,1},i,j,n,m;for(i=2;i<46;i++)

a[i]=a[iT]+a[i-2];scanf("%d",&n);for(j=0;j<n;j++)(scanf&m);printf(*%d\n*,a[m]);})ProblemA:字符串的逆序Description將輸入的一個(gè)字符串S逆序輸出。Input輸入為一個(gè)串S。輸入最少為一個(gè)字符,最多不會(huì)超過100個(gè)字符。輸入不含各種空白符。\八?\n\'\r\Output串s的逆序.SampleInputabodeSampleOutputedcbaHINT輸入可以用scanf("%s")處理。ttinclude<stdio.h>ttinclude<string.h>intmain(){inti,j;chars[100];scanfs);i=strlen(s);for(j=i-l;j>=0;j—)printf(*%c*,s[j]);)ProblemB:十進(jìn)制整數(shù)轉(zhuǎn)二進(jìn)制Description給出一個(gè)十進(jìn)制的非負(fù)整數(shù)X,x<=216,把它轉(zhuǎn)換成二進(jìn)制數(shù)輸出。Input輸入為多行,每行一個(gè)整數(shù)x,至讀入EOF結(jié)束。Output每行輸出X對(duì)應(yīng)的二進(jìn)制數(shù)值。SampleOutput01111000011111111111111111HINT本題有多種解法:可以用循環(huán)迭代對(duì)2的除法和取余操作,不過處理的順序與輸出順序相反,需要利用數(shù)組存儲(chǔ);用取對(duì)數(shù)或從大到小減去2的整數(shù)次幕的方法計(jì)算與輸出順序是相同的;也可以用printf()把十進(jìn)制的數(shù)值處理成十六進(jìn)制,然后1位十六進(jìn)制轉(zhuǎn)4位二進(jìn)制;也可以用位運(yùn)算處理。#include<stdio.h>intmain(){inti,j,m,x,k;inta[17];while(scanf(',%d",&x)!=EOF)(if(x==0)printf(“0\n");elsefor(i=0;i<=16;i++)m=x%2;j=x/2;x=j;a[i]=m;}for(i=16;i>=0;i-){if(a[i]==1)(k=i;break;}}for(i=k;i>=0;i--)printf("%dM,a[i]);

ProblemC:SumProblem(II):Input/OutputPracticeDescription計(jì)算若干整數(shù)的和,這些整數(shù)都是小于1000的非負(fù)整數(shù)。Input輸入的第一行是一個(gè)整數(shù)M,后面有M個(gè)測(cè)試樣例。每個(gè)測(cè)試樣例以一個(gè)整數(shù)N開始,后面接著是N個(gè)整數(shù)。Output每組測(cè)試樣例對(duì)應(yīng)一行輸出,為所給的N個(gè)整數(shù)之和,順序與輸入對(duì)應(yīng)。SampleInput2312351015203050SampleOutput6125HINT用雙重循環(huán)解決這個(gè)問題,外層循環(huán)控制用例的輸入,內(nèi)層循環(huán)控制讀取N個(gè)整數(shù)。#include<stdio.h>intmain()(scanf("%dM,&M);for(j=1;j<M;j++)(scanf("%d”,&N);s=0;for(i=1;i<=N;i++){scanf("%d”,&n);s+=n;}printf("%d\n”,s);}scanf("%d",&N);s=0;for(i=1;i<=N;i++)scanf("%d'',&n);s+=n;}printf("%d",s);}ProblemD:字符串的長度Description輸入一些字符串,輸出它們的長度。Input輸入為多行。第一行N>0表示有N個(gè)測(cè)試用例,后面有N行,每行包含一個(gè)字符串(不超過1000個(gè)字符)。Output輸出為多行,每行對(duì)應(yīng)于一個(gè)測(cè)試用例。每行的格式為:casei:lenght=j.其中i表示測(cè)試用例編號(hào)(從1開始),j表示相應(yīng)的字符串長度。SampleInput4IloveChina!Doyouwanttopassthisexamination?Youwillsucceedfinially!Wishyousucceed!SampleOutputcase1:length=13.case2:length=37.case3:length=26.case4:length=17.HINT用scanf()讀取整數(shù)后,第一行的換行符需要處理??梢杂梦募y(cè)試出這個(gè)問題來。#include<stdio.h>#include<string.h>intmain()(intchara[1000],b[50];scanf("%d”,&N);gets(b);//吸收空格for(j=1;j<=N;j++)/(gets(a);m=strlen(a);printf("case%d:length=%d.\n",j,m);}ProblemE:字符串加密(編程)

Description通過鍵盤輸入一個(gè)字符串,之后按如下規(guī)律對(duì)其加密:A—Za-*zB-*Yb-yC-Xcfx□□□□□□□□□□□□□□□□□□□□□即將字符串中的第i個(gè)大寫或小寫英文字母變成相應(yīng)的第(26-i+l)個(gè)大寫或小寫字母,其他字符不變。Input輸入一個(gè)字符串,不超過100個(gè)字符。Output輸出為加密后的字符串SampleInputABCabcSampleOutputZYXzyx#include<stdio.h>intmain(){chars[101],i;gets(s);for(i=0;s[i]!=0;i++)

if(s[i]>='A'&&s[i]<='Z')s[i]=155-s[i];if(s[i]>='a'&&s[i]<='z')s[i]=219-s[i];}puts(s);}ProblemF:PrintGraphicsProblerm(III)(AppendCode)Description向標(biāo)準(zhǔn)輸出上打印一些用ASCII字符組成的圖形。編寫一個(gè)函數(shù)用于輸出ASCII圖形。用C語言實(shí)現(xiàn):叩pend.c中函數(shù)原型為intprint_graphic(intn,charc);用C++實(shí)現(xiàn):append.cc中函數(shù)原型為intprintGraphic(intn,charc);功能:輸出n層有字符c組成的圖形。函數(shù)的調(diào)用格式見“AppendCode”。Input輸入為一個(gè)整數(shù)n和一個(gè)字符c,0<n<100oOutput

輸出一個(gè)n層等腰三角形,由字符c組成,格式見sample。SampleInputQSampleOutput*★★★★★★★★★★★★★★★★★★★★★HINTAppendCodeappend.c,append.cc,^include<stdio.h>intprint_graphic(intn,charc){inti,j,k;for(i=l;i<=n;i++){for(j=l;j<=n-i;j++)printf("");for(k=l;k<=2*i-l;k++)printfc);printf("\n");

intmainOcharc;intnum;scanf("%d%c”,&num,&c);print_graphic(num,c);return0;)ProblemA:產(chǎn)生等差序列之一Description根據(jù)給出的初始數(shù)、公差和序列長度求等差序列。Input輸入為一行,格式見sample。其中,start為初始數(shù),step為公差,times為序列長度。滿足,times>0?step不為0。Output把這個(gè)等差序列輸出在一行里,序列兩數(shù)之間用一個(gè)空格分隔。SampleInputstart=1,step=2,times=100SampleOutput135791113151719212325272931333537394143454749515355575961636567697173757779818385878991939597991011031051071091111131151171

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論