C語言習(xí)題答案_第1頁
C語言習(xí)題答案_第2頁
C語言習(xí)題答案_第3頁
C語言習(xí)題答案_第4頁
C語言習(xí)題答案_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、c語言習(xí)題答案 第1章 1選擇題 (1) c (2) b (3) d 2填空題 (1)main (2) main (3) 有窮性、確定性、有零個或多個輸入、有一個或多個輸出、有效性 (4) 順序、分支和循環(huán)(5) 自頂向下,逐步細(xì)化、模塊化設(shè)計、結(jié)構(gòu)化編碼 第2章 1選擇題 bbcda dd(c)b(a)ba bbdcb 2、填空題 (1) 數(shù)字、字母、下劃線 (2)0 (3) 4、8 (4) (a+b)*c/(a-b) (5) 60 (6)16 (7)3 (8)6、4、2 (9)0 (10)10、6 (11)5.500000 (12) 12、4 (13)double (14) 0 (15)1

2、6 (16)6.6 3、編程題 (1) main() printf(int:%5dn float:%5dn char:%5dn double:%5dn long:%5dn, sizeof(int), sizeof(float), sizeof(char), sizeof(double), sizeof(long); (2) #define rat 1.60934 main() float k=0.0; printf(input the km:); scanf(%f,&k); printf(nmile:%f,k*rat); 第3章 1選擇題 (1) (10):ddcdc(d) dcdb(無)c

3、2解析題 (1) x=170,x=170,x=252, x=170 x=170,x=170,x=170,x=%6d a=513.789185,a=513.79,a=513.78918457,a=513.78918457 (2) a=3b=7x=8.5y=71.82c1=ac2=a 3編程題 (1) main() int x,y; scanf(%d%d,&x,&y); printf(商數(shù)=%d,余數(shù)=%d,x/y,x%y); system(pause); (2) main() double x,y,z,avg; scanf(%lf%lf%lf,&x,&y,&z); avg=(x+y+z)/3;

4、printf(%.1lf,avg,avg); system(pause); 第4章 1選擇題 (1)(10) ccaadccabd 2填空題 (1) ch=a & ch=z ch=ch-32 (2) x2 x-1 y=-1 (3) a+bc & a+cb & b+ca a=b&a=c a=b | a=c | b=c (4) mark/10 k=1 case 9 (5) x0 c=x/10 y!=-2 3編程題 (1) #include main() int x; printf(please input a number:); scanf(%d,&x); if(x%2=0) printf(x i

5、s a even number); else printf(x is a odd number); (2) #include main() int x,y; printf(please input a number); scanf(%d,&x); if(x=-5) printf(the number is error); else if(x0) y=x; printf(%d,y); else if(x=0) y=x-1;printf(%d,y); else if(x10) y=x+1;printf(%d,y); else printf(the number is error); (3) #in

6、clude main() int a,m; printf(please input a number:); scanf(%d,&a); switch(a/10) case 0: case 1: case 2:m=1;break; case 3:m=2;break; case 4:m=3;break; case 5:m=4;break; default:m=5;break; printf(%d,m); (4) #include main() float price,tax; printf(please input the price of product:); scanf(%f,&price);

7、 if(price10000) tax=price*0.05; else if(price5000) tax=price*0.03; else if(price1000) tax=price*0.02; else tax=0; printf(%f,tax); (5) #include main() float score; printf(please input the score of student:); scanf(%f,&score); if(score=85) printf(very good); else if(score=60) printf(good); else printf

8、(bad); 第5章 1選擇題 (1)d (2) c (3)a (4)d (5)a (6)d (7)d (8)b (9)d (10)b (11)c (12)b (13)d (14)a (15)c 2填空題 (1) =0 m=m/k k+() (2) 5 4 6 (3) 3*i-2 (4) -= *= (5) 8 5 2 (6) j+ i%j=0 j=i (7)sumk sum=k j-2 (8) s=0 p=1 j=i 3改錯題 (1) 第一處改正: for改為for 第二處改正: ave=sum/4改為ave=sum/4.0 (2) 第一處改正: j=9 第二處改正: m=100*i+10*

9、j+k 3編程題 (1) #include main() int s; float n,t,sum; t=1; sum=0; n=1; s=1.0; while(n=100) sum=sum+t; n=n+1; s=-s; t=s/n; printf(sum=%10.6fn,sum); (2) 利用輾除法,直到b為0為止 main() int p,r,n,m,temp; printf(input two integer n,m:); scanf(%d,%d,&n,&m); if(n0) x1=(x2+1)*2; /*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/ x2=x1; day-; pri

10、ntf(thetotalis%dn,x1); (4) #include main() int i; long int n=1; for(i=1;i=10;i+) n=n*i; printf(i%5=0?%2d!=%-10ldn:%2d!=%-10ld,i,n); (5) main() int m,s,i; for(m=2;m1000;m+) s=0; for(i=1;im;i+) if(m%i)=0) s=s+i; if(s=m) printf(%d its factors are ,m); for(i=1;im;i+) if(m%i=0) printf(%d,i); printf(n); (

11、6) #include main() int n,i,j; scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=n+i-1;j+) if(j=n-i) printf( ); else printf(*); printf(n); (7) #include main() float x0,x1,x2,fx0,fx1,fx2; do printf(enter x1 & x2:); scanf(%f,%f,&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6; while(fx1*fx20); do x0=(x

12、1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6; if(fx0*fx1)=1e-5); printf(x=%6.2fn,x0); 第6章 1選擇題 ccdcc aadbd 2. 寫出程序的運行結(jié)果 (1) sum=6 (2) max=9,row=1,col=0 (3) 0 1 0 2 1 0 3 2 1 0 (4) -5 3、填空 (1)i=j=k=0 、 i4 、j5、 (2) si 、 s0,s1 、str,s1、s2,str 4、編程題 (1) #include main() int a12,count=0,i; randomize(); for (i=0;i12;i+

13、) ai=5+random(11); for(i=0;i12;i+) printf(%5d,ai); count+; if(count%4=0)printf(n) ; getch(); (2) main() int a5=2,23,43,77,33; int max,min,i; long sum=0l; int count=0; float av; max=min=a0; for(i=0;imax)max=ai; if(aimin)min=ai; av=(float)sum/5; for(i=0;iav)count+; printf(max:%dnmin:%dnav:%fncount:%d,

14、max,min,av,count); getch(); (3) main() int score30=61,62,63,64,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80, 81,85,89,90,33,44,55,91,92,93; int i,count90=0,count80=0,count70=0,count60=0; for(i=0;i30;i+) printf(intput no. %d students score:,i+1); scanf(%d,score+i); for(i=0;i=90) count90+; count80

15、+; count70+; count60+; else if(scorei=80) count80+; count70+; count60+; else if(scorei=70) count70+; count60+; else if(scorei=60) count60+; printf(060:%dn6070:%dn7080:%dn8090:%dn90100:%d,30-count60,count60-count70,count70-count80,count80-count90,count90); printf(n60 or higher:%dn70 or higher:%dn80 o

16、r higher:%dn90 or higher:%dn,count60,count70,count80,count90); getch(); (4) 1、 main() char a45; int i,j,k; for(i=0;i45;i+)ai= ; for(i=0;i5;i+) for(j=0;ji;j+) a9*i+j= ; for(k=0;k5;k+) a9*i+j+k=*; j=0; for(i=0;i45;i+) printf(%c,ai); j+; if(j%9=0)printf(n); getch(); 2、 main() char a59; int i,j,k; for(i

17、=0;i5;i+) for(j=0;j9;j+) aij= ; for(i=0;i5;i+) for(j=0;ji;j+) aij= ; for(k=0;k5;k+) aij+k=*; for(i=0;i5;i+) for(j=0;jy?x:y) (9) str =abdef (10) 8,17 (11) a=5 a*a=25 a*a*a=512 (12) * # * * # * * # * 3 、編程題 (1) long act(long n) if (n=1|n=0) return 1l; else return n*act(n-1); main() int n=3; printf(n!=

18、%ld,act(n); getch(); (2) void mmax(float a,int n); main() float a6; int i; for(i=1; i=5; i+) scanf(%f,&ai); a0=1; mmax(a,5); printf(%f %fn,aa0,a0); void mmax(float a,int n) if(naa0) a0=n; mmax(a,n-1); (3) #include main() char a40;int i=0; for(;i=40;i+) scanf(“%c”,&ai); int count=0,i=0,len,flag=0; le

19、n=strlen(a); while(!flag&ilen) if(ai=a)flag=1; i+; while(flag&i=a&(a)=a&(a)=z) main() char c; scanf(%c,&c); printf(%dn,isalpha(c); (2) /*習(xí)題8-2-2 */ #define swap(t,x,y) t w; w=x; x=y; y=w; main() double a=99.99,b=11.11; swap(double,a,b); printf(%f,%fn,a,b); (3) /*習(xí)題8-2-3 */ #include stdio.h #define m

20、ax 80 #define change 1 main() char strmax; int i; printf(input text:n); gets(str); #if(change) for (i=0;i=a&stri=a&striz) stri+=1; else if(stri=z|stri=z) stri-=25; #endif printf(output:n%s,str); (4) /*習(xí)題8-2-4 */ #define leap_year(y) (y%4=0)&(y%100!=0)|(y%400=0) main() int year; printf(input year:);

21、scanf(%d,&year); if(leap_year(year) printf(%d is a leap year.n,year); else printf(%d is not a leap year.n,year); (5) /*習(xí)題8-2-5.h */ #ifndef _x8_2_5_h #define _x8_2_5_h #define aver(a,b,c) (a+b+c)/3.0 #endif /*習(xí)題8-2-5 */ #include x8_2_5.h main() int a,b,c; printf(input three integers a,b,c:); scanf(%

22、d,%d,%d,&a,&b,&c); printf(average is %f.n,aver(a,b,c); 第9章 4編程題 (1) /*習(xí)題9-4-1 */ #include #include main() char *str120,*str220,*str320; char swap(char *,char *); printf(input three line:n); gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)0) swap(str1,str2); if(strcmp(str1,str3)0) swap(str1,s

23、tr3); if(strcmp(str2,str3)0) swap(str2,str3); printf(now, the order is:n); printf(%sn%sn%sn,str1,str2,str3); char swap (char *p1,char*p2) /*交換兩個字符串*/ char *p20; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); (2) /*習(xí)題9-4-2 */ main() int number20,n,m,i; printf(how many numbers?); /*共有多少個數(shù)*/ scanf(%d,&n);

24、printf(input %d numbers:n,n); /*輸入n個數(shù)*/ for(i=0;in;i+) scanf(%d,&numberi); printf(how many place you want to move?); /*后移多少個位置*/ scanf(%d,&m); move(number,n,m); /*調(diào)用move函數(shù)*/ printf(now,they are:n); for(i=0;iarray;p-) *p=*(p-1); *array=array_end; m-; if(m0) move(array,n,m); /*遞歸調(diào)用,當(dāng)循環(huán)次數(shù)m減至0時,停止調(diào)用*/ (

25、3) /*習(xí)題9-4-3 */ #include #include #define total 7 int mseek(char*str,char xstr,int n) int i; for(i=0; in; i+) if(strcmp(stri,xstr)=0) return 1; return 0; main() char*nametotal=lining,linshan,tianyuan,zhangqiang,haipo,fangbing; char xname20; printf(enter a name:); gets(xname); if(mseek(name,xname,tot

26、al) printf(found!n); else printf(not found!n); (4) /*習(xí)題9-4-4 */ #include #include int fun(char *str,int num4) int i; for(i=0; i=a & *str=a & *str=0 & *str=9) num2+; else num3+; str+; #define n 80 main() int stringn,n4,i; gets(string); fun(string,n); for(i=0; i4; i+) printf(%dt,ni); (5) /*習(xí)題9-4-5 */

27、#include main() int a55,*p,i,j; void change(int *p); printf(input matrix:n); for(i=0;i5;i+) /*輸入矩陣*/ for(j=0;j5;j+) scanf(%d,&aij); p=&a00; /*使p指向0行0列元素*/ change(p); /*調(diào)用函數(shù), 實現(xiàn)交換*/ printf(now, matrix: n); for(i=0;i5;i+) /*輸出已交換的矩陣*/ for(j=0;j5;j+) printf(%4d,aij); printf(n); void change(int *p) /*交換

28、函數(shù)*/ int i,j,temp; int *pmax,*pmin; pmax=p; pmin=p; for(i=0;i5;i+) /*找最大值和最小值的地址,并賦給pmax,pmin*/ for(j=0;j5;j+) if(*pmax*(p+5*i+j) pmin=p+5*i+j; temp=*(p+12); /*將最大值換給中心元素*/ *(p+12)=*pmax; *pmax=temp; temp=*p; /*將最小值換給左上角元素*/ *p=*pmin; *pmin=temp; pmin=p+1; for(i=0;i5;i+) /*找第二最小值的地址賦給pmin*/ for(j=0;

29、j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; /*將第二最小值換給右上角元素*/ *pmin=*(p+4); *(p+4)=temp; pmin=p+1; for(i=0;i5;i+) /*找第三最小值的地址賦給pmin*/ for(j=0;j*(p+5*i+j) pmin=p+5*i+j; /*將第三最小值換給左下角元素*/ temp=*pmin; *pmin=*(p+20); *(p+20)=temp; pmin=p+1; for(i=0;i5;i+) /*找第四最小值的地址賦給pmin*/ for(j=0;j*(p+5*i+j) pmin=p+5*i+j;

30、temp=*pmin; /*將第四最小值換給右下角元素*/ *pmin=*(p+24); *(p+24)=temp; (6) /*習(xí)題9-4-6 */ #include main() void avsco(float *psco,float *pave); void avcour1(char *pcou,float *psco); void fali2(char course510,int num4,float score45,float aver4); void good(char course510,int num4,float score45,float aver4); int i,j,

31、*pnum,num4; float score45,aver4,*psco,*pave; char course510,*pcou; printf(input course: n); pcou=course0; for(i=0;i5;i+) scanf(%s,coursei); printf(input no. and scoures: n); printf(no.); for(i=0;i5;i+) printf(,%s,coursei); printf(n); psco=&score00; pnum=&num0; for(i=0;i4;i+) scanf(%d,pnum+i); for(j=

32、0;j5;j+) scanf(,%f,psco+5*i+j); pave=&aver0; printf(nn); avsco(psco,pave); /*求出每個學(xué)生的平均成績*/ avcour1(pcou,psco); /*求出第一門課的平均成績*/ printf(nn); fali2(pcou,pnum,psco,pave); /*找出2門課不及格的學(xué)生*/ printf(nn); good(pcou,pnum,psco,pave); /*找出成績好的學(xué)生*/ void avsco(float *psco,float *pave) /*求每個學(xué)生的干均成績的函數(shù)*/ int i,j; fl

33、oat sum,average; for(i=0;i4;i+) sum=0.0; for(j=0;j5;j+) sum=sum+(*(psco+5*i+j); /*累計每個學(xué)生的各科成績*/ average=sum/5; /* 計算平均成績*/ *(pave+i)=average; void avcour1(char *pcou,float *psco) /*第一門課的平均成績的函數(shù)*/ int i; float sum,average1; sum=0.0; for(i=0;i4;i+) sum=sum+(*(psco+5*i); /*累計每個學(xué)生的得分*/ average1=sum/4; /

34、*計算平均成績*/ printf(course 1: %s ,average score: %6.2f. n, pcou,average1); void fali2(char course510,int num4,float score45,float aver4) /*找兩門以上課程不及格的學(xué)生的函數(shù)*/ int i,j,k,label; printf(= = = = = = = =student who is fail = = = = = = = = = = = =n); printf( no.); for(i=0;i5;i+) printf(%10s,coursei); printf(

35、averagen); for(i=0;i4;i+) label=0; for(j=0;j5;j+) if(scoreij)=2) printf(%5d,numi); for(k=0;k5;k+) printf(%10.2f,scoreik); printf(%10.2fn,averi); void good(char course510,int num4,float score45,float aver4) /*找成績優(yōu)秀的學(xué)生(各門85分以上或平均90分以上)的函數(shù)*/ int i,j,k,n; printf(= = = = = = = =student whose score is goo

36、d= = = = = = = =n); printf( no.); for(i=0;i5;i+) printf(%10s,coursei); printf( averagen); for(i=0;i4;i+) n=0; for(j=0;j85.0) n+; if(n=5)|(averi=90) printf(%5d,numi); for(k=0;k5;k+) printf(%10.2f,scoreik); printf(%10.2fn,averi); (7) /*習(xí)題9-4-7*/ #include double sigma(double (*fn)(double),double l,doub

37、le u) double sum=0,d; for(d=l; du; d+=0.1) sum+=fn(d); return sum; void main() double sum; sum=sigma(sin,0.1,1.0); printf(sum of sin from 0.1 to 1.0 is: %fn,sum); sum=sigma(cos,0.5,3.0); printf(sum of cos from 0.5 to 3.0 is: %fn,sum); (8) /*習(xí)題9-4-8 */ main() int i; char *month_name(int n); printf(in

38、put month no.:n); scanf(%d,&i); if(i %sn,i,month_name(i); /*調(diào)用指針函數(shù)month_name()*/ char *month_name(int n) /*定義一個指針函數(shù)month_name(),返回一個指向字符串的指針*/ static char *name=illegal month, january, february, march, april, may, june, july, august, september, october, november, december; return(n12)?name0:namen);

39、(9) /*習(xí)題9-4-9 */ #include #include main() void sort(char *p); int i; char *p10,str1020; for(i=0;i10;i+) pi=stri; /*將第i個字符串的首地址賦予指針數(shù)組p的第i個元素*/ printf(input 10 strings:n); for(i=0;i10;i+) scanf(%s,pi); sort(p); printf(now, the sequence is:n); for(i=0;i10;i+) printf(%sn,pi); void sort(char *p) int i,j;

40、 char *temp; for(i=0;i9;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; (10) /*習(xí)題9-4-10 */ #include #define linemax 20 /*定義字符串的最大長度*/ main() void sort(char *p); int i; char *p,*pstr5,str5linemax; for(i=0;i5;i+) pstri=stri; /*將第i個字符串的首地址賦予指針數(shù)組pstr的第i個元素*/ printf(input 5 strings:n); for(i

41、=0;i5;i+) scanf(%s,pstri); p=pstr; sort(p); printf(strings sorted:n); for(i=0;i5;i+) printf(%sn,pstri); void sort(char *p) /*冒泡法對5個字符串排序的函數(shù)*/ int i,j; char *temp; for(i=0;i5;i+) for(j=i+1;j0) /*比較后交換字符串地址*/ temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; 第10章 3編程題 (1) #include struct data int year; int mon

42、th; int day; ; main() struct data a; int monthnum12=31,28,31,30,31,30,31,31,30,31,30,31; int i,sum=0; scanf(%d%d%d,&a.year,&a.month,&a.day); for(i=0;ia.month-1;i+) sum+=monthnumi; sum+=a.day; if(a.year%4=0 & a.year%100!=0 |a.year%400=0) sum+=1; printf(%d年%d月%d日 is the %d day,a.year,a.month,a.day,sum); system(pause); (2) #include #include struct study float mid; float end; float avg; ; main() struct study student; scanf(%f%f,&student.mid,&student.end); stude

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論