C語言練習(xí)題答案.doc
《C語言練習(xí)題答案.doc》由會員分享,可在線閱讀,更多相關(guān)《C語言練習(xí)題答案.doc(186頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1.已知三角形的三邊長為a,b,c,計算三角形面積的公式為:area=sqrt(s(s-a)(s-b)(s-c),其中s=(a+b+c)/2。試編程從鍵盤輸入a,b,c的值(假設(shè)a,b,c的值可以保證其構(gòu)成一個三角形),計算并輸出三角形的面積。*輸入格式要求:%f,%f,%f 提示信息:Input a,b,c:*輸出格式要求:area = %.2fn程序運行示例如下:Input a,b,c:3,4,5area = 6.00答案:#include#includeint main(void)float a, b, c, s, area;printf(Input a,b,c:);scanf(%f,%
2、f,%f, &a, &b, &c);s = (a + b + c) / 2;area = sqrt(s*(s - a)*(s - b)*(s - c);printf(area = %.2fn, area);return 0; -12.從鍵盤任意輸入一個4位整數(shù),編程計算并輸出它的逆序數(shù).例如:輸入1234,分離出千位1、百位2、十位3和個位4,然后計算4*1000+3*100+2*10+1=4321,并輸出4321。*要求輸入提示信息為:無*要求輸入格式為: %d*要求輸出格式為:%d程序運行示例如下:1234 此處為輸入4321 此處為輸出答案:#includeint main(void)i
3、nt a, b, c, d,e;scanf(%d,&a);b = a/1000;c = a%1000/100;d = a%100/10;e = a%10;a = e*1000+d*100+c*10+b;printf(%d,a);return 0; -23.有關(guān)輸入輸出問題。輸入為:12a b 運行結(jié)果為:1,2,a,b,123.300000,65535請改正程序中的錯誤,使它能得出正確的結(jié)果。#include main() int b; unsigned short a = 65535; short k = a; char c, d; int f, g; b = (1234.0 - 1) /
4、10; scanf(%c, &c); scanf(%c, &d); scanf(%d, &f); scanf(%d, &g); printf(%c,%c,%c,%c,%f,%d, c, d , f, g, b, k);答案:#include main()double b;int a = 65535;char c, d;int f, g;b = (1234.0 - 1) / 10;scanf(%c, &c);scanf(%c, &d);scanf(%ct, &f);scanf(%c, &g);printf(%c,%c,%c,%c,%f,%d, c, d , f, g, b, a); -34.輸入
5、一行字符,統(tǒng)計其中的英文字符、數(shù)字字符、空格字符,以及其他字符的個數(shù)。請找出以下程序的錯誤,并改正之。#include #include #define ARR_SIZE = 80; main()char strARR_SIZE;int len, i;int letter=0,digit=0,space=0,other=0;printf(請輸入一個字符串:);gets(str);len = strlen(str); for (i=0; ilen; i+)if (a=stri=z | A=stri=Z)letter +; else if (0=stri=9) digit +; else if (
6、stri= ) space +; elseother +; printf(英文字符數(shù):%dn, letter);printf(數(shù)字字符數(shù):%dn, digit);printf(空格數(shù):%dn, space);printf(其他字符數(shù):%dn, other);答案 :#include #include #define ARR_SIZE 80 main()char strARR_SIZE;int len, i;int letter = 0, digit = 0, space = 0, other = 0;printf(請輸入一個字符串:);gets(str);len = strlen(str);f
7、or (i = 0; ilen; i+)if (a = stri&stri = z | A = stri&stri = Z)letter+;else if (0 = stri & stri= 9)digit+;else if ( stri = )space+;elseother+;printf(英文字符數(shù):%dn, letter);printf(數(shù)字字符數(shù):%dn, digit);printf(空格數(shù):%dn, space);printf(其他字符數(shù):%dn, other); -45.對輸入的一個數(shù)判斷是否是素數(shù)。所謂素數(shù)是指這個數(shù)只能被1和自身整除。要求在主函數(shù)輸入一個數(shù),調(diào)用函數(shù)Fun()
8、判斷該數(shù)是否是素數(shù)。打印信息在主函數(shù)中進行。例如:從鍵盤輸入5,5是素數(shù)則打印如下信息:5 is a prime number。又如:從鍵盤輸入4, 4不是素數(shù)則打印如下信息:4 is not a prime number。負數(shù)、0和1均不是素數(shù)。對輸入的數(shù)據(jù)要考慮數(shù)據(jù)的合法性,不滿足條件的數(shù)要重新輸入直到滿足條件為止。不能使用全局變量,不按給定的函數(shù)原型編寫程序不給分。Fun()函數(shù)原型為: int Fun(int m);*輸入數(shù)據(jù)提示信息:Please input a number:n 注:該提示信息請放在循環(huán)體外*輸入數(shù)據(jù)格式為:%d*輸出格式要求: 若是素數(shù)輸出數(shù)據(jù)格式為:%d is
9、a prime numbern 若不是素數(shù)輸出數(shù)據(jù)格式為: %d is not a prime numbern不完整答案:#includeint Fun(int a)int i;if(a1)for(i = 2;ia;i+)if(a%i=0)return 0;elsecontinue;return 1;elsereturn 0;main()int b,c;printf(Please input a number:n);scanf(%d,&b);c = Fun(b);if(0 = c)printf(%d is not a prime numbern,b);elseprintf(%d is a pr
10、ime numbern,b);參考答案:#include stdio.hint Fun(int m);int main() int m, flag;printf(Please input a number:n);do scanf(%d, &m); /1while (m 2); /e1flag = Fun(m); /3if (flag) /1printf(%d is a prime numbern, m);elseprintf(%d is not a prime numbern, m); /1return 0; int Fun(int m)/2 int i, flag = 1; /1for (i
11、 = 2; i m; i+) /1 if (m % i = 0) /1 flag = 0; /1break;return flag;/2 - -56.求1898 現(xiàn)將不超過2000的所有素數(shù)從小到大排成第一行,第二行上的每個數(shù)都等于它“右肩”上的素數(shù)與“左肩”上的素數(shù)之差。請編程求出:第二行數(shù)中是否存在這樣的若干個連續(xù)的整數(shù),它們的和恰好是1898?假如存在的話,又有幾種這樣的情況?*輸入格式要求:提示信息:There are follwing primes in first row :n*輸出格式要求:(%d).%3d,.,%dn程序運行示例如下:There are follwing pri
12、mes in first row :(1).101,.,1999(2). 89,.,1987(3). 53,.,1951(4). 3,.,1901答案:#include #define N 330int aN;int main()int c = 0, b = 0, d = 1;int i = 0, j = 0, k = 0;for (i = 3;i = 2000;i+)for (j = 2;j = 0;c-)for (b = c + 1;c b;b+)if (b 330)if (ab - ac) = 1898)printf(%d).%3d,.,%dn, d, ac, ab);d+;elseco
13、ntinue;elsebreak;7.從鍵盤任意輸入一個整數(shù)m,若m不是素數(shù),則對m進行質(zhì)因數(shù)分解,并將m表示為質(zhì)因數(shù)從小到大順序排列的乘積形式輸出,否則輸出It is a prime number。例如,用戶輸入90時,程序輸出90 = 2 * 3 * 3 * 5;用戶輸入17時,程序輸出It is a prime number。輸入提示信息:Input m:輸入格式:%d輸出格式:是素數(shù)時輸出It is a prime numbern否則輸出用%d = ,%d * 運行示例1:Input m:9090 = 2 * 3 * 3 * 5運行示例2:Input m:13It is a prime
14、 number答案:#include #include int IsPrime(int x);void OutputPrimeFactor(int x);int main()int m;printf(Input m:);scanf(%d,&m);if(IsPrime(m)printf(It is a prime numbern);elseprintf(%d = ,m);OutputPrimeFactor(m);return 0;int IsPrime(int x)int i,flag=1;int squareRoot=sqrt(x);if(x=1)flag=0;for(i=2;i=square
15、Root&flag;i+)if(x%i=0)flag=0; return flag;void OutputPrimeFactor(int x)int i;for(i=2;ix;i+)if(x%i=0)printf(%d * ,i);OutputPrimeFactor(x/i);return;printf(%d,x);-78.將任一整數(shù)轉(zhuǎn)換為二進制形式。*輸入格式要求:%d 提示信息:Input number:*輸出格式要求:number of decimal form:%dn its binary form: 程序運行示例如下:Input number:876number of decimal
16、 form:876 its binary form: 00000000000000000000001101101100答案:#include #include int main()int a;char b32;printf(Input number:);scanf(%d, &a);printf(number of decimal form:%dn, a);printf( its binary form: );printf(%sn, itoa(a, b, 2);-89.求自然數(shù)n最近的素數(shù)k, kn。*輸入提示信息*:Input n:*輸入數(shù)據(jù)格式*:%d*輸出數(shù)據(jù)格式*:%d示例輸入:257輸
17、出:Please input n:263答案:#includeint main() int n, i = 1, k; printf(Please input n:); scanf(%d, &n); for (k = n + 1;i;k+) for (i = 2;i k;i+) if (k%i = 0) break; else continue; if (i = k) printf(%d, k); i = 0; break; -910.如果一個正整數(shù)m的所有小于m的不同因子(包括1)加起來正好等于m本身,那么就被稱它為完全數(shù)。它是指這樣的一些特殊的自然數(shù),它所有的真因子(即除了自身以外的約數(shù))的
18、和,恰好等于它本身。注意:1沒有真因子,所以不是完全數(shù)。例如,6就是一個完全數(shù),是因為6 = 1 + 2 + 3。請編寫一個判斷完全數(shù)的函數(shù)IsPerfect(),然后判斷從鍵盤輸入的整數(shù)是否是完全數(shù)。要求:按如下原型編寫判斷完全數(shù)的函數(shù),若函數(shù)返回0,則代表不是完全數(shù),若返回1,則代表是完全數(shù)。int IsPerfect(int x);*要求輸入提示信息為: Input m:n*要求輸入格式為: %d*要求輸出格式為 %d is a perfect numbern%d is not a perfect numbern注:不能使用指針、結(jié)構(gòu)體、共用體、文件、goto、枚舉類型進行編程,主函數(shù)不
19、能使用int main和return 0。答案:#includeint IsPerfect(int x);int main() int m; printf(Input m:n); scanf(%d, &m); if (IsPerfect(m) printf(%d is a perfect numbern, m); else printf(%d is not a perfect numbern, m);int IsPerfect(int x) int i = 1,b = 0; for (i = 1;i x;i+) if (x%i = 0) b = b + i; continue; else co
20、ntinue; if (b = x) return 1; else return 0; -1011.用函數(shù)編程計算兩整數(shù)的最大值,在主函數(shù)中調(diào)用該函數(shù)計算并輸出從鍵盤任意輸入的兩整數(shù)的最大值。*輸入格式要求:%d,%d 提示信息:Input a,b:*輸出格式要求:max = %dn程序運行示例如下:Input a,b:5,8max = 8答案:#include int max(int a, int b) if(a = b) return a; else return b;main() int a = 0,b = 0; printf(Input a,b:); scanf(%d,%d,&a,&b
21、); printf(max = %dn,max(a,b);-1112.利用求階乘函數(shù)Fact(),編程計算并輸出1! + 2! + + n!的值。*輸入格式要求:%u 提示信息:Input n(n0):*輸出格式要求:sum = %lun答案:#include int sum_s(int i);main() unsigned int n = 0; unsigned long b = 0; printf(Input n(n0):); scanf(%u,&n); for (b;n;n-) b = b +sum_s(n); printf(sum = %lun,b); int sum_s(int i)
22、 int a; for(a = 1;i;i-) if (i 1) a = a * i; else a = a * 1; return a;-1213.編程輸出如下菜單界面(具體的輸出則以下面提示中要求的輸出格式為準):=大學(xué)信息管理系統(tǒng)= - 辦公室管理 財務(wù)管理 教務(wù)管理 圖書管理 科研管理 設(shè)備管理 人事管理 后勤管理 退出系統(tǒng)-請您在上述功能中選擇(08):提示:輸出如下格式=大學(xué)信息管理系統(tǒng)= n-n1. 辦公室管理 5. 財務(wù)管理 n2. 教務(wù)管理 6. 圖書管理 n3. 科研管理 7. 設(shè)備管理 n4. 人事管理 8. 后勤管理 n0. 退出系統(tǒng)n-n請您在上述功能中選擇(08):
23、n答案:#include main() printf(=大學(xué)信息管理系統(tǒng)= n); printf(-n); printf(1. 辦公室管理 5. 財務(wù)管理 n); printf(2. 教務(wù)管理 6. 圖書管理 n); printf(3. 科研管理 7. 設(shè)備管理 n); printf(4. 人事管理 8. 后勤管理 n); printf(0. 退出系統(tǒng)n); printf(-n); printf(請您在上述功能中選擇(08):n);-1314.利用靜態(tài)變量計算n的階乘。*輸入格式要求:%d 提示信息:Input n:*輸出格式要求:%d! = %ldn程序運行示例如下:Input n:101!
24、 = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 36288010! = 3628800答案:#include int sum_s(int i);main() unsigned int n = 0,b = 1; printf(Input n:); scanf(%d,&n); for (b = 1;b 1) a = a * i; else a = a * 1; return a;-1415.寫一個程序從鍵盤輸入兩個整數(shù),然后顯示輸出第1個數(shù)除以第2個數(shù)的結(jié)果。例如,輸入123和12,程序的輸出結(jié)果格式如下: 10 Rem
25、ainder = 3 - 12 ) 123 提示:使用求余運算符獲得余數(shù),使用整數(shù)除法獲得商。*輸入格式要求:%d%d 提示信息:請輸入兩個整數(shù):*輸出格式要求:%13d Remainder = %dn -n%5d ) %5d答案:#include main() int a, b, c, d; printf(請輸入兩個整數(shù):); scanf(%d%d,&a,&b); c = a / b; d = a % b; printf(%13d Remainder = %dn,c,d); printf( -n); printf(%5d ) %5d,b,a);-1516.寫一個程序,將接收的攝氏溫度轉(zhuǎn)換為對
26、應(yīng)的華氏溫度。程序應(yīng)顯示如下的提示信息: Please input cels: 然后輸入一個十進制數(shù)并回車,然后程序以合適的消息形式輸出轉(zhuǎn)換后的華氏溫度。程序使用如下的公式完成轉(zhuǎn)換:攝氏溫度 = 5.0 *(華氏溫度 32.0) / 9.0*輸入格式要求:%lf 提示信息:Please input cels: *輸出格式要求:The fahr is: %.2f答案:#include main() double a,b; printf(Please input cels: ); scanf(%lf,&a); b = (9.0 * a)/5.0 + 32.0; printf(The fahr is
27、: %.2f,b);-1617.寫一個程序,將接收的華氏溫度轉(zhuǎn)換為對應(yīng)的攝氏溫度。程序應(yīng)顯示如下的提示信息: Please input fahr: 然后輸入一個十進制數(shù)并回車,然后程序以合適的消息形式輸出轉(zhuǎn)換后的華氏溫度。程序使用如下的公式完成轉(zhuǎn)換:攝氏溫度 = 5.0 *(華氏溫度 32.0) / 9.0*輸入格式要求:%lf 提示信息:Please input fahr: *輸出格式要求:The cels is: %.2f答案:#include main() double a,b; printf(Please input fahr: ); scanf(%lf,&a); b = 5.0 *
28、(a - 32.0) / 9.0; printf(The cels is: %.2f,b);-1718.編寫一個程序,輸入一個3位整數(shù),要求逆序輸出對應(yīng)的數(shù)。例如:輸入123,則輸出321。*輸入格式要求:%d 提示信息:Please enter a positive integer: *輸出格式要求:%d-%dn 程序運行示例如下:Please enter a positive integer: 345345-543答案:#includeint main(void) int a, b, c, d,e; printf(Please enter a positive integer: ); sc
29、anf(%d,&a); b = a/100; d = a%100/10; e = a%10; c = e*100+d*10+b; printf(%d-%d,a,c); return 0;-1819.計算兩個數(shù)的平方和從鍵盤讀入兩個實數(shù),編程計算并輸出它們的平方和,要求使用數(shù)學(xué)函數(shù)pow(x,y)計算平方值,輸出結(jié)果保留2位小數(shù)。提示:使用數(shù)學(xué)函數(shù)需要在程序中加入編譯預(yù)處理命令 #include 以下為程序的輸出示例:Please input x and y:1.2,3.4result=13.00輸入格式:%f,%f輸出格式:輸入提示信息:Please input x and y:n輸出格式:r
30、esult=%.2fn答案:#include #include main() float x,y,z; printf(Please input x and y:n); scanf(%f,%f,&x,&y); z = pow(x,2) + pow(y,2); printf(result=%.2fn,z);1920.寫一個程序從鍵盤輸入兩個整數(shù),然后顯示第1個整數(shù)占第二個整數(shù)的百分比,保留到小數(shù)點后1位。例如輸入5和40,程序輸出結(jié)果如下: 5 is 12.5 percent of 40 *輸入格式要求:%d%d 提示信息:請輸入兩個整數(shù):*輸出格式要求:%d is %.1f percent of
31、 %d答案:#include main() int a, b; float c; printf(請輸入兩個整數(shù):); scanf(%d%d,&a,&b); c = (float)a / (float)b; c = c *100; printf(%d is %.1f percent of %d,a, c, b );-2021.求三角形面積。輸入三角形的三個邊長,計算三角形的面積。設(shè)三角形的三個邊長分別為a、b、c,為簡單起見,我們認為輸入的三個邊長數(shù)據(jù)是正確的,可以組成一個三角形。*輸入格式要求:%f,%f,%f 提示信息:Enter 3 floats:*輸出格式要求:area=%.2fn程序運
32、行示例如下:Enter 3 floats:2,2,3area=1.98答案:#include#includeint main(void) float a, b, c, s, area; printf(Enter 3 floats:); scanf(%f,%f,%f, &a, &b, &c); s = (a + b + c) / 2; area = sqrt(s*(s - a)*(s - b)*(s - c); printf(area=%.2fn, area); return 0;-2122.寫一個程序計算長為11.5厘米,寬為2.5厘米,高為10厘米的盒子的體積和表面積。程序說明:采用直接賦值
33、,不用輸入。*輸出格式要求area=%.2f,volume=%.2f答案:#include main() float a, b; a = (11.5 * 2.5 + 11.5*10 +10 * 2.5)*2; b = 11.5 * 2.5 * 10; printf(area=%.2f,volume=%.2f,a,b);23.用遞歸方法計算整數(shù)n的階乘n!。*輸入格式要求:%d 提示信息:Input n: n0, data error!n*輸出格式要求:%d! = %ldn程序運行示例如下:Input n:55! = 120答案;#include int f(int n) if(n=1 |n=0
34、) return 1; else return n * f(n - 1);main() int n; o: printf(Input n:); scanf(%d,&n); while (n0) printf(n0, data error!n); goto o; printf(%d! = %ldn,n, f(n);-2324.用遞歸方法編程計算Fibonacci數(shù)列的前N項。其中fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2)。*輸入格式要求:%d 提示信息:Input n:*輸出格式要求:Fib(%d)=%dn程序運行示例如下:Input n:10Fib(1
35、)=1Fib(2)=1Fib(3)=2Fib(4)=3Fib(5)=5Fib(6)=8Fib(7)=13Fib(8)=21Fib(9)=34Fib(10)=55答案:#include int Fib(int n) if (n = 0) return 0; else if (n = 1) return 1; else return Fib(n - 1) + Fib(n - 2);main() int n, a; printf(Input n:); scanf(%d, &n); for (a = 1; a 0):*輸出格式要求:%d! = %lun程序運行示例如下:Input n(n0):101!
36、 = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 36288010! = 3628800答案:#includeint sum_s(unsigned int i) unsigned int a; for(a = 1;i;i-) if (i 1) a = a * i; else a = a * 1; return a;int Fact(unsigned int n) unsigned int i; for(i = 1;i 0):); scanf(%u,&i); Fact(i);-2526.愛因斯坦曾出過這樣一道數(shù)學(xué)題:有一
37、條長階梯,若每步跨2階,最后剩下1階;若每步跨3階,最后剩下2階;若每步跨5階,最后剩下4階;若每步跨6階,則最后剩下5階;只有每步跨7階,最后才正好1階不剩。參考例6.15程序,編寫計算這條階梯共有多少階的程序如下所示,其中存在一些語法和邏輯錯誤,請找出并改正之,然后上機運行程序并寫出程序的運行結(jié)果。#include main() int x = 1, find = 0; while (!find); if (x%2=1 & x%3=2 & x%5=4 & x%6=5 & x%7=0) printf(x = %dn, x); find = 1; x+; 答案:#include main()
38、int x = 1, find = 0; while (!find) if (x % 2 = 1 & x % 3 = 2 & x % 5 = 4 & x % 6 = 5 & x % 7 = 0) printf(x = %dn, x); find = 1; x+; -2627.從鍵盤任意輸入一個正整數(shù),編程判斷它的奇偶性。要求輸入變量定義為int類型且由用戶從鍵盤輸入。程序的運行示例1:Input an integer number:44 is an even number程序的運行示例2:Input an integer number:33 is an odd number輸入格式:%d輸出格
39、式:輸入信息提示:Input an integer number:n偶數(shù)輸出格式:%d is an even numbern奇數(shù)輸出格式:%d is an odd numbern答案:#include main()int n, m;printf(Input an integer number:n);scanf(%d, &n);m = n % 2;if (m)printf(%d is an odd numbern, n);elseprintf(%d is an even numbern, n);-2728.用動態(tài)數(shù)組編程輸入任意m個班學(xué)生(每班n個學(xué)生)的某門課的成績,計算最高分,并指出具有該最
40、高分成績的學(xué)生是第幾個班的第幾個學(xué)生。其中,m和n的值由用戶從鍵盤任意輸入(不限定m和n的上限值)。輸入提示信息:Input array size m,n:Input %d*%d array:n輸入格式:%d,%d輸出提示信息和格式:maxScore = %d, class = %d, number = %dn答案:#include #include void InputScore(int *p, int m, int n);int FindMax(int *p, int m, int n, int *pRow, int *pCol);int main() int *pScore, m, n,
41、 maxScore, row, col; printf(Input array size m,n:); scanf(%d,%d, &m, &n); pScore = (int *)calloc(m * n, sizeof (int); /* 申請動態(tài)內(nèi)存 */ if (pScore = NULL) printf(No enough memory!n); exit(0); InputScore(pScore, m, n); maxScore = FindMax(pScore, m, n, &row, &col); printf(maxScore = %d, class = %d, number = %dn, maxScore, row + 1, col + 1); free(pScore); /* 釋放動態(tài)內(nèi)存 */ return 0; /* 函數(shù)功能:輸入m行n列二維數(shù)組的值 */void InputScore(int *p, int m, int n) int i, j; printf(Input %d*%d array:n, m, n); for (i = 0; i m; i+) for (j = 0; j n; j+) scanf(%d, &pi * n + j); /* 函數(shù)功能:計算任意m行n列二維數(shù)組中元素的最大值,并
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。