下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1頁(yè)C 語(yǔ)言程序設(shè)計(jì) (第三版 )習(xí)題答案習(xí)題一一、名詞解釋?zhuān)? )程序 P1(2)程序設(shè)計(jì) P1( 3 )機(jī)器語(yǔ)言 P1( 4)高級(jí)語(yǔ)言 P2(5)匯編程序 P3 ( 6)編譯程序P4( 7)算法 P5(8)結(jié)構(gòu)化程序設(shè)計(jì)方法 P10二、簡(jiǎn)答題1. 設(shè)計(jì)程序時(shí)應(yīng)遵循哪些基本原則?P4答:正確性、可靠性、簡(jiǎn)明性、有效性、可維護(hù)性、可移植性。2. 算法具有哪些特點(diǎn)? 答:有窮性、確定性、有效性、有零個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出。3. 算法的表示形式有哪幾種? 答:自然語(yǔ)言、偽代碼、傳統(tǒng)流程圖、N-S 流程圖、計(jì)算機(jī)語(yǔ)言。4. 結(jié)構(gòu)化程序設(shè)計(jì)方法的三種基本結(jié)構(gòu)是什么? 答:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和
2、循環(huán)結(jié)構(gòu)。5. 傳統(tǒng)流程圖與 N-S 流程圖最大的區(qū)別是什么?答:N-S 流程圖去掉了在傳統(tǒng)流程圖中常用的流程線(xiàn),使得程序的結(jié)構(gòu)顯得更加清晰、簡(jiǎn)單。三、 用傳統(tǒng)流程圖或 N-S 流程圖表示求解以下問(wèn)題的算法。1. 從鍵盤(pán)輸入 10 個(gè)整數(shù),求出其中的最小數(shù)并輸出。2. 求 1+2+3+ + 100 的值。3. 求 1050 的所有素?cái)?shù)之和。4. 求下列分段函數(shù)的值。四、請(qǐng)參照本章例題,編寫(xiě)一個(gè)簡(jiǎn)單的C 程序,輸出以下三行信息。Yangtze University#include void main()printf( Yangtze Universityn);printf( *習(xí)題二、選擇題1
3、10: B C D C D D B C A A11 20: D A C D B D B A C D二、填空題1字母 L 或字母 l2%c(或字符)、%d(或整數(shù))3 在程序運(yùn)行過(guò)程中, 其值可以在一定的范圍內(nèi)變化的量405小數(shù)形式 、指數(shù)形式6關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶(hù)標(biāo)識(shí)符7字母、數(shù)字、下劃線(xiàn)、數(shù)字81892 、 1、3010 雙精度實(shí)數(shù)或double11賦值 、 逗號(hào) 、 20 、 20 、 20 、 4printf(*n);第2頁(yè)124 、 4習(xí)題三一、選擇題1 10:B C C B C C C D C C注:第 4 題答案 D 為:1022/33/二、 填空題1.printf 、 sc
4、anf2.h3.%5d4.05.e、E6.67.s、c8.*9.-、+10.i三、 編程題1.編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)以秒為單位的時(shí)間數(shù),將其換算成幾小時(shí)幾分幾秒,然后進(jìn) 行輸出。例如輸入的時(shí)間為 4258 秒,則輸出結(jié)果為: 1 小時(shí) 10 分 58 秒。#include void main()int x,h,m,s;scanf(%d,&x);h=x/3600; m=x%3600/60; s=x%60;printf(%ds=%d:%d:%d!n,x,h,m,s);2.編寫(xiě)程序,讀入三個(gè)整數(shù)給變量a、b、c,然后交換它們中的數(shù),把a(bǔ) 中原來(lái)的值給 b,把 b 中原來(lái)的值給 c,把 c
5、中原來(lái)的值給 a。#include void main()int a,b,c,t;printf(input a b c:); scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c); t=a;a=c;c=b;b=t;printf(a=%d,b=%d,c=%dn,a,b,c); 習(xí)題四一、填空題11 、02! = != & |3x=040 、2520 、0 、 0二、選擇題1 7: D D C A D D C三、程序閱讀題1.5959592.0.5000003.14.2第3頁(yè)5.66a=2,b=17passwar
6、n8.1四、 編程題1設(shè) a 為整型變量且其值大于零,請(qǐng)將以下if 語(yǔ)句改寫(xiě)成if(a60) m=1;else if(a70) m=2;else if(a80) m=3;else if(a90) m=4;else m=5;方法 1#include void main()int a,m;scanf(%d,&a);switch(a/10)case 0:case 1:case 2:case 3:case 4:case 5:m=1;break;case 6:m=2;break;case 7:m=3;break;case 8:m=4;break;default:m=5;break;printf(
7、m=%dn,m);方法 2#include void main()int a,m;scanf(%d,&a);m=0;switch(a/10)default:m+;case 8:m+;case 7:m+;case 6:m+;case 5:case 4:case 3:case 2:case 1:case 0:m+;printf(m=%dn,m);2. 編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)整數(shù),打印出它是奇數(shù)還是偶數(shù)。#include void main()int a;scanf(%d,&a);if(a%2=1)printf(%d is a odd number!n,a);elseprintf(
8、%d is a even number!n,a);3. 編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)字符,判別它是否是小寫(xiě)字母,如果是,將它轉(zhuǎn)換為大寫(xiě)字 母;如果不switch 語(yǔ)句。第4頁(yè)是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include void main()char ch;scanf(%c,&ch);if(ch=a & ch=z)ch=ch-32;printf(%cn,ch);4. 編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)不多于 4 位的正整數(shù),打印出它是幾位數(shù)。#include void main()int x,n;scanf(%d,&x);if(x1000) n=4;else if(x100)
9、 n=3;else if(x10) n=2;else n=1;printf(%dn,n);5. 當(dāng)一個(gè)人的月收入在 3500 元以下時(shí)免稅; 月收入在 3500 元到 5000 元之間時(shí), 超過(guò) 3500 的部分納稅 3%;月收入在 5000 元以上時(shí), 3500 至 5000 之間的部分納稅 3%,超過(guò) 5000 的 部分納稅 10%。編寫(xiě)程序從鍵盤(pán)輸入月收入 income ,計(jì)算并輸出應(yīng)交稅款 tax。#include void main()int income;float tax;scanf(%d,&income);if(income=3500) tax=0;else if(in
10、come=5000) tax=0.03*(income-3500);else tax=0.03*(5000-3500)+0.10*(income-5000);printf(tax=%fn,tax);6. 回文是指正讀和反讀都一樣的數(shù)或字符串。 例如: 12321、55455 、35553 等都是回文。 請(qǐng) 編寫(xiě)一個(gè)程序,從鍵盤(pán)上讀取一個(gè)包含五位數(shù)字的長(zhǎng)整數(shù),并判斷它是否是回文。 (提示: 用除法運(yùn)算和求余運(yùn)算把一個(gè)數(shù)的個(gè)位、十位、百位、千位等分別分離出來(lái)。 )#include void main()long x;int a,b,d,e;scanf(%ld,&x);a=x/10000;b
11、=x%10000/1000;d=x%100/10;e=x%10;if(a=e & b=d)printf(%ld is huiwen!n,x);elseprintf(%ld is not huiwen!n,x);第5頁(yè)習(xí)題五一、閱讀題1.82.43213.X4.-15.236.527.58.3二、填空題118223b=i+14175i=9、 j%3!=06d=1.0 、 k=k+1 、 k=10三、選擇題1 8: A D D A B D D A四、編程題1. 編寫(xiě)程序,打印出所有的“水仙花數(shù)” ,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字 的立方之和等于該數(shù)本身。例如, 407 是一個(gè)“
12、水仙花數(shù)” ,因?yàn)?407=43+03+73 。(注:若將 題意改為打印出最大的或最小的“水仙花數(shù)” ,則應(yīng)將循環(huán)語(yǔ)句作如何調(diào)整?) 。#include void main()int a,b,c,k;for(k=100;k=100;k-)a=k/100;b=k/10%10;c=k%10;if(k=a*a*a+b*b*b+c*c*c)第6頁(yè)printf(n);2. 編寫(xiě)程序,輸出 19802880 年所有閏年的年號(hào)。每輸出5 個(gè)年號(hào)換一行。#include void main()int k,flag,n=0;for(k=1980;k=2880;k+)flag=(k%4=0)&(k%100
13、!=0)|(k%400=0);if(flag)printf(%5d,k);n+;if(n%10=0) printf(n);printf(n);3. 編寫(xiě)程序,求 1-3+5-7+-99+101 的值。#include void main()int n,t=1,s=1;for(n=3;n=101;n+=2) t=-t; s=s+t*n; printf(s=%dn,s);4. 編寫(xiě)程序,計(jì)算并輸出下列級(jí)數(shù)的前n 項(xiàng)之和 Sn。n 的值從鍵盤(pán)輸入。#include void main()int fz,fm,n,i;float s,t;fz=2;fm=1;s=0;scanf(%d,&n);fo
14、r(i=1;i=n;i+)t=(1.0*fz)/fm;s=s+t;fz=fz+fm;fm=fz-fm;printf(s=%fn,s);5 編寫(xiě)程序,求 e 的值 e=1+1/1!+1 /2!+1/3!+1/4!+1/n!#include void main()int n,i;float t,fm=1,e=1;scanf(%d,&n);for(i=1;i=n;i+) fm=fm*i; t=1.0/fm; e=e+t; printf(n=%d,e=%fn,n,e);printf(%5d,k);/ 求最大或最小”水仙花數(shù)”時(shí)增加一個(gè)語(yǔ)句:break;第7頁(yè)6. 已知某球從 80 米高度自由落
15、下, 落地后反復(fù)彈起, 每次彈起的高度都是上次高度的一半。 求此球 8 次落地所經(jīng)過(guò)的總路程。#include void main()int n;float s=80,h=s/2;for(n=2;n=8;n+)s=s+2*h;h=h/2;printf(s=%fn,s);7. 用牛頓迭代法求高次方程 f(x)=2x3-4x2+5x-18=0 的根(約為 2.466 )。注:牛頓迭代公式為:x2=x1-f(x1)/f (x1),其中 f (x1)為導(dǎo)函數(shù)在點(diǎn) x1 的值。#include #include void main()float x,f,f1;x=8;/ x 的初值可為任意值do f=2
16、*x*x*x-4*x*x+5*x-18; f1=6*x*x-8*x+5; x=x-f/f1;while(fabs(f)0.00001);printf(x=%f,f=%fn,x,f);8. 有這樣一些真分?jǐn)?shù):其分子和分母都是兩位正整數(shù),且分子的個(gè)位數(shù)與分母的十位數(shù)相同,如果把該分?jǐn)?shù)的分子的個(gè)位數(shù)與分母的十位數(shù)同時(shí)去掉,所得到的新的分?jǐn)?shù)正好與原分?jǐn)?shù)的值相等,如 26/65=2/5 。試編程求出所有滿(mǎn)足上述條件的真分?jǐn)?shù)。#include void main()int a,b,c;/ 設(shè)這個(gè)分?jǐn)?shù)為 ab/bcfor(a=1;a=9;a+)for(b=1;b=9;b+)for(c=1;c=9;c+)if
17、(ac)&(1.0*a/c=(a*10.0+b)/(b*10.0+c)printf(%d/%d=%d%d/%d%d=%fn,a,c,a,b,b,c,1.0*a/c);9. 編寫(xiě)程序,求數(shù)列:1,( 1 + 1/2 ) , (1 + 1/2+1/3 ) , (1 + 1/2+1/3+1/4 ) , (1+1/2+1/3+1/4+1/5 ),的前 10 項(xiàng)之和。#include void main()float s,t;int i;s=0,t=0;for(i=1;i=10;i+) t=t+1.0/i; s=s+t; printf(s=%fn,s);10. 編寫(xiě)程序,求 3 到 100 之間
18、的所有素?cái)?shù)之和。#include void main()第8頁(yè)int s,i,k,flag;s=0;for(i=3;i=100;i+)flag=1;for(k=2;ki;k+)if(i%k=0) flag=0; break; if(flag) s=s+i; printf(%4d,i); printf(nsum=%dn,s);11. 編寫(xiě)程序,求 Fibonacci 數(shù)列中大于 800 的最小的一個(gè)數(shù) ( 結(jié)果為 987)。 #include void main()int f1=1,f2=1,f3;while(f3=800)f3=f1+f2;f1=f2;f2=f3;printf(Fibonacc
19、i 數(shù)列中大于 800 的最小數(shù)是 %5dn,f3); 習(xí)題六一、選擇題1 10: D D C B A B C D C D11 20: A B B C C D C A B B21 30: B B D D D D C D C A注:第 16 題答案 C 為:字符串SHORT 與SHORT 相等第 19 題題目為:已知: char str110,str210=books; 則在程序中能夠?qū)⒆址?books 賦給數(shù)組 str1 的正確語(yǔ)句是 。第 21 題題目為:設(shè)有: char str120=abcde,str220=xyz; 則執(zhí)行語(yǔ)句:printf(%d,strlen(strcpy(str1
20、,str2); 的結(jié)果是 。第 28 題答案 D 為: aaaabbbbcccc dddd二、填空題1 9 、 02 先行后列3字符數(shù)組4QuickC5.(c=getchar( )、A+i 或 65+i6.0、 str1i-str2i7CDABC869 1 0 0 0 00 1 0 0 0001 00000 10000 01第9頁(yè)1060011AzyD12.4 som e string *test三、編程題1. 定義一個(gè)有 20 個(gè)元素的整型數(shù)組,分別求出下標(biāo)為奇數(shù)和偶數(shù)的元素的平均值。 #include #include void main()int i,s0=0,s1=0,a20;for(
21、i=0;i20;i+)ai=rand()%100;for(i=0;i20;i+=2) printf(%3d,ai);s0=s0+ai; printf( sum is:%d ave=%fn,s0,s0/10.0);for(i=1;i20;i+=2) printf(%3d,ai);s1=s1+ai; printf( sum is:%d ave=%fn,s1,s1/10.0);2. 設(shè)有一個(gè)整型數(shù)組, 另輸入一個(gè)整數(shù), 編程查找這個(gè)整數(shù)是否在數(shù)組中出現(xiàn)過(guò), 則輸出第一次出現(xiàn)的位置,否則,輸出 no found 。#include #include void main()int i,s,a20;for
22、(i=0;i20;i+)ai=rand()%100;scanf(%d,&s);for(i=0;i20;i+)if(ai=s) printf(found:a%d=%dn,i,ai);break; if(i=20)printf(no foundn);for(i=0;i20;i+)printf(%3d,ai);printf(n);3. 設(shè)有一個(gè)已排好序的數(shù)組,今輸入一個(gè)數(shù),要求按原來(lái)排序的規(guī)律將它插入到數(shù)組中。 #include#define N 10void main()int i,j,s;/int aN=1,3,5,7,9,11,13,15,17;int aN=17,15,13,11,9
23、,7,5,3,1; scanf(%d,&s);i=0; if(a0ai) i+;elsewhile(si;j-)aj=aj-1;aj=s; for(i=0;iN;i+) printf(%3d,ai);printf(n);4. 編一程序,從一個(gè)已排好序的數(shù)組中刪去某個(gè)位置上的元素。 #include #define N 10void main() int i,j;int aN=1,3,5,7,9,11,13,15,17,19; for(i=0;iN;i+)printf(%3d,ai); printf(n);scanf(%d,&i); for(j=i;jN-1;j+) aj=aj+
24、1;for(i=0;iN-1;i+) printf(%3d,ai);printf(n);5. 將一個(gè)二維數(shù)組的行、列互換后存到另一個(gè)二維數(shù)組中并輸出結(jié)果。 #include void main() int i,j;int a34=1,3,5,7,9,11,13,15,17,19,21,23,b43; for(i=0;i4;i+)for(j=0;j3;j+) bij=aji;printf(array a:n);for(i=0;i3;i+) for(j=0;j4;j+)printf(%5d,aij);printf(n);printf(array b:n);for(i=0;i4;i+)for(j=0
25、;j3;j+)printf(%5d,bij);printf(n);6. 編一程序,在一個(gè)二維數(shù)組中,查找第一次出現(xiàn)的負(fù)數(shù),并輸出該數(shù)及其所在的行、列 號(hào)。#include void main()int i,j,flag;int a34=1,3,5,7,9,11,13,-15,17,19,-21,23;flag=0;for(i=0;i3;i+)for(j=0;j4;j+)if(aij0)flag=1;printf(found:a%d%d=%dn,i,j,aij);i=j=100; / 可使雙重循環(huán)提前結(jié)束if(flag=0)printf(no found!);printf(array a:n);
26、for(i=0;i3;i+) for(j=0;j4;j+) printf(%5d,aij); printf(n);7. 編程將一個(gè)字符數(shù)組中的字母,按由大到小的順序進(jìn)行排序。#include #include 第11頁(yè)void main()char t,s=ABCDIVBHFBVCNLKFDB;int i,j,n;puts(s);n=strlen(s);for(i=0;in-1;i+)for(j=i+1;jn;j+)if(sisj) t=si;si=sj;sj=t; puts(s);8. 輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)英語(yǔ)單詞,單詞之間用空格隔開(kāi)。#include #include void
27、main()char s81;int w,i,n;gets(s);i=0;n=0;w=0;while(si!=0)if(si= )w=0; /*end of a word*/elseif(w=0)w=1;n+;/*begin of a word*/i+;printf(number of word:%dn,n);9.編程將兩個(gè)一維數(shù)組中的對(duì)應(yīng)元素的值相減后進(jìn)行輸出。#include #include void main()int i,a10,b10;for(i=0;i10;i+) ai=rand()%100; printf(%4d,ai); printf(n);for(i=0;i10;i+) b
28、i=rand()%100; printf(%4d,bi); printf(n);for(i=0;i10;i+)printf(%4d,ai-bi);printf(n);10. 有 n 個(gè)無(wú)序的數(shù)放在數(shù)組 a 中,請(qǐng)將相同的那些數(shù)刪得只剩得一個(gè), 輸出經(jīng)過(guò)刪除后的 數(shù)據(jù)。#include void main()int i,j,k,a10=90,20,40,30,50,50,50,50,20,80;for(i=0;i10;i+)printf(%4d,ai);printf(n);第12頁(yè)for(i=0;i9;i+)for(j=i+1;j10;j+)if(aj=ai) aj=-888; k=0;for(
29、i=0;i10;i+)if(ai!=-888)printf(%4d,ai);ak+=ai; / 不相同的有效元素只有 K 個(gè)了printf(n);11. 求二維數(shù)組中這樣一個(gè)元素的位置:它在行上最小,在列上也最小。如果沒(méi)有這樣的元 素則輸出相應(yīng)的信息。第13頁(yè)#include #include void main() int j,i,k,flag,fz=0,a45;for(i=0;i4;i+) for(j=0;j5;j+) aij=rand()%100;printf(%4d,aij); printf(n);for(i=0;i4;i+) for(j=0;j5;j+) flag=1;for(k=0
30、;k5;k+) if(aikaij) flag=0;break; for(k=0;k4&flag;k+) if(akjaij) flag=0;break; if(flag) fz+; printf(min a%d%d=%dn,i,j,aij); if(fz=0)printf(no found!);12. 在一個(gè)二維數(shù)組中形成并輸出如下矩陣:1111121111A= 3 2 1 1include #define N 5 void main() int j,i,aNN;for(i=0;iN;i+) for(j=0;jN;j+) if(i=j)aij=1;else
31、if(j=0)aij=i+1; elseaij=ai-1j-1; for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij); printf(n);第14頁(yè)13. 已知 A 是一個(gè) 3X4 的矩陣,B 是一個(gè)4X5的矩陣,編程求 輸出 C 矩陣。#include void main()int j,i,k,a34=1,2,3,4,5,6,7,8,9,10,11,12;int b45=3,2,1,5,4,4,3,2,5,1,2,3,5,4,1,7,8,5,6,9,c35;printf(array A(3*4):n);for(i=0;i3;i+) for(j=0;j4;j
32、+)printf(%4d,aij);printf(n);printf(array B(4*5):n);for(i=0;i4;i+) for(j=0;j5;j+)printf(%4d,bij);printf(n);for(i=0;i3;i+)for(j=0;j5;j+)cij=0;for(k=0;k4;k+)cij+=aik*bkj;printf(array C(3*5)=A * B:n);for(i=0;i3;i+) for(j=0;j5;j+)printf(%4d,cij);printf(n);14. 編程輸出兩個(gè)字符串中對(duì)應(yīng)位置上相同的字符。#include void main()int
33、i;char a81=acbsbdvhfejbvewvkbewljbv;char b81=anbdxwdbviuerkjvbfidbvuie bik;printf(string1: %sn,a);printf(string2: %sn,b);printf(string3: );i=0;while(ai!=0 & bi!=0) if(ai=bi)printf(%c,ai);i+;printf(n);15. 設(shè)有一字符串已按升序排列在字符數(shù)組 a 中,請(qǐng)將另一字符串 插到數(shù)組 a 中。#include #include string.hvoid main()int i,j,k;char a
34、81=acdfhjklmopxz;AXB 得到的新矩陣 C,并b 中的字符按升序的規(guī)律第15頁(yè)char b81=anbdx;printf(string1: %sn,a);printf(string2: %sn,b);i=0;while(bi!=0)j=0;while(aj=j) ak+1=ak;k-; aj=bi;i+;printf(string3: %sn,a);16.將已按升序排列的兩個(gè)字符串 a 和 b 中的字符按升序歸并到字符數(shù)組c 中。#include #include string.hvoid main()int i,j,k;char a81=acdfhjklmopxz;char
35、b81=abdnx;char c81;printf(string1: %sn,a);printf(string2: %sn,b);i=0;j=0;k=0;while(ai!=0&bj!=0)if(aibj)ck+=ai+;elseck+=bj+;while(ai)ck+=ai+;while(bj)ck+=bj+;ck=0;printf(string3: %sn,c);習(xí)題七一、選擇題1 10: D C D B D B C A A B11 19: B B A B A D A B A二、填空題1 聲明2 自動(dòng)將其轉(zhuǎn)換為函數(shù)定義時(shí)的類(lèi)型3104i=n 、 s、 0 、 f(k)5Itis62
36、721702468k 、 -1第16頁(yè)92 、210p=j 、xip 、 LineMax(x)115122413age(n-1)+2、 age(n)14m%10 、m/10 、 m 或 m!=0 、 r(m)三、 編程題1. 編一函數(shù),判斷某年是否為閏年,若是返回1,否則返回 0。#include int fun(int m) return (m%4=0)&(m%100!=0)|(m%400=0); void main()int n; scanf(%d,&n); if(fun(n) printf(year:%d is a leap!n,n);2. 編寫(xiě)計(jì)算三角形面積的程序,將計(jì)
37、算面積定義成函數(shù)。三角形面積公式為:A= 式中 s=(a+b+c)/2其中 A 為三角形面積, a、b、c 為三角形的三條邊的長(zhǎng)度。#include #include float fun(float a,float b,float c)float f,s; s=(a+b+c)/2; if(s=a)|(s=b)|(sc&(a+c)b&(b+c)a f=0;elsef=sqrt(s*(s-a)*(s-b)*(s-c);return f;void main()float a,b,c;scanf(%f%f%f,&a,&b,&c);printf(area is:%
38、fn,fun(a,b,c);3. 編寫(xiě)兩個(gè)函數(shù),分別求出兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函 數(shù),并輸出結(jié)果,兩個(gè)整數(shù)由鍵盤(pán)輸入。#include #include int fmax(int m,int n)int r;r=m%n;while(r!=0) m=n;n=r;r=m%n; return n;int fmin(int m,int n) return m*n/fmax(m,n); void main()int a,b;scanf(%d%d,&a,&b); printf(fmax is:%dn,fmax(a,b); printf(fmin is:%dn,
39、fmin(a,b);4. 編寫(xiě)函數(shù),根據(jù)整型形參 m 的值,計(jì)算公式t=1-的值。例如,若 m=5,則應(yīng)輸出 0.536389。第17頁(yè)#include float fun(int m)float t=1.0;int i;for(i=2;i=m;i+)t=t-1.0/i/i;return t;void main()int m;scanf(%d,&m); printf(t(%d)=%fn,m,fun(m);5計(jì)算 s=1+ + +。n 由終端輸入,將計(jì)算 n!定義成函數(shù)。#include float fun(int m)int i;float s=0.0,t=1.0;for(i=1;i=
40、m;i+) t=t/i; s=s+t; return s;void main()int n;scanf(%d,&n);printf(s(%d)=%fn,n,fun(n);6. 編寫(xiě)函數(shù),利用公式:計(jì)算n的近似值,當(dāng)某一項(xiàng)的值小于10-5 時(shí),認(rèn)為達(dá)到精度要求。#include double fun()int n;double pi=1,t=1;n=1;do t=t*n/(2*n+1); pi=pi+t; n+;while(t1e-5);return 2*pi;void main() printf(pi=%fn,fun(); 7. 編一函數(shù),判斷某一整數(shù)是否為回文數(shù),若是返回1,否則返回
41、 0。所謂回文數(shù)就是該數(shù)正讀與反讀是一樣的。例如 12321 就是一個(gè)回文數(shù)。#include #include int huiwen(int m)int t,n=0;t=m;while(t) n+; t=t/10; / 求出 M 是幾位的數(shù)t=m;while(t)第18頁(yè)if(t/(int)pow(10,n-1)!=t%10) / 比較其最高位和最低位return 0;elset=t%(int)pow(10,n-1); / 去掉其最高位t=t/10;/ 去掉其最低位n=n-2;/ 位數(shù)去掉了兩位return 1;void main()int x;scanf(%d,&x);if(hui
42、wen(x)printf(%d is a huiwen!n,x);elseprintf(%d is not a huiwen!n,x);8. 編寫(xiě)一個(gè)求水仙花數(shù)的函數(shù),然后通過(guò)主函數(shù)調(diào)用該函數(shù)求 100 到 999 之間的全部水仙 花數(shù)。所謂水仙花數(shù)是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如: 153 就是一個(gè)水仙花數(shù): 153=1*1*1+5*5*5+3*3*3#include #include int fun8(int m)int a,b,c;a=m/100; b=m/10%10; c=m%10; if(m=a*a*a+b*b*b+c*c*c)return 1;elseretur
43、n 0;void main()int i;for(i=100;i=999;i+)if(fun8(i) printf(%5d,i);printf(n);9. 編一函數(shù) primedec(m) ,求整數(shù) m 的所有因子并輸出。例如: 120 的因子為: 2,2, 2, 3,5。#include #include void primedec(int m)int n=2;while(m1)while(m%n=0) printf(%d ,n);m=m/n; n+; printf(n);void main() int x;scanf(%d,&x);primedec(x);10.求 100200 之
44、間的所有素?cái)?shù),按每行 6 個(gè)輸出。第19頁(yè)#include #include int prime(int m)int n,f=1;for(n=2;nm;n+)if(m%n=0) f=0;break; return f;void main()int x,n=0;for(x=100;x=200;x+) if(prime(x) n+;printf(%5d,x);if(n%6=0) printf(n);printf(n);11. 編一函數(shù),求末尾數(shù)非 0 的正整數(shù)的逆序數(shù),如: reverse(3407)=7043 。 #include #include int reverse(int m)int x
45、=0;while(m) x=x*10+m%10;m=m/10;return x;void main()int w;scanf(%d,&w); printf(%d=%dn,w,reverse(w);12. 編一函數(shù),將一個(gè)字符數(shù)組中的數(shù)字字符存于另一個(gè)字符數(shù)組中。#include #include void fun12(char a,char b)int i=0,j;for(j=0;j=0&bj=9) ai+=bj;ai=0;void main()char s181,s281;gets(s2);fun12(s1,s2);puts(s2);puts(s1);13. 編一函數(shù),統(tǒng)計(jì)一
46、個(gè)字符串中字母、數(shù)字、空格和其它字符的個(gè)數(shù)。#include #include void fun13(char s)int i,num=0,ch=0,sp=0,oh=0;char c;for(i=0;(c=si)!=0;i+)if(c= ) sp+;第20頁(yè)else if(c=0&c=A & toupper(c)=Z) ch+;else oh+; printf(char:%d,number:%d,space:%d,other:%dn,ch,num,sp,oh);void main()char s181;gets(s1);fun13(s1);14.用遞歸的方法實(shí)現(xiàn)求 1+2+3+
47、n。第21頁(yè)#include #include int fun14(int m) int w;if(m=1)w=1;elsew=fun14(m-1)+m; return w;void main()int x,i; scanf(%d,&x);printf(1+2+.+%d=%dn,x,fun14(x);15. 用遞歸的方法將一個(gè)整數(shù)轉(zhuǎn)換成字符串。例如:輸入#include #include void fun15(int m) if(m!=0) fun15(m/10);printf(%c ,0+m%10);void main()int x; scanf(%d,&x); printf
48、(%d=,x); fun15(x); printf(n);16. 采用遞歸的方法計(jì)算 x 的 n 次方。#include #include float p(float x,int n) float f;if(n=0)f=1; elsef=p(x,n-1)*x;return f;void main()float x;int n;scanf(%f%d,&x,&n); printf(p(%f,%d)=%f,x,n,p(x,n); 習(xí)題八一、選擇題1 10: A D B C C A B D B A11-14: B C C D二、 填空題1.從定義點(diǎn)到函數(shù)體(或復(fù)合語(yǔ)句)結(jié)束2.auto
49、3. 局部 、 全局4. 外部 、 內(nèi)部5.2, 5, 1 , 2, 3, -26.a=5a*a=25a*a*a=87.add:y=25;sub:y=5;main:x=25;main:y=10習(xí)題九一、 選擇題1 - 8: D C B C A B B B345,應(yīng)輸出字符串345”。第22頁(yè)二、 填空題1.1000 102.113.0 1 1三、 編程題1. 定義一個(gè)帶參的宏,求兩個(gè)整數(shù)的余數(shù)。通過(guò)宏調(diào)用,輸出求得的結(jié)果。 #define R(m,n) (m)%(n)#include void main() int m,n;printf(enter two integers:n); scanf
50、(%d%d,&m,&n);printf(remainder=%dn,R(m,n);2. 分別用函數(shù)和帶參的宏,從 3 個(gè)數(shù)中找出最大者。 #include #define MAX(a,b) (a)(b)?(a):(b) / implementation by MACRO int max3(int a,int b,int c)/implementation by function int m;m=ab?a:b; m=mc?m:c;return m;void main()int m,n,k; printf(enter 3 integer:n); scanf(%d%d%d,&
51、m,&n,&k);printf(1. MACRO max=%dn,MAX(MAX(m,n),k); printf(2. function max=%dn,max3(m,n,k);3.輸入一個(gè)整數(shù) m,判斷它能否被 3 整除。要求利用帶參的宏實(shí)現(xiàn)。 #include #define DIVIDEDBY3(m) (m)%3=0void main() int m;printf(enter a integer:n);scanf(%d,&m);if(DIVIDEDBY3(m)printf(%d is divided by 3n,m);elseprintf(%d is not di
52、vided by 3n,m);習(xí)題十一、填空題1.首地址2.03.1)int *p=&k;2)*p=6;3)int *pp;4)pp=&p;5)(*pp)*=2;4.整型數(shù)組名 、 指向整型數(shù)據(jù)的指針值5.*(+p)二、選擇題I10: B C A D C A A A B BII15: C B C D C16: B B C第23頁(yè)17: B D18: B A C19 21: B A C三、編程題1. 編寫(xiě)函數(shù),對(duì)傳遞進(jìn)來(lái)的兩個(gè)整型量計(jì)算它們的和與積之后,通過(guò)參數(shù)返回。 #include void compute(int m,int n,int *sum,int *p) *sum=
53、m+n;*p=m*n;void main()int x,y,sum,product;printf(enter 2 integers:n);scanf(%d%d,&x,&y); compute(x,y,&sum,&product); printf(x=%d y=%d sum=%dproduct=%dn,x,y,sum,product);2. 編寫(xiě)一個(gè)程序,將用戶(hù)輸入的字符串中的所有數(shù)字提取出來(lái)。 #include #include void main()char string81,digit81;char *ps;int i=0;printf(enter a st
54、ring:n); gets(string);ps=string;while(*ps!=0) if(*ps=0 & *ps=9) digiti=*ps;i+;ps+;digiti=0;printf(string=%s digit=%sn,string,digit);3. 編寫(xiě)函數(shù)實(shí)現(xiàn), 計(jì)算字符串的串長(zhǎng)。#include #include int StringLength(char *s)int k;for(k=0;*s+;k+);return k;void main() char string81;printf(enter a string:n);gets(string);printf
55、(length of the string=%dn,StringLength(string);4. 編寫(xiě)函數(shù)實(shí)現(xiàn), 將一個(gè)字符串中的字母全部轉(zhuǎn)換為大寫(xiě)。#include #include char*Upper(char *s) char *ps;ps=s;while(*ps) if(*ps=a & *ps=z)*ps=*ps-32; ps+;return s;void main() char string81;printf(enter a string:n);gets(string);第24頁(yè)printf(before convert: string=%sn,string);print
56、f( after convert: string=%sn,Upper(string);5. 編寫(xiě)函數(shù)實(shí)現(xiàn),計(jì)算一個(gè)字符在一個(gè)字符串中出現(xiàn)的次數(shù)。 #include #include int Occur(char *s, char c)int k=0;while(*s) if(*s=c)k+;s+; return k;void main()char string81,c;printf(enter a string:n);gets(string);printf(enter a character:n); c=getchar();printf(character %c occurs %d times
57、 in string %sn, c,Occur(string,c),string);6. 編寫(xiě)函數(shù)實(shí)現(xiàn),判斷一個(gè)子字符串是否在某個(gè)給定的字符串中出現(xiàn)。#include #include int IsSubstring(char *str,char *substr)int i,j,k,num=0;for(i=0;stri!=0 & num=0;i+)for(j=i,k=0;substrk=strj;k+,j+)if(substrk+1=0) num=1; break; return num;void main() char string81,sub81;printf(enter firs
58、t string:n);gets(string); printf(enter second string:n);gets(sub);printf(string %s is ,sub);if(!IsSubstring(string,sub) printf(not );printf(substring of %sn,string);7. 有 n 個(gè)人圍成一圈, 順序排號(hào)。 由用戶(hù)從鍵盤(pán)輸入報(bào)數(shù)的起始位置, 從該人開(kāi)始報(bào)數(shù) (計(jì) 數(shù)從0 開(kāi)始),凡報(bào)數(shù)為 3 的倍數(shù)出圈。問(wèn)最后剩下的是幾號(hào)?見(jiàn)導(dǎo)學(xué)例 10.258. 由一個(gè)整型二維數(shù)組,大小為 mxn,要求找出其中最大值所在的行和列,以及該最大值。請(qǐng)編一個(gè)函數(shù) max,數(shù)組元素在 main 函數(shù)中輸入,結(jié)果在函數(shù) max 中輸出。見(jiàn)導(dǎo)學(xué)例 10.269. 由 n 個(gè)學(xué)生, 每個(gè)學(xué)生考 m 門(mén)課程, 要求編一函數(shù), 能檢查 n 個(gè)學(xué)生有無(wú)不及格的課程, 如果由某一學(xué)生有一門(mén)或一門(mén)以上課程不及格, 就輸出該學(xué)生
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年CDMA第三代蜂窩移動(dòng)通信系統(tǒng)合作協(xié)議書(shū)
- 2025年光纖用GECL4合作協(xié)議書(shū)
- 2025年中學(xué)教師勞動(dòng)合同樣本(2篇)
- 2025年九年級(jí)班主任個(gè)人年終教學(xué)工作總結(jié)范文(二篇)
- 2025年個(gè)人投資公司協(xié)議標(biāo)準(zhǔn)范文(2篇)
- 2025年二手摩托車(chē)轉(zhuǎn)讓協(xié)議標(biāo)準(zhǔn)范文(2篇)
- 2025年個(gè)人終止合同申請(qǐng)(五篇)
- 2025年二次消防改造工程合同協(xié)議(2篇)
- 2025年個(gè)人房屋借款合同標(biāo)準(zhǔn)版本(三篇)
- 2025年五年級(jí)英語(yǔ)教師工作總結(jié)樣本(四篇)
- 2024年湖南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 快速入門(mén)穿越機(jī)-讓你迅速懂穿越機(jī)
- 水利安全生產(chǎn)風(fēng)險(xiǎn)防控“六項(xiàng)機(jī)制”右江模式經(jīng)驗(yàn)分享
- 2024年四川省成都市高新區(qū)中考數(shù)學(xué)二診試卷
- 幼兒園衛(wèi)生保健開(kāi)學(xué)培訓(xùn)
- 食材配送服務(wù)售后服務(wù)方案
- 礦井主要災(zāi)害事故防治應(yīng)急避災(zāi)知識(shí)培訓(xùn)課件
- 不老莓行業(yè)分析
- STARCCM基礎(chǔ)培訓(xùn)教程
- 2016-2023年婁底職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 貴陽(yáng)市2024年高三年級(jí)適應(yīng)性考試(一)一模英語(yǔ)試卷(含答案)
評(píng)論
0/150
提交評(píng)論