北京理工大學網絡教室C語言編程題庫及答案絕對經典[共111頁]_第1頁
北京理工大學網絡教室C語言編程題庫及答案絕對經典[共111頁]_第2頁
北京理工大學網絡教室C語言編程題庫及答案絕對經典[共111頁]_第3頁
北京理工大學網絡教室C語言編程題庫及答案絕對經典[共111頁]_第4頁
北京理工大學網絡教室C語言編程題庫及答案絕對經典[共111頁]_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1. Hello world.輸入:無輸出:Hello world.程序:#includeint main()printf(Hello world.n);return 0;2. Welcome to Beijing.程序:#include int main()printf(Welcomen);printf(ton);printf(Beijing.n);return 0;3. 求A+B輸入:整數1 整數2輸出:整數1+整數2=和程序: #includeint main()int a,b;scanf(%d,&a);scanf(%d,&b);printf(%d+%d=%dn,a,b,a+b);ret

2、urn 0;4. 求 x 的 3次方輸入:一個整數。 輸出:該整數的 3 次方值。程序: #includeint main() int x; scanf(%d,&x); printf(%dn,x*x*x); return 0; 5. 學習打印你的第一個圖形編寫一個小程序,要求輸出的是 4 行由*號組成的等腰三角形。程序: #include int main() printf( *n); printf( *n); printf( *n); printf(*n); return 0; 6. 一年級的算術題輸入: 接受兩個整數,每個整數之間使用空格分隔。例如輸入格式為:123 444輸出:分別輸出按

3、照整型數據進行 +、-、*、/、* 之后的運行結果。程序: #includeint main() int a,b; scanf(%d %d,&a,&b); printf(%d+%d=%dn,a,b,a+b); printf(%d-%d=%dn,a,b,a-b); printf(%d*%d=%dn,a,b,a*b); printf(%d/%d=%dn,a,b,a/b); printf(%d%d=%dn,a,b,a%b); return 0;7. 求兩個變量的最小值輸入:兩個整型數輸出:兩個整型值中的最小值程序: #includeint main() int a,b; scanf(%d%d,&a,

4、&b); printf(min=%dn,ab?a:b); return 0;8. 判斷三角形的形狀 輸入:三角型的3條邊的長度(int型)。輸出:等邊三角形:equilateral triangle等腰三角形:isoceles triangle不構成三角形:non-triangle一般三角形:triangle程序: #includeint main() int a,b,c; scanf(%d%d%d,&a,&b,&c); if(a+bc&a+cb&b+ca) if (a=b&b=c&a=c) printf(equilateral triangle.n); else if(a=b|a=c|b=c

5、) printf(isoceles triangle.n); else printf(triangle.n); else printf(non-triangle.n); return 0;9. 計算圓柱的側面積及體積輸入 :第一行輸入圓柱的底面半徑 r第二行輸入圓柱的高 h 輸出:s=,v= 要求 1. 所有變量都定義為雙精度類型2. 結果精確到小數點后兩位程序: #include#define PI 3.1415926int main() double r,h,s,v; scanf(%lf,&r); scanf(%lf,&h); s=2*PI*r*h; v=PI*r*r*h; printf(

6、s=%.2f,v=%.2fn,s,v); return 0;10. 計算時鐘的夾角背景: 鐘面上的時針和分針之間的夾角總是在 0 180之間 ( 包括 0 和180 ) 。舉例來說,在十二點的時候兩針之間的夾角為 0 ,而在六點的時候夾角為180 ,在三點的時候為90 。本題要解決的是計算 12:00 到 11:59 之間任意一個時間的夾角。輸入: 每組測試數據包含兩個數字:第一個數字代表小時 ( 大于 0 小于等于 12) ,第二個數字代表分 ( 在區(qū)間 0, 59 上 ) 。 輸出: 對應每組測試數據,用常用格式顯示時間以及這個時候時針和分針間的最小夾角,精確到小數點后一位。輸出格式如下所

7、示。程序: #include#includeint main() int h,m; float d1,d2,d; scanf(%d%d,&h,&m); d1=30*(h+m/60.0); d2=m*360/60.0; d=fabs(d1-d2); if(d180) d=360-d; printf(At %d:%d the angle is %.1f degrees.n,h,m,d); return 0;11. 找出最大素數素數是指一個只能被1和它本身整除的數,在數論中占有重要的研究地位,在當代密碼學中也被廣泛應用。輸入:取值范圍輸出:該范圍內的最大素數程序: #include int main

8、() int n,i,j; scanf(%d,&n); for(i=n;i=1;i-) for(j=2;ji;j+) if(i%j=0) break; if(j=i) printf(The max prime number is %d.n,i); break; 12. 求最后3位數值輸入:a 和 n 的值。假設 a=150 。 輸出:求 a 的 n 次方的最后 3 位數。程序:#includeint main()long int s=1;int a,n,i=1,t=1;scanf(%d%d,&a,&n);if(n=0)printf(The last 3 numbers is 1.n);else

9、for(i=1;i=0&t=10&t=100&t1000)printf(The last 3 numbers is %d.n,t);return 0;13. 貪吃的猴子有一只猴子,第一天摘了若干個桃子 ,當即吃了一半,但還覺得不過癮 ,就又多吃了一個。第2天早上又將剩下的桃子吃掉一半,還是覺得不過癮,就又多吃了兩個。以后每天早上都吃了前一天剩下的一半加天數個(例如,第5天吃了前一天剩下的一般加5個)。到第n天早上再想吃的時候,就只剩下一個桃子了。 輸入:天數n輸出:第一天的桃子個數程序: #includeint main()int i,n,amount=1;scanf(%d,&n);for(i

10、=n-1;i=1;i-)amount=2*(amount+i);printf(The monkey got %d peachs in first day.n,amount);14. 黑色星期五在西方,星期五和數字13都代表著壞運氣,兩個不幸的個體最后結合成超級不幸的一天。所以,不管哪個月的十三日又恰逢星期五就叫“黑色星期五”。輸入:年份輸出:判斷該年是否包含黑色星期五,如包含,給出具體日期程序: #includeint main()int i,n=0,year,month12=0;int a13=0,13,44,73,104,134,165,195,226,257,287,318,348;in

11、t b13=0,13,44,72,103,133,164,194,225,256,286,317,347;scanf(%d,&year);for(i=1;i13;i+)if (year%4=0 & year%100!=0)|year%400=0)if(year-1+(year-1)/4)-(year-1)/100)+(year-1)/400)+ai)%7=5)n+;monthn=i;elseif(year-1+(year-1)/4)-(year-1)/100)+(year-1)/400)+bi)%7=5)n+;monthn=i;if(n=1)printf(There is %d Black F

12、riday in year %d.n,n,year);printf(It is:n);printf(%d/%d/13n,year,month1);elseprintf(There are %d Black Fridays in year %d.n,n,year);printf(They are:n);for (i=1;i=n;i+)printf(%d/%d/13n,year,monthi);return 0;15.你會輸出一行星號?我們才開始上機,現在需要我們用最簡單得辦法,在一行中輸出N個星號。輸入:N值輸出:一行中N個星號。程序: #includeint main()int i,n;sca

13、nf(%d,&n); for(i=1;i=n;i+) printf(*); printf(n);16. 計算SUM的值已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + . + 1/n 輸入: n 輸出: 表達式 sum 的值。結果保留 6 位小數。程序: #includeint main()int i,n;double sum=0;scanf(%d,&n);for (i=1;i=n;i+)sum+=1.0/i;printf(sum=%.6lfn,sum);return 0;17. 尋找特殊整數請編寫一個程序尋找一種特殊整數:一個 n 位的正整數等于其各位數字的n次方之和。例如:

14、407=444+000+777。所以407就是一個特殊數。輸入:正整數的位數n(n=6)。輸出: 所有此n位特殊數。每個數占一行。若不存在符合條件的特殊數,則輸出提示:“No output.”;若存在,則從小到大進行輸出。說明:假設輸入為4,在4位整數中,有3個4位的特殊數,則輸出格式為(輸出中的1111、2222和9999并不是4位特殊數,只是格式樣例):111122229999程序: #include#include int main() int n,i,j,num,t,s=0,t1,flag=0; scanf(%d,&n); t=pow(10,n-1); for (i=t;i= 0)。輸

15、出:打印相應的空心倒三角形。圖樣參見測試用例。程序:#include #include int main() int i,j,h; scanf(%d,&h); for (i=1;i=h;i+) for(j=1;ji;j+) printf( ); if(i=1|i=h) for(j=1;j=2*(h-i)+1;j+) printf(*); printf(n); else printf(*); for(j=1;j=2*(h-i)-1;j+) printf( ); printf(*n); return 0; 19. 空心字符菱形輸入:菱型起始字母和菱形的高度。輸出:參看測試用例,打印空心的由字符組成

16、的菱形。程序:#include#include int main()int i,j,h;char ch;scanf(%c%d,&ch,&h);for (i=1;i=h;i+)for(j=1;j=h-i;j+)printf( );printf(%c,ch+i-1);for(j=1;j=2*i-3;j+)printf( );if(i=1) printf(n);continue;printf(%cn,ch+i-1);for (i=h+1;i=2*h-1;i+)for(j=1;j=i-h;j+)printf( );printf(%c,ch+(2*h-1)-i);for(j=1;j=(2*h-1-i)*

17、2-1;j+)printf( );if(i=2*h-1)printf(n);continue;printf(%cn,ch+(2*h-1)-i);return 0;20. 空心梯形輸入行數 n 和首數字字符,在屏幕上輸出由數字圍起的高和下底寬度均 n 的空心梯形。 要求:輸出的數字是循環(huán)的,即輸出數字 9 后再輸出的數字是 0。輸入:行數n 和首字符輸出:空心梯形程序: #include#include int main()int i,j,n,f,t=0;scanf(%d%d,&n,&f);t=f;for(j=1;j=3*n-2;j+)if(j=3*n-2)printf(%d,t);elsepr

18、intf(%d ,t);if(j(3*n-1)/2)if(t=9) t=0;elset+;else if(j=(3*n-1)/2&n%2=0) continue;elseif(t=0) t=9;else t-;printf(n);t=f;for (i=2;i=n;i+)for (j=1;j=2*(i-1);j+)printf( );if(i=n)for (j=1;j=(n+1)/2;j+)if(t=9) t=0;printf(%d ,t); elseprintf(%d ,+t);for (j=1;j=n/2;j+)if(t=0&n%2!=0) t=9;else if(j=1&n%2=0)if(

19、j=n/2) printf(%dn,t);elseprintf(%d ,t); continue; else t-;if(j=n/2)printf(%dn,t);elseprintf(%d ,t);elseif(t=9) printf(0);for(j=1;j=6*n-4*i-3;j+)printf( );printf(0n);t=0;elset+;printf(%d,t);for(j=1;j=6*n-4*i-3;j+)printf( );printf(%dn,t);return 0;H1:計算通用產品代碼(UPC)的校驗位(選作)下面是一種計算校驗位的方法:首先把第一位、第三位、第五位、第七

20、位、第九位和第十一位數字相加。然后把第二位、第四位、第六位、第八位和第十位數字相加。接著把第一次加法結果乘以3后再加上第二次加法的結果。隨后,再把上述結果減去1。減法后的結果除以10取余數。最后,用9減去上一步驟中得到的余數?,F在以Morton碘鹽為例,第一組數字的加法是0+4+0+0+0+3=7,而第二組數字的加法是2+6+0+1+0=9。把第一組加法值乘以3后再加上第二組加法值得到的結果是30。再減去1,結果變?yōu)?9。再把這個值除以10取余數為9。9在減去余數結果9,最終值為0。輸入:每次輸入三行數據,第一行是UPC的第一位數字,第二行是UPC的第一組五位數字,第三行是UPC的第二組五位數

21、字。輸出:UPC的校驗位程序: #include#includeint main() int i,j,s1=0,s2=0,t;int a11;char b6,c6;scanf(%d,&a0);scanf(%s,b);scanf(%s,c);for (i=0,j=1;i5;i+,j+)aj=bi-48;for (i=0,j=6;i5;i+,j+)aj=ci-48;for (i=0;i11;i+)if(i%2=0)s1+=ai;elses2+=ai;t=9-(s1*3+s2-1)%10;printf(%dn,t);return 0;H2:數制轉換(選作)這個題目會給你兩個不同的數字,它們不屬于同一

22、進制,要求你計算出當它們分別處于何種進制之中時,兩個數字相等。譬如 12 和 5 ,在十進制下它們是不等的,但若 12 使用 3 進制而 5 使用六進制或十進制時,它們的值就是相等的。因此只要選擇合適的進制, 12 和 5 就可以是相等的。 程序的輸入是兩個數字 M 和 N( 其十進制的值不超過 1000000000) ,它們的進制在 236 之間。對于十以下的數字,用 09 表示,而十以上的數字,則使用大寫的 AZ 表示。 求出分別在 236 哪種進制下 M 和 N 相等。若相等則輸出相應的進制,若不等則輸出錯誤信息。當然了,對于多種可能成立的情況,找出符合要求的進制最小的一組就行了。信息的

23、格式見測試用例。程序: #includeint main() long int pm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0;int a30,b30;char m30,n30;int i,j,g,k,max1=0,max2=0,flag=0;scanf(%s%s,m,n);for(i=0;mi!=0;i+)if(mi=A&mi=0&mi=9)ai=mi-48;max1=max1(ai+1)?(ai+1):max1;max1=max1=A&nj=0&nj=9)bj=nj-48;max2=max2(bj+1)?(bj+1):max2;max2=max22?2:max2;pn=

24、j;for(i=max1,j=max2;i=36&j=0;g-) p+=ag*w;w=w*i;for(k=pn-1;k=0;k-) q+=bk*e;e=e*j;if(pq) j+; else flag=1; printf(%s (base %d) = %s (base %d)n,m,i,n,j); break; if(flag=0) printf(%s is not equal to %s in any base 2.36n,m,n);return 0;21. 零錢換整錢 小明手中有一堆硬幣,小紅手中有若干張10元的整錢。已知 1 角的硬幣厚度為 1.8mm,5 角的硬幣厚 1.5mm, 1

25、元的硬幣為 2.0mm 。小明和小紅一起玩游戲,小紅拿出若干張10元的紙幣,小明要將 1 角的硬幣放成一摞,將 5 角的硬幣硬幣放成一摞,將 1 元的硬幣放成一摞,如果 3 摞硬幣一樣高,并且金額能夠正好小紅要求的面值,則雙方可以進行交換,否則沒有辦法交換。輸入:小紅希望交換幾張10元的紙幣輸出:1 角的數量,5 角的數量,1元的數量程序:三種硬幣厚度公倍數:18mm(1角10個共1元,5角12個共6元,1元9個共9元,要想3摞硬幣一樣高總錢數必須是16元(1+6+9)的公倍數)#include int main() int n,t,x,y,z;scanf(%d,&n);t=n*10;if(t

26、%16!=0)printf(No change.n);else t=t/16; x=t*10; y=t*12; z=t*9; printf(%d,%d,%dn,x,y,z);return 0; 22. 買東西.某商品有A、B、C三種品牌,各品牌的價格各不相同,其中A品牌的價格為每個5元, B品牌為每個3元,而C品牌為每3個1元。如果要用 M 元錢買 N 個該商品,要求每個商品至少買一個,編程求各種品牌各能買多少個。輸入:先后輸入M(錢數)及N(商品個數)的實際數值輸出:所有可能情況下可以購買的3種商品的個數,按A、B、C品牌的順序輸出,用逗號分隔。例如:2,30,68;表示A品牌商品2個、B品

27、牌商品30個、C品牌商品68個。 要求:因為有多個結果,結果的排序按照A品牌的個數從少到多的順序輸出。程序:#include int main() int i,j,k;float m,n;scanf(%f%f,&m,&n);for(i=1;in-1;i+)for(j=1;j=n-1-i;j+)for(k=1;k=n-i-j;k+)if(i*5+j*3+k*1.0/3)=m&i+j+k=n)printf(%d,%d,%dn,i,j,k);return 0; 23. 誰能出線電視臺舉辦“超級學生”才藝大賽,由于報名人數狂多,所以要先進行分組預賽。按規(guī)定,每10名學生為一個預賽小組,評委打出分數(0

28、100分),各小組第一名可以進入下一輪;如果有多名學生得分相同都是第一名,則可同時進入下一輪。輸入:按順序給出一個小組10個人的最后得分(int)。輸出:能夠出線的學生序號(09)。程序: #include int main() int i,s10=0,max=0; for(i=0;i10;i+) scanf(%d,&si); if(maxsi) max=si;for(i=0;i10;i+)if(si=max)printf(%dn,i);return 0; 24. 尋找特殊偶數有一種特殊偶數,它每一位上的數字都兩兩不相同。我們現在需要找出四位數中某一區(qū)間內的這類偶數。輸入所要尋找的四位偶數的范

29、圍。每組輸入有兩個數字:第一個數字是最小范圍;第二個數字是最大范圍。如果輸入遇到0,輸入結束。輸出列出此范圍內的所有特殊偶數,并且列出此范圍內特殊偶數的個數。程序:#include#includemain()int i,j,k,a,b,c,d,m=0,e;for(e=0;e=0;e+)scanf(%d%d,&i,&j);if(i=0)|(j=0) break;else if(i9999|i9999|j1000) printf(Errorn);else for(k=i;k=j;k+)if (k%2=1) continue;a=k/1000;b=(k%1000)/100;c=(k%100)/10;

30、d=k%10;if(a=b)|(b=c)|(c=d) |(d=a)|(a=c)|(d=b) continue;printf(%d ,k);m+=1;printf(ncounter=%dn,m); m=0;25.輸出字母圍起的正方形輸入N*N圖形正方形的邊長N,圖形左上角的字母,輸出由字母圍成的空心正方形。輸出的字母是順時針連續(xù)的,且是循環(huán)的,即輸出字母Z后輸出字母A。注意在兩個字母之間有一個空格。程序: #include int main() int n,i,j,t; char m; scanf(%d %c,&n,&m); for(i=0;in;i+) if(i=0) for(j=0;jn;j

31、+) t=m+j;if(m90)|(m96&t122)t=t-26; if(j=n-1) printf(%cn,t); else printf(%c ,t); else if(i=n-1) for(j=0;jn;j+) t=m+3*n-3-j; if(m90)|(m96&t122) t=t-26; if(j=n-1) printf(%cn,t); else printf(%c ,t); else for(j=0;j2*n-1;j+) if(j=0) t=m+4*n-4-i; if(m90)|(m96&t122) t=t-26; printf(%c,t); else if(j=2*n-2) t=

32、m+n-1+i; if(m90)|(m96&t122) t=t-26; printf(%cn,t); else printf( ); return 0; H3:猜數字(選作)有如下一組數字,其中每個數字都在 1 63 之間, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6

33、7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40

34、41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 現在需要編寫一個程序,當從鍵盤輸入某數字在且僅在哪幾行出現了,該程序可以“猜”出這個數字是幾。輸入:程序的輸入是一串以空白符分開的數字,當輸入 0 時表示輸入結束。輸出:輸出猜到的數字。程序:#include int main() int a7,m,n=0,i,p=0; for (i=0;i7;i+) scanf(%d,&ai); n+; if (ai=0) break; scanf( ); for (m=1;m64;m+) p=0; for (i=0;i3

35、1&m48|m16) p=1;break; if (ai=6) if (m32) p=1;break; if (p=0) printf(%dn,m);break; return 0; H4:小蜜蜂(選作)一只小蜜蜂在如下圖所示的蜂窩上爬行。它爬行時,只能從一個格爬到相鄰的大號格子中。例如,從 1 號格子可以爬到 2 號或者 3 號格子,從 2 號則可以爬到 3 號或者 4 號格子。請問從一個格子 a 爬到一個格子 b 一共有多少種可行的路線。 輸入:分別是起始點 a 和終止點 b 的編號。( a 和 b 在 1100 之間,且 ab 。) 輸出:程序:#includestdio.h #defi

36、ne N 50 int main() int bN=0; int cN=0; int i,j,k,n,a1,a2,t,l; b1=c1=1; scanf(%d%d,&a1,&a2); n=a2-a1+1; for(j=3;j=n;j+) for(i=1;i=10) l=1; bi+1=bi+1+1; bi=bi%10; k=N; while(b-k=0) for(i=k;i=1;i-) printf(%d,bi); printf(n); return 0; #include int main()long double num1,num2,num3=0;int a=0,b=0,i;scanf(%

37、d %d,&a,&b);num1=1;num2=2;if(b-a=1)printf(1n);else if(b-a=2)printf(2n);else for(i=3;i=b-a;i+) num3=num1+num2; num1=num2; num2=num3; printf(%.0lfn,num3);return 0; H5.鋪地板(選作)背景:你是一名室內裝潢工程隊的配料員。你的伙伴們喜歡采用“之”字型的方式鋪大理石地磚,圖案如下:1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 學了 C 語言以后,你決定編

38、寫一個程序,幫助你的同伴生成這樣的圖形。輸入:方陣N的大小。輸出方陣。程序:#include int main() int i=0,j=0,g,n,t=1; int a100100; scanf(%d,&n); for(g=0;gn;g+) if(g%2!=0) for(i=0,j=g;i=0;i+,j-)aij=t; t+; else for(i=g,j=0;i=0&j=g;i-,j+)aij=t; t+; for(g=1;gn;g+) if(g%2!=0) for(i=g,j=n-1;i=g;i+,j-)aij=t; t+; else for(i=n-1,j=g;i=g&jn;i-,j+)aij=t; t+; for(i=0;in;i+) for(j=0;jn;j+) if(j=n-1) printf(%2d,aij); else printf(%2d ,aij); printf(n); return 0; H6 暈(選作)看著這樣的“回”形圖案你暈嗎?讓我們不用數組,來做出它。輸入:n。正方形的邊長輸出:邊長為 n 的數字回形方陣。程序:#include int main() int a2020,i,j,n,m=1,l,k=0; scanf(%d,&n); l=n; for(i=1;i=(n+1)/2;i+) for(j=0;jl;j+) akj+

溫馨提示

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

評論

0/150

提交評論