第一篇:C語言作業(yè)總結(jié)
5.9 判斷素?cái)?shù)
從鍵盤上輸入一個(gè)大于或等于2的正整數(shù)n,判斷它是否是素?cái)?shù)。n從鍵盤輸入。提示:素?cái)?shù)定義:只能被1或它本身整除的正整數(shù)為素?cái)?shù),例如:2,3,5,7,11,13 且1不是素?cái)?shù)。解題思路:、讓 n 被 i 整除(i 的值從 2 變到 n-1)2、如果 n 能被 2 ~(n-1)之中任何一個(gè)整數(shù)整除,則表示 n 肯定不是素?cái)?shù),不必再繼續(xù)被后面的整數(shù)除,因此,可以提前結(jié)束循環(huán)。注意:此時(shí) i 的值必然小于 n。
1.2.3.4.5.6.7.8.9.10.11.12.13.#include
for(i=2;i<=a;i++){ if(a%i==0)
break;}
if(i else printf(“是素?cái)?shù)n”);return 0;} 5.7 統(tǒng)計(jì)個(gè)數(shù) n 從鍵盤輸入,統(tǒng)計(jì)在 [1,n] 中,有多少個(gè)是 7 的倍數(shù)或末尾是 7 的數(shù)。例如輸入 20,在 [1,20] 中滿足條件的數(shù)(7,14,17)共有 3 個(gè)。 1.2.3.4.5.6.7.8.9.10.#include for(i=1;i<=a;i++){ if(i%7==0||i%10==7)b=b+1;} printf(“%d個(gè)n”,b); return 0;} 5.12 老鼠咬壞的賬本 老鼠咬壞了帳本,式中符號(hào)□是被老鼠咬掉的地方。要恢復(fù)下面的等式,應(yīng)在2個(gè)□中分別填上一個(gè)數(shù)字,編程輸出這2個(gè)數(shù),2數(shù)間用逗號(hào)隔開,如3,5。3□×6237=□3×3564 提示:用窮舉法 1.2.3.4.5.#include } } return 0;} 5.10 第n個(gè)閏年 編程找出自1601開始到2015年之間的第n個(gè)閏年并輸出是哪一年,n從鍵盤輸入。閏年條件:四年一閏,百年不閏;四百年又閏。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include for(i=1601;i<=2015;i++){ if((i%4==0&&i%100!=0)||(i%400==0))c=c+1;if(a==c){ break;} } printf(“第%d個(gè)閏年是%dn”,a,i); return 0;} 5.13 滿足條件的三角形 直角三角形一條直角邊長(zhǎng)是24,其余的邊長(zhǎng)都是正整數(shù),而且斜邊的長(zhǎng)度不超過50。輸出出所有滿足條件的三角形。 1.2.3.4.5.6.7.8.9.10.11.12.13.#include { printf(“24,%d,%dn”,a,i);} } } return 0;14.} 5.14 多個(gè)數(shù)輸出控制 輸出 1-35 之間的偶數(shù),每行輸出 4 項(xiàng),最后一行輸出時(shí)若不足 4 項(xiàng)也按一行輸出, 并且統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)。 1.#include 7.if(b%4==0)printf(“n”);8.} 9.if(b%4!=0)printf(“n”); 10.printf(“偶數(shù)的個(gè)數(shù)為%dn”,b);11.return 0;12.} 5.15 圖案輸出 編程輸出由星號(hào)組成的圖形: * * * * * * * * * * * * * * * 1.2.3.4.5.6.7.8.9.10.11.12.#include printf(“n”);} return 0;} 6.1 統(tǒng)計(jì)區(qū)間的奇數(shù)個(gè)數(shù) n從鍵盤輸入,統(tǒng)計(jì)區(qū)間[20,n)內(nèi)的大于26的奇數(shù)的個(gè)數(shù)并輸出。 1.2.3.4.5.6.7.#include if(m>26){ for(i=27;i<=m;i++){ if(i%2!=0)8.9.10.11.12.13.14.a=a+1;} printf(“奇數(shù)的數(shù)量=%d個(gè)n”,a);} else if(20<=m<=26)printf(“奇數(shù)的數(shù)量=0個(gè)n”); return 0;} 6.2 發(fā)票的編碼 有一張發(fā)票上有一個(gè)5位數(shù)的號(hào)碼67口口8,其中百位和十位上的數(shù)字看不清了,但知道該數(shù)能夠被78整除,也能被67整除。編程輸出該號(hào)碼。提示:用窮舉法 1.2.3.4.5.6.7.8.9.10.11.12.#include return 0;} 6.3 正負(fù)交替的多項(xiàng)式求和 計(jì)算S=-1/1+1/2-1/3+1/4?+1/n,其中 n 從鍵盤輸入,結(jié)果保留3位小數(shù)。提示: 從 1+2+3+...+ n 可以變換出各種多項(xiàng)式的求和。 1.2.3.4.5.6.7.8.9.10.11.12.13.#include {float m,i,c,a=0,b=0;scanf(“%f”,&c); for(i=1;i<=c;i=i+2){ a=a-1.0/i;} for(m=2;m<=c;m=m+2){ b=b+1.0/m;} printf(“%.3fn”,a+b);return 0;} 6.4 統(tǒng)計(jì)大寫字母的個(gè)數(shù) 從鍵盤輸入12個(gè)字符,輸出其中大寫字母的個(gè)數(shù)。 1.2.#include for(i=1;i<=12;i=i+1){ scanf(“%c”,&a);if(a<='Z'&&a>='A')m=m+1;} printf(“%dn”,m);return 0;} 6.5 正整數(shù)的位數(shù) 2016.3.30 模塊考試原題: 從鍵盤上輸入一個(gè)正整數(shù),輸出該數(shù)的位數(shù)。 例如:輸入 1234,輸出 4 位數(shù);輸入 123456,輸出 6 位數(shù)。提示:考點(diǎn):模(求余)運(yùn)算,循環(huán) 假設(shè)該正整數(shù)(不包括0)放在a中,重復(fù)a=a/10,直到a為0為止。每除一次計(jì)數(shù)一次,因?yàn)椴荒艽_定循環(huán)的次數(shù),while 循環(huán)是首選。例如三位數(shù):123/10=12,12/10=1,1/10=0 1.2.3.4.5.6.7.8.9.10.11.#include 2016.3.30 模塊考試原題: 輸入一個(gè)字符,判斷并輸出其為大寫或小寫。 1.2.3.4.5.6.7.8.9.10.11.#include scanf(“%c”,&i);if(i>='A'&&i<='Z')printf(“大寫n”);else if(i>='a'&&i<='z')printf(“小寫n”);return 0;} 6.9 最后1 項(xiàng)為特別小的數(shù)的多項(xiàng)式之和 計(jì)算 1/1+1/3+1/5+?, 直到最后 1 項(xiàng)的值小于 10-6 為止, 多項(xiàng)式累加和保留2位小數(shù)。提示: (1)第 1 項(xiàng) =1,第二項(xiàng) =1/3,第三項(xiàng) =1/5......每一項(xiàng)的值越來越小,小于 10-6 的是哪一項(xiàng)呢? (2)10-6 在程序中的表示方式: 0.000001 或者 1e-6 1.2.3.4.5.6.7.8.9.10.11.12.#include while((1.0/a)>0.000001){ b=b+1.0/a;a=a+2;} printf(“%.2fn”,b); return 0;} 6.10 最大值的位置 從鍵盤上輸入8個(gè)數(shù),輸出最大數(shù)是第幾個(gè)輸入的。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include } printf(“最大數(shù)在第%d位置n”,c);return 0;} 6.11 區(qū)間輸出 m、n從鍵盤輸入,將區(qū)間[m,n)內(nèi)的不能被3整除的數(shù)輸出。 1.2.3.4.5.#include for(i=a;i if(i%3!=0)printf(“%d,”,i);} printf(“n”);return 0;} 6.14 統(tǒng)計(jì)及格人數(shù) 從鍵盤輸入10個(gè)學(xué)生的成績(jī),要求統(tǒng)計(jì)及格人數(shù)并輸出。 1.2.3.4.5.6.7.8.9.10.#include return 0;} 6.16 尋找玫瑰花(單重循環(huán)) 如果一個(gè) 4 位數(shù)等于它的各位數(shù)字的 4 次方和,則這個(gè)4 位數(shù)稱為“玫瑰花”數(shù),例如 1634 就是一個(gè)玫瑰花數(shù)。要求用單重循環(huán)完成,即不使用窮舉法,求出所有玫瑰花數(shù)。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include if(b*b*b*b+i*i*i*i+d*d*d*d+r*r*r*r==a)printf(“%dn”,a);} return 0;} 6.17 雞兔同籠問題之二 設(shè)在一只籠子里關(guān)著雞和兔子共m只,籠子中的腳數(shù)有n,求雞和兔各有多少只? m和n從鍵盤輸入。 編程思路:窮舉法。 1.2.3.#include if((a%2!=0)&&(b%2!=0))printf(“無此結(jié)果n”);else for(i=1;i<=a;i++){ for(d=1;d<=a;d++){ if((i+d==a)&&(2*i+4*d==b))printf(“雞=%d,兔=%dn”,i,d);} } return 0;} 6.18 小寫字符轉(zhuǎn)換成大寫輸出 2016.3.30 模塊考試原題: 連續(xù)輸入15個(gè)小寫字符,將他們轉(zhuǎn)換成大寫字符并輸出。 小寫轉(zhuǎn)大寫:字符-32 考點(diǎn):字符輸入輸出,循環(huán) 1.2.3.4.5.6.7.8.9.10.#include printf(“%cn”,a);} return 0;} 7.2 [n-200]區(qū)間滿足條件的個(gè)數(shù) n, k 從鍵盤上輸入, 輸出 [n-200] 間所有末位是k或者能被k整除的數(shù)的個(gè)數(shù)。 1.2.3.4.5.6.7.8.9.10.11.#include for(b=m;b<=200;b++){ if(b%n==0||b%10==n)a=a+1;} printf(“%dn”,a);return 0;} 7.3 100匹馬運(yùn)100擔(dān)貨 匹馬馱 100 擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱 2 擔(dān),小馬兩匹馱1擔(dān),編寫程序計(jì)算大 中 小馬的個(gè)數(shù),以例如 20,0,80 格式輸出。1.2.3.4.5.6.7.8.9.10.11.12.13.#include if((b+m+n==100)&&(3*m+2*n+b*0.5==100))printf(“%d,%d,%dn”,m,n,b);} } return 0;} 7.4 數(shù)之和 輸出兩位數(shù)中不能被 4 或 5 整除的數(shù)之和。 1.2.3.4.5.6.7.8.9.10.#include return 0;} 7.5 聚餐問題 現(xiàn)有30人聚餐,其中可能有男人、女人和小孩,吃飯餐費(fèi)共500元。每個(gè)男人30元,每個(gè)女人20元,每個(gè)小孩10元。問男人女人小孩各多少人? 輸出每種可能,如男人0人、女人20人、小孩10人,則輸出0,20,10? 1.2.3.4.5.6.7.8.9.10.11.12.13.#include if((b+m+n==30)&&(30*m+20*n+b*10==500))printf(“%d,%d,%dn”,m,n,b);} } return 0;} 7.6 數(shù)組元素的輸入輸出 從鍵盤依次輸入10個(gè)整數(shù),按輸入順序的相反順序(即逆序)進(jìn)行輸出。提示: (1)首先打消想定義 a、b、c、d、e、f、g、h、i、j 的想法。(2)學(xué)會(huì)數(shù)組的聲明、數(shù)組元素的輸入和輸出。 1.2.3.4.5.6.7.8.9.10.11.12.#include printf(“n”); return 0;} 7.12 輸出最小數(shù)及其所對(duì)應(yīng)的下標(biāo) 從鍵盤上輸入10個(gè)整數(shù),編程輸出其中最小的數(shù)以及其所對(duì)應(yīng)的下標(biāo)。要求用數(shù)組實(shí)現(xiàn)。提示:例如 89、23、44、55、77、11、34、20、35、30,這十個(gè)數(shù)中最小值為11,它在數(shù)組中的下標(biāo)為 5。(1)第一段循環(huán):給數(shù)組元素賦值; (2)假定 最小值= 第一個(gè)數(shù)組元素,最小值的下標(biāo)= 第一個(gè)數(shù)組元素的下標(biāo);(3)第二段循環(huán):最小值和后面的 9 個(gè)數(shù)組元素比較;(4)輸出結(jié)果; 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include { int b,a[10],m=0,c=0;for(b=0;b<=9;b++){ scanf(“%d”,&a[b]);} m=a[0]; for(b=0;b<=9;b++) { if(a[b] return 0;} 7.13 查找數(shù) 已知數(shù)學(xué)集合A為{1,3,5,9,11,13,15,19,23,25}, 從鍵盤上輸入一個(gè)自然數(shù) n,若n在集合A中,則輸出 n 在集合中的所處的位置,例如:輸入 5,則輸出其在集合中的 位置=3 ;輸入 10,輸出“無此數(shù)”。提示: (1)本題涉及的的位置 = 數(shù)組元素的下標(biāo) +1 ; (2)使用數(shù)組存儲(chǔ)集合A,然后順序遍歷整個(gè)數(shù)組,如果找到(與n相等),即退出(break)并輸出位置,如果沒有找到,輸出無此數(shù)。 1.2.3.4.5.6.7.8.9.10.11.12.13.#include { int b,a[10]={1,3,5,9,11,13,15,19,23,25},m,c=0;scanf(“%d”,&m); for(b=0;b<=9;b++){ if(m==a[b]) break; else if(b==9&&m!=a[9])c=1;} if(c==0)printf(“位置=%dn”,b+1);if(c==1)printf(“無此數(shù)n”); return 0;} 7.14 英文字母大小寫相互轉(zhuǎn)換 從鍵盤輸入一個(gè)英文字母,編程完成大小寫相互轉(zhuǎn)換。轉(zhuǎn)換公式:小寫字母=大寫字母+32 提示:(x>='a'&&x<='z')x是小寫字母(x>='A'&&x<='Z')x是大寫字母 1.2.3.4.5.6.7.8.9.#include if(a>='A'&&a<='Z')a=a+32;else if(a>='a'&&a<='z')a=a-32;printf(“%cn”,a);return 0;} 7.15 斐波拉契數(shù)列前n項(xiàng)之和(數(shù)組法)n 從鍵盤上輸入,n 的范圍為: 1<=n<=30 利用數(shù)組法編程輸出斐波拉契數(shù)列: 1,1,2,3,5,8,13,21......輸出這個(gè)數(shù)列 的前 n 項(xiàng) 之和。提示: (1)第一段循環(huán): 求出數(shù)列的前n項(xiàng);(2)第二段循環(huán):求前n項(xiàng)的和; 1.2.3.4.5.6.7.#include { int a[30]={1,1},b,c=0,i;scanf(“%d”,&b); for(i=2;i printf(“%dn”,c);return 0;} 7.18 計(jì)算x的y次方 從鍵盤輸入2個(gè)整數(shù)x和y,計(jì)算x的y次方并輸出。 1.2.3.4.5.6.7.8.9.10.11.#include for(i=1;i<=b;i++){ c=c*a;} printf(“%dn”,c); return 0;} 7.21 統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù) 統(tǒng)計(jì) 100-200 之間素?cái)?shù)的個(gè)數(shù),要求不使用數(shù)組完成.1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include break;} if(i==a)b++;} printf(“%dn”,b);return 0;} 7.22 成績(jī)?cè)u(píng)定 從鍵盤輸入8個(gè)成績(jī),去掉最高分、最低分進(jìn)行平均分計(jì)算,并輸出(以5位小數(shù)形式),要求不用數(shù)組,只用循環(huán)完成。 1.2.3.4.5.6.#include for(i=2;i<=8;i++){ scanf(“%f”,&b);sum=sum+b;if(max if(min>b)min=b;} printf(“%.5fn”,(sum-max-min)/6);return 0;} 8.2 累加和大于s 時(shí)的最小項(xiàng) s=1+2+3+4...+n , 從鍵盤上輸入一正整數(shù)s , 求累加和大于 s 時(shí)的最小項(xiàng)數(shù)n 1.2.3.4.5.6.7.8.9.10.11.#include { int a,b=0,i,c=0;scanf(“%d”,&a); while(b<=a){ c=c+1;b=b+c;} printf(“%dn”,c);return 0;} 8.5 分行控制輸出斐波拉契數(shù)列前n項(xiàng) n從鍵盤上輸入,斐波拉契數(shù)列:1,1,2,3,5,8,13,21...求出這個(gè)數(shù)列的前n項(xiàng)并輸出, 要求每隔4個(gè)換一行,最后一行輸出時(shí)若不足 4 項(xiàng)也按一行輸出。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include { int i,a[20]={1,1},c,b,k=2;scanf(“%d”,&c);printf(“1,1,”);for(i=2;i { a[i]=a[i-2]+a[i-1];printf(“%d,”,a[i]);k=k+1;if(k==4){ printf(“n”);k=0;} } printf(“n”);17.18.return 0;} 8.6 輸出圖形之一 在屏幕上輸出 * 組成的圖形,行數(shù)從鍵盤輸入。提示: 打印圖形通常用兩重循環(huán)實(shí)現(xiàn),輸出的行數(shù)、每一行的空格數(shù)和每一行星號(hào)數(shù)分別由各自的循環(huán)控制。 外層循環(huán)控制圖形的行數(shù),該圖形一共有n行.第一個(gè)內(nèi)循環(huán),要考慮每行中,先輸出若干個(gè)空格, 確定打印圖案的起始位置,第二個(gè)內(nèi)循環(huán), 用來控制圖案中的某一行的星號(hào)個(gè)數(shù)。 1.2.3.4.5.6.7.8.9.10.11.12.13.#include for(b=1;b<=c;b++){ for(i=1;i<=c-b;i++)printf(“ ”);for(k=1;k<=2*b-1;k++)printf(“*”);printf(“n”);} return 0;} 8.7 若干成績(jī)統(tǒng)計(jì)及格人數(shù) 從鍵盤輸入若干學(xué)生的成績(jī),碰到輸入非法成績(jī)(輸入負(fù)數(shù)或者超過100的數(shù))時(shí)結(jié)束,要求統(tǒng)計(jì)及格人數(shù)并輸出。提示:本題不涉及數(shù)組。 循環(huán)結(jié)束條件是非法成績(jī),因循環(huán)次數(shù)不確定,while 循環(huán)是首選。 1.2.3.4.5.6.7.8.9.10.11.12.#include if(i>=60)k=k+1;while(i>=0&&i<=100){ scanf(“%d”,&i);if(i>=60)k=k+1;} printf(“及格人數(shù)=%d個(gè)n”,k-1); return 0;} 8.10 輸出所有的因子及其和 鍵盤輸入正整數(shù),輸出該整數(shù)的所有因子,例如輸入6,則輸出1,2,3,6, 并求其所有因子的和。 提示:不涉及數(shù)組 假如正整數(shù) n 除以m,結(jié)果是無余數(shù)的整數(shù),那么我們稱 m 就是 n 的因子。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include for(i=1;i<=c;i++){ if(c%i==0){ v=v+i;printf(“%d,”,i); } } printf(“n”); printf(“因子和=%dn”,v);return 0;} 8.13 天數(shù)計(jì)算-數(shù)組法 輸入 年 月 日,計(jì)算是該年的第多少天? 提示: 建議用數(shù)組實(shí)現(xiàn)計(jì)算是該年的第多少天,即天數(shù)累計(jì)求和。分為兩種情況: 1、整月的天數(shù)參與累加求和(考慮大月、小月、2月天數(shù)具體情況) (4、6、9、11各30天,1、3、5、7、8、10、12各31天,平年2月28天,閏年2 月29天) 如果是閏年的2月,天數(shù)作一個(gè)修正。 閏年條件:四年一閏,百年不閏;四百年又閏 2、不完整月的天數(shù)直接用某日參與累加即可。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include { int i,c,a[13]={31,28,31,30,31,30,31,31,30,31,30,31},n[13]={31,29,31,30,31,30,31,31,30,31,30,31},b,m,x=0;scanf(“%d%d%d”,&c,&b,&m); if((c%4==0&&c%100!=0)||(c%400==0)){ for(i=0;i else { for(i=0;i printf(“第%d天n”,x);18.19.return 0;} 8.14 計(jì)算某年某月有多少天-數(shù)組法 從鍵盤輸入某年某月,然后計(jì)算并輸出該年該月有幾天。要求:用數(shù)組實(shí)現(xiàn)。 提示:事先將12個(gè)月對(duì)應(yīng)的天數(shù)依次保存到數(shù)組,然后根據(jù)月份(數(shù)組下標(biāo))找對(duì)應(yīng)的元素值(天數(shù))。 (4、6、9、11各30天,1、3、5、7、8、10、12各31天,平年2月28天,閏年2月29天)如果是閏年的2月,天數(shù)作一個(gè)修正。 閏年條件:四年一閏,百年不閏;四百年又閏 1.2.3.4.5.6.7.8.9.10.11.12.#include { int i,c,a[13]={31,28,31,30,31,30,31,31,30,31,30,31},n[13]={31,29,31,30,31,30,31,31,30,31,30,31},b,m,x=0;scanf(“%d%d”,&c,&b); if((c%4==0&&c%100!=0)||(c%400==0)){ printf(“%d天n”,n[b-1]);} else { printf(“%d天n”,a[b-1]);} return 0;} 8.15 輸出圖形之二 在屏幕上輸出 * 組成的圖形,行數(shù)n(為奇數(shù))從鍵盤輸入。提示: 菱形可以看做是一個(gè)正三角形和一個(gè)倒三角形的組合。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include for(i=1;i<=(a+1)/2;i++){ for(b=1;b<=(a+1)/2-i;b++)printf(“ ”);for(c=1;c<=2*i-1;c++)printf(“*”);printf(“n”);} for(i=1;i<=(a+1)/2-1;i++){ for(b=1;b<=i;b++)printf(“ ”); for(c=1;c<=a-2*i;c++)16.17.18.19.20.printf(“*”);printf(“n”);} return 0;} 8.16 數(shù)組冒泡排序法 從鍵盤上輸入正整數(shù) n(n<=50), 然后依次輸入n個(gè)正整數(shù),并保存到數(shù)組a,然后將這些整數(shù)進(jìn)行升序排序,輸出排序后的數(shù)組。提示: 本題數(shù)組元素個(gè)數(shù)不確定,可根據(jù)情況估計(jì)其上限定義數(shù)組,例如本題可定義 int a[50];1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.#include { int a[40],b,c,i,m;scanf(“%d”,&b); for(i=0;ia[i+1]){ m=a[i];a[i]=a[i+1];a[i+1]=m;} } } for(i=0;i return 0;} 8.17 輸出等差第n項(xiàng)值 給出一個(gè)等差數(shù)列的前兩項(xiàng)a1,a2,輸出第n項(xiàng)值。 例如:輸入a1,a2 分別為1,4 n為100時(shí),計(jì)算輸出該數(shù)列第n項(xiàng)的值 提示: 不涉及數(shù)組 1.2.3.4.5.#include { int b,c,i=0,m,n,s=1;scanf(“%d%d%d”,&b,&c,&m);i=c-b;6.7.8.9.10.11.for(n=1;n<=m-1;n++){ s=s+i;} printf(“%dn”,s);return 0;} 8.21 求1!+2!+3!+4!+5!+......+n!數(shù)列之和 n從鍵盤輸入,求1!+2!+3!+4!+5!+......+n!數(shù)列之和 提示: 不涉及數(shù)組.1.#include 3.{ int a,b,c=1,m=1;4.scanf(“%d”,&a);5.for(b=2;b<=a;b++)6.{ c=c*b;7.m=m+c;8.} 9.printf(“%dn”,m);10.} 9.1 判斷某整數(shù)是否包含6 輸入一個(gè)[1-100)的整數(shù),判斷該數(shù)是否包含6 ? 如果是(比如 16,63,69),則輸出 yes,不是(比如29,78)則輸出 no 1.2.3.4.5.6.7.8.9.10.11.12.#include return 0;} 408多項(xiàng)式和Ⅱ 求a+aa+aaa+aaaa+...+aaa..a(n個(gè)a),a和n的值從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include return 0;} 409彈跳小球 小球從100米高度落下,每次落地后反彈回原高度的1/2再落下,求小球第n次落地時(shí)總共經(jīng)過的路程,結(jié)果保留2位小數(shù)。n從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include return 0;} 411乘法口訣表 輸出九九乘法口訣表。 1.2.3.4.5.#include 猴子第一天摘了若干個(gè)桃子,吃了一半,不過癮,又多吃了1個(gè)。第二天將剩余的桃子又吃掉一半,并且又多吃了1個(gè)。此后每天都是吃掉前一天剩下的一半零一個(gè)。到第n天再想吃時(shí),發(fā)現(xiàn)只剩下1個(gè)桃子,問第一天它摘了多少桃子?天數(shù)n從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.#include return 0;} 413雞蛋數(shù) 有一籃子雞蛋,如果每次拿2個(gè)最后剩1個(gè),每次拿3個(gè)最后剩2個(gè),每次拿4個(gè)最后剩3個(gè),每次拿5個(gè)最后剩4個(gè),輸出籃子中的雞蛋數(shù)目。 1.2.3.4.5.6.7.8.9.10.11.#include for(i=1;i<100;i++){ a=i; if(a%2==1&&a%3==2&&a%4==3&&a%5==4)printf(“%dn”,a);} return 0;} 414將軍點(diǎn)兵 一將軍帶兵出征前清點(diǎn)人數(shù),士兵按從1到5排隊(duì)報(bào)數(shù),最后一個(gè)士兵報(bào)的數(shù)是1;按從1到6排隊(duì)報(bào)數(shù),最后一個(gè)士兵報(bào)的數(shù)是5;按從1到7報(bào)數(shù),最后一個(gè)士兵報(bào)的數(shù)是4;再按從1到11排隊(duì)報(bào)數(shù),最后一個(gè)士兵報(bào)的數(shù)是10。計(jì)算至少(至少,至少)有多少士兵? 1.2.#include for(i=1;i<3000;i++){ a=i; if(a%5==1&&a%6==5&&a%7==4&&a%11==10)printf(“%dn”,a);} return 0;} 415三色球 一個(gè)袋子里裝有3個(gè)紅球、5個(gè)白球和6個(gè)黑球,要任意取出8個(gè)球,且其中必須有白球,輸出可能的方案數(shù)目。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include for(i=1;i<=5;i++)for(j=0;j<=3;j++) for(k=0;k<=6;k++){ a=i+j+k;if(a%8==0)sum=sum+1;else sum=sum+0;} printf(“%dn”,sum);return 0;} 416換錢 要將100元人民幣兌換成5元、10元和20元紙幣,輸出兌換方法的總數(shù)。 1.2.3.4.5.6.7.8.9.10.11.12.13.#include for(i=0;i<=20;i++)for(j=0;j<=10;j++) for(k=0;k<=5;k++){ a=i*5+j*10+k*20;if(a==100)sum=sum+1;else sum=sum+0;14.15.16.17.} printf(“%dn”,sum);return 0;} 417百錢買百雞 百錢買百雞問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何,輸出所有的買法,雞翁、雞母、雞雛間以逗號(hào)隔開。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include for(i=0;i<=20;i++)for(j=0;j<=33;j++) for(k=0;k<=100;k++){ a=i*5+j*3+k/3;b=i+j+k; if(a==100&&b==100&&k%3==0)printf(“%d,%d,%dn”,i,j,k);} return 0;} 418百變圖形(1) 在屏幕上輸出 * 組成的圖形,行數(shù)和 * 數(shù)從鍵盤輸入。 提示:輸出的行數(shù)、每一行的空格數(shù)和每一行星號(hào)數(shù)分別由各自的循環(huán)控制。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include 在屏幕上輸出 * 組成的圖形,行數(shù)從鍵盤輸入。1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include 在屏幕上輸出 * 組成的圖形,行數(shù)(為奇數(shù))從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.#include for(i = 0;i <(x+1)/2;i++){ for(j = 0;j <((x-(2*i+1))/2);j++)printf(“ ”); for(j = 0;j <(2*i + 1);j++)printf(“*”); printf(“n”);} for(i = 0;i <(x-1)/2;i++){ for(j = 0;j <(i+1);j++)printf(“ ”); for(j = 0;j<(x-(i+1)*2);j++)printf(“*”);printf(“n”);} return 0;} 422數(shù)字翻轉(zhuǎn) 從鍵盤輸入一個(gè)整數(shù),將該數(shù)翻轉(zhuǎn)輸出。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include else if(b>100&&b<1000){d=b/100;a=(b/10)%10;c=b%10;printf(“%dn”,c*100+a*10+d);} else { i=b/1000;d=(b/100)%10;a=(b/10)%10;c=b%10;printf(“%dn”,c*1000+a*100+d*10+i);} return 0;} 第N個(gè)素?cái)?shù) 輸出1000以內(nèi)的第n個(gè)素?cái)?shù),n從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.#include break;} if(b==c){ n++;} c++;b=1; if(n==a)break;} printf(“%dn”,c-1);25.26.return 0;} 百變圖形(4) 輸入一個(gè)正整數(shù),輸出如下圖形。 測(cè)試用例 1 3? 1? 2? 3 3? 2? 1? 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.#include int i;scanf(“%d”,&a); while(x while(x printf(“ ”);z++;} y=0; while(y<(x+1)*2+1){ z=1;if(x==0){ printf(“%d”,d);y++;break;} else { if((y==0||y==(x+1)*2)&&x!=0){ printf(“%d”,d);35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.} else { printf(“ ”);} } y++;} printf(“n”);x++;d=d+1;} while(x>=a&&x int g;g=a; if(x==a+a-2){ z=0;} while(z<=x+1-a){ printf(“ ”);z++;} y=0;while(y<(a+a-1-x)*2+1){ z=0; if(x==a+a-2){ printf(“%d”,d-2);y++; break;} else { if(y==0||y==(a+a-1-x)*2){ printf(“%d”,d-2);} 79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.else { printf(“ ”);} } y++; } printf(“n”);x=x+1;d=d-1;} } return 0;} 505最小數(shù)及位置 從鍵盤上輸入n個(gè)數(shù)(n也從鍵盤輸入),輸出其中最小的數(shù)以及該數(shù)在數(shù)組中的位置。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.#include for(i=1;i if(a[i] min=a[i];j=i;} else { continue;} } printf(“最小數(shù)%d位于第%d個(gè)n”,min,j+1); return 0;} 506數(shù)字翻轉(zhuǎn) 從鍵盤輸入一個(gè)整數(shù),將該數(shù)翻轉(zhuǎn)輸出。 提示:將分離出的整數(shù)的每一位數(shù)字保存到數(shù)組中,然后需要判斷前幾位是否為0,如果為0則前幾位不輸出。 1.int i,j,k,b=0,c=1,aa=0;2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.aa=a; for(i=1;a>=10;i++)a=a/10; for(j=0;j num[j]=aa%10;aa=aa/10;} for(k=1;k printf(“%dn”,b);return 0;} 418百變圖形(1) 在屏幕上輸出 * 組成的圖形,行數(shù)和 * 數(shù)從鍵盤輸入。 *****? *****? *****? *****? 提示:輸出的行數(shù)、每一行的空格數(shù)和每一行星號(hào)數(shù)分別由各自的循環(huán)控制。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include 在屏幕上輸出 * 組成的圖形,行數(shù)從鍵盤輸入。 *? ***? *****? *******? 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include 在屏幕上輸出 * 組成的圖形,行數(shù)(為奇數(shù))從鍵盤輸入。 *? ***? *****? ***? *? 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include for(i = 0;i <(x+1)/2;i++){ for(j = 0;j <((x-(2*i+1))/2);j++)printf(“ ”); for(j = 0;j <(2*i + 1);j++)printf(“*”); printf(“n”);} 16.17.18.19.20.21.22.23.24.25.26.for(i = 0;i <(x-1)/2;i++){ for(j = 0;j <(i+1);j++)printf(“ ”); for(j = 0;j<(x-(i+1)*2);j++)printf(“*”);printf(“n”);} return 0;} 第N個(gè)素?cái)?shù) 輸出1000以內(nèi)的第n個(gè)素?cái)?shù),n從鍵盤輸入。 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.#include break;} if(b==c){ n++;} c++;b=1; if(n==a)break;} printf(“%dn”,c-1);return 0;} Problem B: 算術(shù)基本運(yùn)算 Description 計(jì)算兩整數(shù)x和y(0 printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y); return 0;} Problem C: 求圓的面積和周長(zhǎng) Description 從鍵盤輸入圓的半徑,求圓的面積和周長(zhǎng),圓周率取3.14。Input 輸入一個(gè)浮點(diǎn)型數(shù)據(jù),有效數(shù)字不會(huì)超過十進(jìn)制的6位。Output 輸出為兩行。 第一行為圓的面積,第二行為圓的周長(zhǎng),格式見sample。Sample Input Sample Output Area: 28.260000 Perimeter: 18.840000 HINT 了解浮點(diǎn)類型的輸入、輸出和算術(shù)運(yùn)算符 #include double Area,Perimeter,r,p=3.14; scanf(”%lf“,&r); Area=p*r*r,Perimeter=2*p*r; printf(”Area: %lfn“,Area); printf(”Perimeter: %lfn“,Perimeter); return 0;} Problem D:平均值 Description 求3個(gè)數(shù)的平均值。Input 輸入只有一行,為3個(gè)較小的整數(shù)。Output 輸出為這3個(gè)整數(shù)的平均值,保留3位小數(shù)。Sample Input 1 2 3 Sample Output 2.000 HINT 注意除法運(yùn)算對(duì)整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)是不一樣的。#include int x,y,z; float ave; scanf(”%d %d %d“,&x,&y,&z); ave=(x+y+z)/3.0; printf(”%.3f“,ave); return 0;} Problem E: 貨幣兌換 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的人民幣兌換成美元、歐元、日元的金額,用空格分開。所有金額精確到小數(shù)點(diǎn)后兩位。Sample Input 668.5200 908.0685 7.9852 1500 1500 Sample Output 10027.80 13621.03 119.78 224.38 165.19 18784.75 HINT 了解浮點(diǎn)數(shù)據(jù)類型的精確度和輸出控制。 #include return 0; } Problem F: 求字符的值 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。Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 HINT 了解字符值的存儲(chǔ)和整型的關(guān)系。#include Problem G: 奇數(shù)還是偶數(shù)? Description 輸入一個(gè)整數(shù),判讀它是奇數(shù)還是偶數(shù)。Input 輸入只有一行,為一個(gè)100以內(nèi)的正整數(shù)。Output 輸出為一行。 若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”。Sample Input 30 Sample Output even HINT 用整數(shù)運(yùn)算可以解決,練習(xí)“?:”表達(dá)式。#include int x; scanf(”%d“,&x); if(x%2==0) printf(”even“); else printf(”odd“); return 0;} Problem H: 絕對(duì)值 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。Sample Input-1 1 Sample Output 1 1 HINT 求絕對(duì)值可以用標(biāo)準(zhǔn)庫函數(shù)來完成,也可以自己判斷。注意浮點(diǎn)數(shù)的輸出格式。求絕對(duì)值的函數(shù)在哪個(gè)頭文件?貌似很多人會(huì)搞錯(cuò),包括很多編書的人!#include int x; float y; scanf(”%d“,&x); scanf(”%f“,&y); printf(”%dn“,abs(x)); printf(”%gn“,fabs(y)); return 0;} Problem I: 簡(jiǎn)單的打折計(jì)算 Description 商店規(guī)定:消費(fèi)滿n元,可以打八八折。設(shè)某件商品標(biāo)價(jià)m元,輸入購買的件數(shù)x,計(jì)算出需要支付的金額(單位:元),精確到分。Input 輸入只有一行,三個(gè)整數(shù)m、n和x,且0 300 4 Sample Output 334.40 HINT 了解浮點(diǎn)型的輸出控制,注意整型和浮點(diǎn)型混合運(yùn)算過程中的數(shù)據(jù)類型轉(zhuǎn)換。#include int m,n,x; double y; scanf(”%d%d%d“,&m,&n,&x); y=m*x; if(y>n) y=y*0.88; else y=y; printf(”%.2lfn“,y); return 0;} Description 輸入一個(gè)正整數(shù)的年份,判斷是否為閏年。Input 輸入只有一行,為一個(gè)10000以內(nèi)的正整數(shù)。Output 輸出為一行。 若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。Sample Input 2010 Sample Output No HINT 了解邏輯運(yùn)算符和關(guān)系運(yùn)算符。#include int a; scanf(”%d“,&a); if(a%4==0&&a%100!=0||a%400==0) printf(”Yes“); else printf(”No“); return 0;} Problem K: GHacker的解謎過關(guān)游戲 Description GHacker最近癡迷于一個(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ù)范圍。Sample Input `13?:[7514],54.487==”(438922x159??392)%032n111cdef120$95;Sample Output 447899 HINT scanf()可以解決這個(gè)問題,注意轉(zhuǎn)義字符和格式控制字符。#include int i,sum,num; char str[1000]; while(scanf(“%s”,str)!=EOF) { num=sum=0; for(i=0;;i++) { if(str[i]>='0' && str[i]<='9') num=num*10+str[i]-'0'; else { sum=sum+num;num=0; if(str[i]=='
第二篇:C語言作業(yè)