習(xí)習(xí)題參考答案63422_第1頁(yè)
習(xí)習(xí)題參考答案63422_第2頁(yè)
習(xí)習(xí)題參考答案63422_第3頁(yè)
習(xí)習(xí)題參考答案63422_第4頁(yè)
習(xí)習(xí)題參考答案63422_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余17頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 習(xí)題參考答案 221對(duì)C語(yǔ)言來(lái)說(shuō),下列標(biāo)識(shí)符中哪些是合法的,哪些是不合法的 total, _debug, Large&Tall, Counter1, begin_ 解答:Large&Tall不合法,其余都合法。 2改寫(xiě)本章節(jié)中的流程圖,求1100中能被6整除的所有整數(shù)的和。 解答: sum = 0i = 1真i <= 100真假假sum = sum + ii = i + 1打印 sum圖 “求1100中能被6整除的所有整數(shù)的和”的流程圖 113改寫(xiě)本章節(jié)中的程序,求1100中能被6整除的所有整數(shù)的和,并在編程環(huán)境中驗(yàn)證該程序的運(yùn)行結(jié)果。 解答: #include

2、<> int main(void) int i, sum = 0;for(i = 1; i <= 100; i+)if (i%6 = 0) sum = sum + i;printf("%d", sum);return 0; 運(yùn)行結(jié)果:816 4對(duì)于給定的整數(shù)n(n1),請(qǐng)?jiān)O(shè)計(jì)一個(gè)流程圖判別n是否為一個(gè)素?cái)?shù)(只能被1和自己整除的整數(shù)),并分析該流程圖中哪些是順序結(jié)構(gòu)、哪些是分支結(jié)構(gòu)與循環(huán)結(jié)構(gòu)。 解答: 在流程圖中,分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)如圖所示,自上而下的2個(gè)實(shí)線框和2個(gè)虛線組成了順序結(jié)構(gòu)。 輸入ni = 2i<=n/2假真真假循環(huán)結(jié)構(gòu)i = i + 1真

3、打印n是素?cái)?shù)i>n/2假打印n不是素?cái)?shù)分支結(jié)構(gòu)第2章習(xí)題參考答案 (i+1)4編寫(xiě)程序,輸入兩個(gè)正整數(shù)m和n,求解答: #include <> int main(void) int i, m, n; double sum; scanf("%d%d", &m, &n); sum = 0;for(i = m; i <= n; i+) sum = sum + i * i + / i;printf("sum = %.6fn", sum); return 0; å23i。 4 565編寫(xiě)程序,輸入一個(gè)正整數(shù)n,計(jì)算

4、 解答: #include <> int main(void) int flag, i, n; double item, sum; scanf("%d", &n); sum = 0;flag = 1; for(i = 1; i <= n; i+) item = flag * * i / (2 * i - 1); sum = sum + item; flag = -flag; 1-3+5-7+9-11+.的前 n 項(xiàng)之和。 26 printf("sum = %.3fn", sum); return 0; 8編寫(xiě)程序,輸入一個(gè)正整數(shù)

5、n,求型是double。 解答: #include <> int main(void) int i, n; double sum; double fact(int n); scanf("%d", &n); sum = 0;for(i = 0; i <= n; i+) sum = sum + fact(i); printf("sum = %.0fn", sum); return 0; double fact(int n) int i; double product; product=1; for(i = 1; i <= n;

6、 i+) product = product * i; return product; e=åi!。要求定義和調(diào)用函數(shù)fact(n)計(jì)算n!,函數(shù)類(lèi)第3章習(xí)題參考答案 程序設(shè)計(jì)題 1輸入三角形的3條邊a, b, c,如果能構(gòu)成一個(gè)三角形,輸出面積area和周長(zhǎng)perimeter(保留2位小數(shù));否則,輸出"These sides do not correspond to a valid triangle"。 在一個(gè)三角形中,任意兩邊之和大于第三邊。三角形面積計(jì)算公式: 解答: area= s(s-a)(s-b)(s-c) ,其中s = (a+b+c)/2 #inc

7、lude <> #include <> int main(void) int a,b,c; double area,s,perimeter; scanf("%d%d%d",&a,&b,&c); if(a+b>c)&&(b+c>a)&&(a+c>b) perimeter=a+b+c; s=(a+b+c)*2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf("area=%.2f,perimeter=%.2fn",area,perim

8、eter); else printf("These sides do not correspond to a valid trianglen");return 0; 4輸入一個(gè)正整數(shù) n,再輸入n個(gè)學(xué)生的成績(jī),計(jì)算平均分,并統(tǒng)計(jì)各等級(jí)成績(jī)的個(gè)數(shù)。成績(jī)分為5個(gè)等級(jí),分別為A(90100)、B(8089)、C(7079)、D(6069)、E(059)。 #include <> int main(void) int mark, n, i, sum; double average; int counta, countb, countc, countd, counte;

9、printf("Enter n: "); scanf("%d",&n); counta= countb = countc = countd = counte =sum=0; for(i=1; i<=n; i+) scanf("%d",&mark); sum=sum+mark; if(mark>=90) counta+; else if (mark>=80) countb+; else if(mark>=70) countc+; else if(mark>=60) countd+; else

10、 counte+; average=sum*n; printf("average=%.1fn",average); printf("A: %d, B: %d, C: %d, D: %d, E: %dn",counta, countb, countc, countd, counte); return 0; 5輸出21世紀(jì)所有的閏年。判斷閏年的條件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。 解答: #include <> int main(void) int year; for(year=2000; year<=20

11、99; year+) if( (year%4=0 && year%100!=0) | (year%400=0) printf("%dn",year); return 0; 第4章習(xí)題參考答案 程序設(shè)計(jì)題 1輸入一批正整數(shù)(以零或負(fù)數(shù)為結(jié)束標(biāo)志),求其中的偶數(shù)和。 解答: #include <> int main(void) int x, sum; printf("Input integers: "); scanf("%d", &x); sum = 0;while(x>0) if(x%2=0)

12、sum = sum + x; scanf("%d", &x); printf("The sum of the even numbers is %dn", sum); return 0; x x xs=x+ + + +L 2輸入1個(gè)實(shí)數(shù) x,計(jì)算并輸出下式的值,直到最后一項(xiàng)的絕對(duì)值小于10要求定義和調(diào)用函數(shù)fact(n)計(jì)算n的階乘,可以調(diào)用pow()函數(shù)求冪。 2! 3! 4!解答: #include <> #include <> int main(void) int i; double item, s, x;double

13、 fact(int n); scanf("%le", &x); s = 0;item = x; i = 1;while(fabs(item) >= item = pow(x,i)/fact(i);s = s+ item; i+; printf("s=%.2fn", s); return 0; double fact(int n) int i; double result=1; for(i=1;i<=n;i+) result=result*i; return result; 3輸入一個(gè)整數(shù),求它的各位數(shù)字之和及位數(shù)。例如234的各位數(shù)字

14、之和是9,位數(shù)是3。 解答: #include <> int main(void) int count, sum; long in; printf("Input an integer: "); scanf("%ld", &in); if(in<0) in=-in; count=0; sum=0; while(in!=0) sum = sum + in%10; in=in/10; count+; printf("count = %d, sum = %dn", count, sum); return 0; 7求1

15、10000之間所有滿足各位數(shù)字的立方和等于它本身的數(shù)。例如153的各位數(shù)字的立方和是1+5+3=153。 解答: #include <> int main(void) int i, digit, number, sum; for (i=1; i<=10000; i+) number = i; sum = 0; while(number!=0) digit = number%10; number = number/10; sum = sum + digit*digit*digit; if(sum=i) printf("%dn", i); return 0;

16、8驗(yàn)證哥德巴赫猜想:任何一個(gè)大于等于6的偶數(shù)均可表示為兩個(gè)素?cái)?shù)之和。例如6=3+3,8=3+5,18=5+13。要求將6100之間的偶數(shù)都表示成兩個(gè)素?cái)?shù)之和,打印時(shí)一行打印5組。 解答: #include <> int prime(int n); int main(void) int i,m; int count=0; for (m=6;m<=100;m=m+2) for (i=3;i<=m/2;i=i+2) if (prime(i)&&prime(m-i) printf("%d=%d+%d ",m,i,m-i); count+; i

17、f(count%5=0) printf("n"); return 0; int prime(int n) int i,flag=1; if(n=1) flag=0; for(i=2;i<=n/2;i+) if(n%i=0) flag=0; return flag; 9輸入一個(gè)長(zhǎng)整數(shù),從高位開(kāi)始逐位分割并輸出。例如輸入123456,逐位輸出:1,2,3,4,5,6。 解答: #include <> int main(void) int digit; long in, temp, pow; scanf("%ld", &in); if

18、(in<0) in=-in; temp = in; pow = 1; while(temp>10) pow *= 10; temp /= 10;while(pow >= 1 ) digit = in/pow; in = in % pow; pow /= 10; printf("%-2d", digit); printf("n"); return 0; 13打印出以下圖案: * * * * * * * * * * * * * * * * * * * * * * * * * 解答: #include <> int main(vo

19、id) int i, j; for (i=1; i<=4; i+) for(j=2*(4-i);j>0;j-) printf(" "); for(j=1;j<=2*i-1;j+) printf("* "); printf("n"); for (i=1; i<=3; i+) for(j=1;j<=2*i;j+) printf(" "); for(j=1;j<=2*(4-i)-1;j+) printf("* "); printf("n"); r

20、eturn 0; 14猴子吃桃問(wèn)題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了。求第一天共摘了多少桃子(提示:采取逆向思維的方法,從后往前推斷。) 解答: #include <> int main(void) int i, peach; peach = 1; for(i = 1; i < 10; i+) peach = 2 * peach + 1; printf("%dn", peach); 第5章習(xí)題參考

21、答案 程序設(shè)計(jì)題 1輸入兩個(gè)正整數(shù)a和n, 求a+aa+aaa+aaa(n個(gè)a)之和。要求定義并調(diào)用函數(shù)fn(a,n),它的功能是返回aaa(n個(gè)a)。例如,fn(3,2)的返回值是33。 解答: #include <> int main(void) int a, i, n; long sn; long fn(int a, int n); scanf("%ld%d", &a, &n); sn = 0; for(i = 1; i <= n; i+) sn = sn + fn(a, i); printf("%ldn", sn

22、); return 0; long fn(int a, int n) int i; long tn; tn = 0; for(i = 1; i <= n; i+) tn = 10 * tn + a; return tn; 4輸入兩個(gè)正整數(shù)m和n(1<=m,n<=1000),輸出m n之間的所有完數(shù),完數(shù)就是因子和與它本身相等的數(shù)。要求定義并調(diào)用函數(shù)factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。 解答: #include "" int main(void) int

23、 i, m, n; int factorsum(int number);scanf("%d%d", &m, &n); for(i = m; i <= n; i+) if(factorsum(i) = i) printf("%d ", i); printf("n"); return 0; int factorsum(int number) int i, sum; if(number = 1) return 1; sum = 0; for(i = 1; i <= number/2; i+) if(number

24、% i=0) sum = sum + i; return sum; 6輸入一個(gè)整數(shù),將它逆序輸出。要求定義并調(diào)用函數(shù)reverse(number),它的功能是返回number的逆序數(shù)。例如,reverse(12345)的返回值是54321。 解答: #include <> int main(void) int in, res; int reverse(int number);scanf("%d", &in); res = reverse(in); printf("%dn", res); return 0; int reverse(in

25、t number) int flag, res; if(number >= 0) flag = 1; else flag = -1; number = -number; res = 0; do res = res * 10 + number % 10; number /= 10; while(number != 0); return flag * res; 第6章習(xí)題參考答案 程序設(shè)計(jì)題 1. 輸入一行字符,統(tǒng)計(jì)出其中的英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。 解答: #include <> int main(void) char c; int blank, digit, le

26、tter, other; c = getchar(); blank = digit = letter = other = 0; while(c != 'n') if(c >= 'a' && c <= 'z' | c >= 'A' && c <= 'Z') letter+; else if(c >= '0' && c <= '9') digit+; else if(c = ' ') bl

27、ank+; else other+; c = getchar(); printf("letter = %d, blank = %d, digit = %d, other = %dn", letter, blank, digit, other); return 0; 2. 輸入一行字符,統(tǒng)計(jì)其中單詞的個(gè)數(shù)。各單詞之間用空格分隔,空格數(shù)可以是多個(gè)。 解答: #include <> int main(void) char c; int count, word; c = getchar(); count = word = 0; while(c != 'n'

28、;) if(c = ' ') word=0; else if(word = 0) count+; word = 1; c = getchar(); printf("count = %dn", count); return 0; 第7章習(xí)題參考答案 程序設(shè)計(jì)題 1編寫(xiě)程序,輸入一個(gè)正整數(shù)n (1<n10),再輸入n個(gè)整數(shù),將最小值與第一個(gè)數(shù)交換,最大值與最后一個(gè)數(shù)交換,然后輸出交換后的n個(gè)數(shù)。 解答: #include <> int main(void) int i, index, n, t; int a10; printf("In

29、put n: "); scanf("%d", &n); printf("Input %d integers: "); for(i=0; i<n; i+) scanf("%d", &ai); index=0; for(i=1; i<n; i+)if(ai < aindex) index=i;t=a0;a0=aindex;aindex=t; index=n-1; for(i=0; i<n-1; i+)if(ai > aindex) index=i;t=an-1;an-1=aindex

30、;aindex=t; printf("After swap:"); for(i=0; i<n; i+)printf("%d ", ai); printf("n"); return 0; 2編寫(xiě)程序,輸入一個(gè)正整數(shù)n (1<n10),再輸入n個(gè)整數(shù),將它們從大到小排序后輸出。 解答: #include <> int main(void) int i, index, k, n, temp; int a10; printf("Input n: "); scanf("%d", &

31、amp;n); printf("Input %d integers: "); for(i=0; i<n; i+) scanf("%d", &ai); for(k=0; k<n-1; k+) index=k; for(i=k+1; i<n; i+)if(ai> aindex) index=i;temp=aindex; aindex=ak; ak=temp; printf("After sorted:"); for(i=0; i<n; i+)printf("%d ", ai); p

32、rintf("n"); return 0; 3編寫(xiě)程序,輸入一個(gè)正整數(shù) n (1n6)和n 階方陣a中的元素,如果a是上三角矩陣,輸出“YES”, 否則,輸出“NO”。(上三角矩陣,即主對(duì)角線以下的元素都為0,主對(duì)角線為從矩陣的左上角至右下角的連線)解答: #include <> int main(void) int a66,flag,i,j,n; printf("Input n: "); scanf("%d",&n); printf("Input array: n"); for (i=0;i&

33、lt;n;i+) for (j=0;j<n;j+) scanf("%d",&aij); flag=1; for (i=0;i<n;i+) for (j=0;j<i;j+) if(aij!=0)flag=0; if(flag)printf("YESn"); elseprintf("NOn"); return 0; 4編寫(xiě)程序,輸入兩個(gè)正整數(shù) m 和 n (1m, n6),然后輸入該m 行 n 列矩陣a中的元素,分別求出各行元素之和,并輸出。 解答: #include <>int main(void)

34、 int a66, i, j, m, n, sum; printf("Input m,n: "); scanf("%d%d",&m,&n); printf("Input array:n "); for(i=0;i<m;i+)for(j=0;j<n;j+) scanf("%d",&aij); for(i=0;i<m;i+)sum=0; for(j=0;j<n;j+) sum=sum+aij; printf("sum of row %d is %dn"

35、,i,sum);return 0; 第8章習(xí)題參考答案 程序設(shè)計(jì)題 1. 從鍵盤(pán)輸入10個(gè)整數(shù),然后根據(jù)提示選擇輸入A或者D,如果輸入為A,將這10個(gè)數(shù)按從小到大的順序輸出;如果輸入為D,則按從大到小的順序輸出。 解答: #include <> void sortAsc(int a,int n); void sortDesc(int a,int n); int main(void) int i, n, a10; char c; n=10; printf("input %d integers: ",n); for(i = 0; i < n; i+) scan

36、f("%d", &ai); getchar(); printf("input A or D: "); c=getchar(); if (c='A') sortAsc(a, n); else if (c='D') sortDesc(a,n); else printf("the input char is not 'A' or 'D'!, program is closed"); exit(1); printf("After sorted: ");

37、 for(i = 0; i < n; i+) printf("%d ", ai); printf("n");return 0; void sortAsc(int a, int n) int index, j, k, temp; for(k = 0; k < n-1; k+) index = k; for(j = k + 1; j < n; j+) if(aj < aindex) index = j; temp = aindex; aindex = ak; ak = temp; void sortDesc(int a, int n) int index, j, k, temp; for(k = 0; k < n-1; k+) index = k; for(j = k + 1; j < n; j+) if(aj > aindex) index = j; temp = aindex; aindex = ak; ak = temp; 2. 輸入10個(gè)整數(shù)存入數(shù)組a,再輸入一個(gè)整數(shù)x,在數(shù)組a中查找x,若找到則輸出相應(yīng)的下標(biāo),否則顯示“Not found”。要求定義和調(diào)用函數(shù) search(int list ,int n,int x),在數(shù)組list中查

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論