山東科技大學(xué)C語言作業(yè)四.doc_第1頁
山東科技大學(xué)C語言作業(yè)四.doc_第2頁
山東科技大學(xué)C語言作業(yè)四.doc_第3頁
山東科技大學(xué)C語言作業(yè)四.doc_第4頁
山東科技大學(xué)C語言作業(yè)四.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Problem A: 只有一個(gè)二元運(yùn)算符的表達(dá)式運(yùn)算Time Limit: 1 SecMemory Limit: 2 MB Submit: 5044Solved: 1937SubmitStatusWeb BoardDescription編程序讀入并計(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的值;否則輸出“invalid op”。Sample Input33+58*92.21-617/39%30 0Sample Output3872invalid op-550#include #include void main() int i,a,b; char c; for(i=0;iF”表示輸出:攝氏華氏溫度轉(zhuǎn)換表,若為“F-C”表示輸出:華氏攝氏溫度轉(zhuǎn)換表。第2、3行為兩個(gè)整數(shù):high和low,其值在-100到200之間。第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ù),格式詳見sample。Sample InputC-F-10402.5Sample Output C - F-10.0 - 14.0 -7.5 - 18.5 -5.0 - 23.0 -2.5 - 27.5 0.0 - 32.0 2.5 - 36.5 5.0 - 41.0 7.5 - 45.5 10.0 - 50.0 12.5 - 54.5 15.0 - 59.0 17.5 - 63.52 20.0 - 68.0 22.5 - 72.5 25.0 - 77.0 27.5 - 81.5 30.0 - 86.0 32.5 - 90.5 35.0 - 95.0 37.5 - 99.5 40.0 - 104.0HINT輸出格式可以通過sample分析出來,因?yàn)閮蓹诘目倢挾仁枪潭ǖ?。一個(gè)隱藏的陷阱是step是浮點(diǎn)數(shù),某些浮點(diǎn)數(shù)是無法精確存儲(chǔ)的,因此經(jīng)過一定量的計(jì)算后這個(gè)誤差會(huì)影響到浮點(diǎn)數(shù)的相等性判斷,需要加上精度控制。Append CodeSubmitStatusWeb Board#include int main() double low,high; double step,c,f; char ch1,ch2; scanf(%c-%c,&ch1,&ch2); if(ch1=C&ch2=F) scanf(%lf%lf%lf,&low,&high,&step); f=(double)9/5*low+32; if(low=-100|f F); while(low %6.1lf,low,f); low+=step; return 0; printf( C - F); while(low %5.1lf,low,f); low+=step; return 0; else if(ch1=F&ch2=C) scanf(%lf%lf%lf,&low,&high,&step); c=(low-32)*(double)5/9); if(low=-100|c C); while(low %6.1lf,low,c); low+=step; return 0; printf( F - C); while(low %5.1lf,low,c); low+=step; return 0; Problem C: 1!+2!+k!=?Time Limit: 1 SecMemory Limit: 2 MBSubmit: 5125Solved: 1645SubmitStatusWeb BoardDescription求1!+2!+k!=?,并判斷是否溢出。Input輸入為一個(gè)正整數(shù)k。Output若1!+2!+k!的值溢出unsigned(無符號(hào)整型)的范圍輸出“overflow”,否則輸出1!+2!+k!的結(jié)果。Sample Input5Sample Output153HINT如果一個(gè)值溢出某個(gè)變量的數(shù)據(jù)類型存儲(chǔ)范圍,但仍然存入該變量,那么存入該變量中的值實(shí)際上是什么?Append Code#include int main() int i,j; unsigned int s,b,a; s=0; scanf(%d,&j); b=1; for(i=1;i=j;i+) a=b; b=b*i; if(double)b/ai) printf(overflown); return 0; s=s+b; printf(%un,s); return 0; Problem D: 輾轉(zhuǎn)相除法Time Limit: 1 SecMemory Limit: 2 MBSubmit: 3383Solved: 1185SubmitStatusWeb BoardDescription輾轉(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 = 21 12;105 = 21 5);因?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 = 2 462 + 147.然后從462中不斷減去147直到小于147(可以減3次,即q1 = 3),余數(shù)是21: 462 = 3 147 + 21.再從147中不斷減去21直到小于21(可以減7次,即q2 = 7),沒有余數(shù): 147 = 7 21 + 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ù)。Sample Input1 12 32 23 24 67 512 618 924 36Sample Output1 11 62 21 62 121 356 129 1812 72HINT按照題目描述所給的算法解題,注意以下幾點(diǎn):輾轉(zhuǎn)相除法對(duì)兩個(gè)數(shù)的大小關(guān)系有要求,根據(jù)倍數(shù)和約數(shù)的數(shù)學(xué)定義,一個(gè)非0數(shù)和0的約數(shù)是多少?輾轉(zhuǎn)相除法的計(jì)算過程是符合這種定義的。Append CodeSubmitStatusWeb Board錯(cuò)誤:#include int main() int a,b,i,c; for(;scanf(%d%d,&a,&b)!=-1;) c=a*b; if(a=0&b!=0) printf(%d %dn,b,a); else if(a!=0&b=0) printf(%d %dn,a,b); else while(a!=b) if(ab) a=a-b; if(ab) b=b-a; printf(%d %dn,a,c/a); 正確:#include int main() int a,b,c,m,t; while(scanf(%d %d,&a,&b)!=EOF) if(a=0&b!=0) printf(%d %dn,b,a); else if(a!=0&b=0) printf(%d %dn,a,b); else if(ab) t=a; a=b; b=t; m=a*b; c=a%b; while(c!=0) a=b; b=c; c=a%b; printf(%d %dn,b,m/b); Problem E: Sum Problem (II) : Input/Output PracticeTime Limit: 1 SecMemory Limit: 2 MBSubmit: 2765Solved: 1959SubmitStatusWeb BoardDescription計(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)。Sample Input23 1 2 35 10 15 20 30 50Sample Output6125HINT用雙重循環(huán)解決這個(gè)問題,外層循環(huán)控制用例的輸入,內(nèi)層循環(huán)控制讀取N個(gè)整數(shù)。Append Code#include int main() int m,n,a,i,j,s; scanf(%d,&m); for(j=1;j=m;j+) scanf(%d,&n); s=0; for(i=1;i=n;i+) scanf(%d,&a); s=s+a; printf(%dn,s); Problem F: Sum Problem (III) : Input/Output PracticeTime Limit: 1 SecMemory Limit: 2 MBSubmit: 2521Solved: 1817SubmitStatusWeb BoardDescription計(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)。Sample Input3 1 2 305 10 15 20 30 500Sample Output6125HINT用雙重循環(huán)解決這個(gè)問題,外層循環(huán)控制用例的輸入,內(nèi)層循環(huán)控制讀取N個(gè)整數(shù)。Append Code#include int main() int n,a,i,s; for(;scanf(%d,&n);) if(n=0) break; else s=0; for(i=1;i=n;i+) scanf(%d,&a); s=s+a; printf(%dn,s); Problem G: 百錢買百雞問題Time Limit: 1 SecMemory Limit: 2 MBSubmit: 4464Solved: 800SubmitStatusWeb BoardDescription“百錢買百雞”是我國著名的古代數(shù)學(xué)問題,中國古代數(shù)學(xué)家張丘建在他的算經(jīng)中提出了這樣一個(gè)問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何?你的任務(wù)是求解下面這個(gè)問題。問題是這樣描述的:a文錢可買一只公雞,b文錢可買一只母雞,c文錢可買d只小雞。用m文錢買n只雞,那么有公雞x只、母雞y只、小雞z只。求解出符合題意的x,y,z。Input輸入為一張表。第一行是一個(gè)固定不變的表頭,格式見sample。后面有多行,每行為一組測(cè)試數(shù)據(jù)。每組測(cè)試數(shù)據(jù)由6個(gè)整數(shù)組成,分別為“a,b,c/d,m,n”。滿足0a,b,c,d=50,50=m,n=108+1,并且母雞和小雞的單價(jià)不會(huì)相同。Output每組測(cè)試數(shù)據(jù)的運(yùn)行結(jié)果輸出為一張表,表頭固定為“COCKS,HENS,CHICKS”。每組測(cè)試數(shù)據(jù)的一個(gè)可行解數(shù)出為一行,為三個(gè)整數(shù):“x,y,z”。多組解按照公雞數(shù)從少到多的順序輸出。若測(cè)試數(shù)據(jù)無解則輸出“Cannot buy!”。兩組測(cè)試數(shù)據(jù)之間用一個(gè)空行分隔開。Sample InputCOCK,HEN,CHICK,MONEY,CHICKS3,2,1/3,100,1005,3,1/3,100,1008,5,1/7,100,1008,5,1/7,300,300Sample OutputCOCKS,HENS,CHICKS0,40,605,32,6310,24,6615,16,6920,8,7225,0,75COCKS,HENS,CHICKS0,25,754,18,788,11,8112,4,84Cannot buy!COCKS,HENS,CHICKS8,40,252HINT本題重點(diǎn)在于了解多重循環(huán)的運(yùn)行效率問題,減少一層循環(huán)可以降低很大規(guī)模的運(yùn)算量。通過在循環(huán)體內(nèi)加計(jì)數(shù)器可以統(tǒng)計(jì)出循環(huán)的運(yùn)行次數(shù),當(dāng)測(cè)試數(shù)據(jù)變大時(shí),運(yùn)行次數(shù)的增長會(huì)非常可觀,這就是超時(shí)的原因了。Append CodeEg:#includevoid main() int a,b,c; for(a=1;a20;a+) for(b=1;b33;b+) for(c=3;c100;c+=3) if(a+b+c=100)&(a*5+b*3+c/3=100) printf(a=%d,b=%d,c=%d,a,b,c); 答案:#include #include int main() char s50; long int a,b,m,n,x,y,z,flag; int c,d; gets(s); while(scanf(%ld,%ld,%d/%d,%ld,%ld,&a,&b,&c,&d,&m,&n)!=EOF) flag=0; for(x=0; x=n; x+) if(a-b)*x+b*n-m)*d)%(b*d-c)=0) z=(a-b)*x+b*n-m)*d)/(double)(b*d-c); y=n-z-x; if(fabs(a*x+b*y+z*c/(double)d-m)=0&y=0&z=0) flag=1; if(flag=0) printf(Cannot buy!n); else printf(COCKS,HENS,CHICKSn); for(x=0; x=n; x+) if(a-b)*x+b*n-m)*d)%(b*d-c)=0) z=(a-b)*x+b*n-m)*d)/(double)(b*d-c); y=n-z-x; if(fabs(a*x+b*y+z*c/(double)d-m)=0&y=0&z=0) printf(%ld,%ld,%ldn,x,y,z); printf(n); return 0;Problem H: Print Graphics Problerm (II)Time Limit: 1 SecMemory Limit: 16 MBSubmit: 2378Solved: 845SubmitStatusWeb BoardDescription向標(biāo)準(zhǔn)輸出上打印一些用ASCII字符組成的圖形。Input輸入為多個(gè)整數(shù)n,0n100。當(dāng)n為0時(shí)結(jié)束輸入。Output若n為偶數(shù),則輸出一個(gè)正向的n層等腰三角形;n為奇數(shù),則輸出一個(gè)倒向的n層等腰三角形。三角形由“+”組成。任意兩個(gè)圖形之間有一個(gè)空行分隔,格式見sample。Sample Input540Sample Output+ + + + + + + +HINTAppend CodeSubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#includeint main() int n,i,j; while(n!=0) scanf(%d,&n); if(n%2=0&n!=0) for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=1;i-) for(j=n-i;j=1;j-) printf( ); for(j=2*i-1;j=1;j-) printf(+); printf(n); printf(n); return 0;Problem I: 編寫函數(shù):求三個(gè)整數(shù)的最大值 (Append Code)Time Limit: 1 SecMemory Limit: 2 MBSubmit: 1995Solved: 913SubmitStatusWeb BoardDescription求三個(gè)整數(shù)的最大值。-編寫一個(gè)函數(shù)maxValue()求三個(gè)整數(shù)的最大值。其原型為:int maxValue(int a,int b,int c);功能:函數(shù)的三個(gè)參數(shù)傳入a,b,c的值,返回其中最大值。函數(shù)的調(diào)用格式見“Append Code”。Input輸入三個(gè)int類型的整數(shù),兩兩之間用空格隔開。Output輸出三個(gè)整數(shù)的最大值。Sample Input1 2 3Sample Output3HINT參看系統(tǒng)首頁上的“Append Code”使用說明,討論版(Web Board)上也有。Append Codeappend.c, append.cc, SubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#include int maxValue(int a,int b,int c) int x; x=ab?a:b; if(xc) x=c; return x; int main() int x,y,z; scanf(%d%d%d,&x,&y,&z); printf(%d,maxValue(x,y,z); return 0; 正確:#include int maxValue(int a,int b,int c)if(ab&bc)return a;else if(ba&bc)return b;else if(ca&cb)return c;Time Limit: 1 SecMemory Limit: 2 MBSubmit: 1064Solved: 448SubmitStatusWeb BoardDescription判斷給定的一個(gè)字符是否是元音字母(a,e,i,o,u)?-用C語言實(shí)現(xiàn):append.c中函數(shù)原型為int is_vocals(char c);功能:若c是元音字母返回1,否則返回0。用C+實(shí)現(xiàn):append.cc中函數(shù)原型為bool isVocals(char c);功能:若c是元音字母返回true,否則返回false。函數(shù)的調(diào)用格式見“Append Code”。Input輸入一個(gè)字母。Output如果是一個(gè)元音字母,則輸出:It is a vocals.否則輸出:It is not a vocals.Sample InputaSample OutputIt is a vocals.HINT參看系統(tǒng)首頁上的“Append Code”使用說明,討論版(Web Board)上也有。Append Codeappend.c, append.cc, SubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#includeint is_vocals(char c) if(c=a|c=e|c=i|c=

溫馨提示

  • 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)論