c語言課本試題答案.doc_第1頁
c語言課本試題答案.doc_第2頁
c語言課本試題答案.doc_第3頁
c語言課本試題答案.doc_第4頁
c語言課本試題答案.doc_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計教程 第1章 C語言程序設(shè)計概述 習(xí)題1參考答案 1、算法描述主要是用兩種基本方法:第一是自然語言描述,第二是使用專用工具進(jìn)行算法描述 2、c語言程序的結(jié)構(gòu)如下: 1、c語言程序由函數(shù)組成,每個程序必須具有一個main函數(shù)作為程序的主控函數(shù)。 2、/*與*/之間的內(nèi)容構(gòu)成c語言程序的注釋部分。 3、用預(yù)處理命令#include可以包含有關(guān)文件的信息。 4、大小寫字母在c語言中是有區(qū)別的。 5、除main函數(shù)和標(biāo)準(zhǔn)庫函數(shù)以外,用戶可以自己編寫函數(shù),程序一般由多個函數(shù)組成,這些函數(shù)制定實際所需要做的工作。 例如: main() int a,b,c; int max(); scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c); int max(int x,int y) int z; z=xy?x:y; return (z); 3、c語言的特點: 1、c語言具有結(jié)構(gòu)語言的特點,程序之間很容易實現(xiàn)段的共享; 2、c語言的主要結(jié)構(gòu)成分為函數(shù),函數(shù)可以在程序中被定義完成獨立的任務(wù),獨立地編譯成代碼,以實現(xiàn)程序的模塊化。 3、c語言運(yùn)算符豐富,運(yùn)算包含的范圍很廣; 4、c語言數(shù)據(jù)類型豐富。 5、c語言允許直接訪問物理地址,即可直接對硬件進(jìn)行操作,實現(xiàn)匯編語言的大部分功能; 6、c語言語法限制不太嚴(yán)格,程序設(shè)計自由度大,這樣是c語言能夠減少對程序員的束縛; 7、用c語言編程,生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,可移植性好; 4、合法標(biāo)識符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2 不合法標(biāo)識符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D 5、F2:將當(dāng)前編輯器中文件存盤 F10:調(diào)用主菜單 F4:程序運(yùn)行到光標(biāo)所在行 Ctrl+F9:當(dāng)前編輯環(huán)境下,進(jìn)行編譯、連接且運(yùn)行程序; Alt+F5:將窗口切換到DOS下,查看程序運(yùn)行結(jié)果 6、 (1): * welcome you very good * (2): please input three number;5,7,8 max number is:8 7、main 8、User screen、Alt+F5 9、標(biāo)識符必須是字母或下劃線開頭,大小寫字母含義不同。由數(shù)字、字母和下劃線組成; 關(guān)鍵字是一種語言中規(guī)定具有特定含義的標(biāo)識符。關(guān)鍵字不能作為變量或函數(shù)名來使用,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。 10、選擇主菜單File項下拉子菜單中Save項或直接按F2鍵存盤。 C語言程序設(shè)計教程 第2章 C語言基本數(shù)據(jù)類型與表達(dá)式 習(xí)題2參考答案 1、符合C語法規(guī)定的常量為:0x1e、abn、1.e5 2、(1): 錯誤如下:int x,y=5,z=5,aver; /*加粗紅字表示更正部分*/ x=7; /*加粗紅字表示更正部分*/ aver = (x+y+z)/3; /*加粗紅字表示更正部分*/ printf(”AVER=%dn”, aver); /*加粗紅字表示更正部分*/ 結(jié)果如下:AVER=5 (2): 錯誤如下:char c1=a,c2=b,c3=c; /*加粗紅字表示更正部分*/ int a=3.5,b=A; /*加粗紅字表示更正部分*/ 結(jié)果如下:a=3b=Aendnaabcc abc 3、 int 99 104 66 55 68 -1 char c h B 7 D (377) unsignde int 99 104 66 55 68 65535 float 99.00 104.00 66.00 55.78 68.00 -1.00 long int 99 104 66 55 68 -1 4、(1) 9,11,9,10 (注意printf()函數(shù)參數(shù)的右結(jié)合性) (2) 3,1,0,0 (注意printf()函數(shù)參數(shù)的右結(jié)合性) (3) 11,19,30,1 (注意邏輯或運(yùn)算符的運(yùn)算性質(zhì)) 5、(注意各運(yùn)算符的結(jié)合性) (1) 0 (2) 0 (3) 9.500000 (4) 90 (5) 10 (6) 10 (7) 65 (8) 2 (9) 4.500000 (10) 1 (11) 0 (12) 20 (13) 0 6、(5) 7、求x的絕對值 8、c(max=ab?a:b)?c:max; 9、B 10、D C語言程序設(shè)計教程 第3章 順序結(jié)構(gòu)程序設(shè)計 習(xí)題3參考答案 1、輸入函數(shù)scanf的參數(shù)錯誤,應(yīng)該為:scanf(%f,&k); 2、|1234 1234 | 3、ff,10 4、1,3,1 5、原字符串 左邊加空格再加字符串本身,字符個數(shù)總和為5個 6、scanf(%d,%d,%c,%c,&a1,&a2,&c1,&c2); 7、 main() int a,b; scanf(%d,%d,&a,&b); printf(a+b=%dn,a+b); printf(a-b=%dn,a-b); printf(a*b=%dn,a*b); printf(a/b=%dn,a/b); printf(float)a/b=%fn,(float)a/b); printf(a%b=%dn,a%b); 8、 main() float r,s,c; printf(please input the number(0):); scanf(%f,&r); s = 3.14*r*r; c = 2*3.14*r; printf(s = %f, c = %fn,s,c); 9、 main() int n; printf(please input the number(100-999):); scanf(%d,&n); printf(%d%d%d,n%10,(n/10)%10,n/100); 10、 main() int i,j,k; scanf(%d,%d,%d,&i,&j,&k); (i%2!= 0?1:0)+(j%2!= 0?1:0)+(k%2!= 0?1:0)=2?printf(YESn):printf(NOn); 11、 main() char a; scanf(%c,&a); printf(%c,%c,%c,a-1,a,a+1);/*以字符形式輸出*/ printf(%d,%d,%d,a-1,a,a+1); /*以數(shù)值形式輸出*/ 12、 #include math.h main() double a,b,c,s,Area; scanf(%f,%f,%f,&a,&b,&c); if(a+bc & a+cb & b+ca)/*如果構(gòu)成三角形,則求其面積*/ s = (a+b+c)/2; Area = sqrt(s*(s-a)*(s-b)*(s-c); /*求面積的海倫公式*/ printf(%fn,Area); else printf(you input the number is error!n); C語言程序設(shè)計教程 第4章 選擇結(jié)構(gòu)程序設(shè)計 習(xí)題4參考答案 1: 0 2: 20 3:(x20)|(x-100) 4: *a=25,b=14,c=19* 5: 37 6: if(a=b) x=1;printf(* * *x=%dn,x); else y=2;printf(* * *y=%dn,y); 7、 #include void main() char a,b,t; scanf(%c,%c,&a,&b); t=ab?a-b:b-a; if(t%2=0)printf(%c,%c,a+1,b+1); else printf(%c,%c,a-1,b-1); 8、 #include main() int a,b; printf(Please input (a,b): ); scanf(%d,%d,&a,&b); if(a%b=0) printf(%d / %d = %d,a,b,a/b); else printf(%d = %d * %d + %d,a,a/b,b,a%b); 9、 main() float x,y,s; scanf(%f,%f,&x,&y); s=(x-2)*(x-2)+(y-2)*(y-2); if(s1) printf(%.3f,%.3f)In the circle ,x,y); else if(s=1) printf(%.3f,%.3f)On the circle ,x,y); else printf(%.3f,%.3f)out of the circle,x,y); 10、 #include void main() int temp=0,month,year; printf(Please input (year,month): ); scanf(%d,%d,&year,&month); if(year%400=0)|(year%4=0&year%100!=0) temp=1; if(month=2) if(temp)printf(%d year %d month have 29 ,year,month); else printf(%d year %d month have 28 ,year,month); else if(month%2=0&month=8) printf(%d year %d month have 30 ,year,month); else printf(%d year %d month have 31 ,year,month); getch(); 11、 switch(a/10) case 5:m=4;break; case 4:m=3;break; case 3:m=2;break; case 2: case 1: case 0:m=1;break; default:m=5; 12、 方法一: #include void main() float x,y; scanf(%f,&x); if(x-5) y=x-1; else if(x=0) y=x; else if(x0&x8) y=x+1; printf(%f,y); getch(); _ 方法二: #include void main() float x,y; scanf(%f,&x); if(x-5) if(x=0)y=x; else if(x0&x8) y=y=x+1; else y=x-1; printf(%f,y); else printf(Input error!); getch(); 方法三: #include void main() float x,y,i; scanf(%f,&x); if(x-5) if(x=0)i=1; else if(x0&x8) i=2; else i=3; else i=4; switch(i) case 1:y=x;printf(%f,y);break; case 2:y=x+1;printf(%f,y);break; case 3:y=x-1;printf(%f,y);break; case 4:printf(Input error!);break; getch(); C語言程序設(shè)計教程 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計 習(xí)題5參考答案 1、 main() int n,value; int i,count=0; float average; long sum = 0; scanf(%d,&n); for(i = 1; i = A & ch = a & ch = 0 & ch = A & ch = a & ch 500)break; printf(the %d years later complete!n,count); 6、 main() int i,temp=0,bit=0; for(i = 1 ; i = 999; i+) if(i%3 = 0) temp = i; for(;temp != 0;) bit = temp%10; if(bit = 5)printf(%d,i);break; temp = temp/10; printf(b n); 7、 #include main() int steps = 29, i = 1; /*滿足前4個條件的最小數(shù)為29=30-1*/ while ( steps % 7 ) steps = (30 * +i) - 1; /*2、3、5、6 4個數(shù)的最小公倍數(shù)為30*/ printf(Total steps: %dn, steps); 8、 main() int i,j,k,n; printf(the narcissus number is:n); for(n=100;n1000;n+) i=n/100; j=n/10-i*10; /*j=(n%10)/10*/ k=n%10; if(i*i*i+j*j*j+k*k*k=n) printf(%dn,n); 9、 main() float i,j,temp,n,sum; int t; i=2;j=1;sum=0; scanf(%d,&t); for(n=1;n=t;n+) sum=sum+i/j; temp=i;i=i+j;j=temp;/*求fibonacci數(shù)列通項*/ printf(2/1+3/2+5/3+8/5+13/8+.=%fn,sum); 10、 main() int n,i,j; scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); 11、 main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-2d ,i,j,i*j); printf(n); 12、 #include stdio.h main() char c; int count1=0,count2=0; int sum1=0,sum2=0; int flage = 0; c=getchar(); while(c != *) if(c = -)flage = 1; if(flage = 0) sum1+=(c-48);count1+; /*只考慮一位數(shù)字*/ else if(c != -)sum2-=(c-48);flage=0;count2+; c = getchar(); printf(%d,%dn,count1,count2); printf(%f,%fn,(float)sum1/count1,(float)sum2/count2); 13、 main() int i,j; int s = 0; for(i = 100 ; i = 999; i+) s = 0; for(j=1; j = i/2 ; j+) if( i%j = 0 ) s = s + j; if(s = i)printf(%5d,i); 14、 #include #include main() int n=1; long k = 1; float e = 1; while ( fabs(1.0/k) = 1e-6) n+; e = e+ 1.0/k; k = k * n; /*求n階乘*/ printf(%fn,e); 15、 #include math.h main() float x0,x1,x2,f0,f1,f2; x1=-10; f1=2*x1*x1*x1-4*x1*x1+3*x1; x2=10; f2=2*x2*x2*x2-4*x2*x2+3*x2; do x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0; if(f0*f1)1e-6); printf(_2*x*x*x-4*x*x+3*x=0_n); printf(the root is %fn,x0); C語言程序設(shè)計教程 第6章 函數(shù)與編譯預(yù)處理 習(xí)題6參考答案 1、 #include int divisor(int a,int b) int r; while(r=a%b)!=0) a=b; b=r; return b; int multiple(int a,int b) int d; d=divisor(a,b); return a*b/d; void main() int a,b,c,d; printf(intput (a,b): ); scanf(%d,%d,&a,&b); c=divisor(a,b); d=multiple(a,b); printf(ndivisor=%dttmultiple=%d,c,d); 2、 #include void tongji(char a) int b3=0,0,0,i=0; while(ai!=0) if(ai=65)|(ai=97) b0+; else if(ai=48) b1+; else b2+; i+; printf(zimu: %d; shuzi: %d; qita: %d,b0,b1,b2); getch(); void main() char a100; printf(Please input a string: ); gets(a); tongji(a); 3、 #include int flower(int n) int x=0,i,j,k; i=(n%10); j= (n/10%10); k=(n/100); x=i*i*i+j*j*j+k*k*k; if(x=n) return 1; else return 0; void main() int i,n; printf(Please intput n(100999): ); scanf(%d,&n); if(n999|n100) printf(Input error!); else for(i=100;in;i+) if(flower(i)printf(%dt,i); getch(); 4、 #include #define SWAP(a,b) t=b;b=a;a=t; main() float x,y,t; printf(Enter two number (x,y): ); scanf(%f,%f,&x,&y); SWAP(x,y); printf(nnExchanged:x=%f,y=%f,x,y); getch(); 5、 #include long fib(int n) long p; if(n=0) p=0; else if(n=1) p=1; else p=fib(n-1)+fib(n-2); return p; void main() int n; printf(Please input n(=0): ); scanf(%d,&n); printf(nfibonacci(%d)=%ld,n,fib(n); 6、 #include long fac(int n) if(n=0) return 1; else return n*fac(n-1); void main() int m,n; long f; printf(Please input (m,n): ); scanf(%d,%d,&m,&n); f=fac(n+m)+fac(n); printf(nF=%ld,f); 7、 #include void list() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%2d ,i,j,i*j); printf(n); void main() list(); 8、 #include int he(int n) int i,s=0; for(i=1;in;i+) if(n%i=0)s+=i; return s; void main() int i,j; for(i=1;i300;i+) /*30000數(shù)值太大,運(yùn)算時間太長,將其減小為300*/ for(j=1;j300;j+) if(he(i)=j)&(he(j)=i)&(i!=j) printf(%d%dt,i,j); 9、 #include #define max 100 struct work long sid; char name15; workermax; int size=0; struct work *set_list() do printf(nnPlease input (sid,name): ); scanf(%ld,%s,&workersize.sid,); size+; while(workersize-1.sid!=0); return worker; void paixu(struct work a) int i,j,k;long t;char v15; for(i=0;isize-1-2;i+) k=i; for(j=i;jaj.sid)k=j; if(k!=i) t=ai.sid; ai.sid=aj.sid; aj.sid=t; strcpy(v,);strcpy(,);strcpy(,v); for(i=0;i=size-2;i+) printf(sid: %ldtname:%snn,ai.sid,); getch(); void select(struct work a) int i=0,found=1;long num; printf(Input select sid: ); scanf(%ld,&num); for(i=0;i=size-2;i+) if(ai.sid=num) found=0; printf(%ld: %s,num,); break; if(found)printf(nnNO this sid!); getch(); void main() struct work *p; p=set_list(); paixu(p); select(p); 10、 #include #include long jiecheng(int n) long s=1;int i; for(i=1;i=n;i+) s=s*i; return s; double f(double x,int n) double s=1,t=0;int i=1,j=-1; for(i=1;i=0 temp=ak break k=8(或k9) (2) %s stri=Z cstri+26-a+ i+a 4、/*題目:求一組成績的平均分?jǐn)?shù)以及高于平均分的成績。*/ #include #define max 100 void main() float amax,s=0,average=0; int i,n; printf(Please input N: ); /*輸入要處理元素的個數(shù)*/ scanf(%d,&n); printf(nPlease input %d ge shu: ,n); /*輸入90,85,92,77,80,62*/ for(i=0;in;i+) scanf(%f,&ai); s+=ai; average = s / n; printf(naverage = %.2fn,average); /*輸出81.00*/ for(i=0;iaverage) printf(%.2f ,ai); /*輸出90.00 ,85.00 ,92.00*/ 5、 /*題目:編寫程序,輸入一組整數(shù),將他們排序后由小到大輸出。*/ #include #define max 100 void main() /*采用選擇排序*/ int amax,j,i,k=0,t=0,n=0; printf(Please input N: ); /*輸入要處理元素的個數(shù)*/ scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); for(i=0;in-1;i+) /*比較n-1遍*/ k=i; for(j=i+1;jaj) k=j; if(k!=i) /*元素排序前下標(biāo)與排序后下標(biāo)不符,則交換其值*/ t=ai; ai=ak; ak=t; printf(nn); for(i=0;in;i+) printf(%d ,ai); 6、 /*題目:從鍵盤輸入一個4x4的整數(shù)矩陣,以主對角線()為對稱軸*/ /*將左下角元素中較大者替換右上角元素,并將右上角含對稱軸輸出。*/ #include #include void main() int d44,i,j; clrscr(); printf(nPlease input 16 num: ); for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&dij); for(i=0;i4;i+) for(j=0;jdji) dji=dij; /*左下角元素大于右上角元素則替換*/ for(i=0;i4;i+) printf(nnnn); /*為了保持行的間隔與列的間隔相同*/ for(j=0;j=i) printf(t%d,dij);/*為了使位數(shù)不同的數(shù)輸出后依然保持三角形的形狀*/ else printf(t); 7、 /*題目:輸入一個3x4的二維數(shù)組,然后分別按行和按列輸出。*/ #include #include void main() int d34,i,j; printf(Please input 12 num: ); for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&dij); printf(nnAn hang: ); for(i=0;i3;i+) for(j=0;j4;j+) printf(%d ,dij); /*按行輸出*/ printf(nnAn lie: ); for(i=0;i4;i+) for(j=0;j3;j+) printf(%d ,dji); /*按列輸出*/ 8、 /*題目:編寫程序,將兩個字符串連接起來,不用strcat函數(shù)。*/ #include #include void main() char s150,s230; int i=0,j=0,t=0; printf(Input first string: ); gets(s1); while(s1i!=0) i+; /*找到s1字符串的尾部*/ printf(nnInput second string: ); gets(s2); while(s2j!=0) s1i+=s2j+; s1i=0; /*給連接后的字符串s1加上結(jié)束標(biāo)志*/ printf(nnfirst + second: ); puts(s1); 9、 /*題目:輸入一行字符,統(tǒng)計字符組合ab的個數(shù)。*/ #include #include #define MAX 100 void main() char strMAX; int i=0,flage=0; int count=0; printf(nPlease input a string: ); gets(str); while(stri) if(stri=a) flage=1; /*發(fā)現(xiàn)a則標(biāo)記置為1*/ else if(stri=b) if(flage=1) /*發(fā)現(xiàn)b且標(biāo)記為1,則為ab組合,計數(shù)器加1*/ count+;flage=0; else flage=0; /*既不是a也不是b則標(biāo)記置為0*/ i+; printf(the double char ab count is %dn,count); 10、 /*題目:從鍵盤輸入10個字符串,找出一個最長的字符串*/ #include #include void main() char str1050; int maxlen=0,i; for(i=0;i10;i+) /*接收10個字符串*/ printf(nPlease input string_ %d: ,i); gets(stri); /*二維數(shù)組的每一行是一個一維數(shù)組*/ if(maxlenstrlen(stri)maxlen=strlen(stri); /*記錄下較大字符串長度*/ for(i=0;i10;i+) if(strlen(stri)=maxlen) puts(stri); /*只要字符串長度與最大長度相等就打印出來*/ 11、 /*題目:給數(shù)組a輸入m個按升序排列的數(shù),給數(shù)組b輸入n個按降序排列的數(shù)*/ /*將a與b中的元素按降序排列存在數(shù)組c中。*/ #include void main() int a50,b50,c100,i,m,n,j,k,s; printf(nm = );scanf(%d,&m); /*確定a中元素的個數(shù)*/ printf(nn = );scanf(%d,&n); /*確定b中元素的個數(shù)*/ printf(nPlease input %d numbers: ,m); for(s=0;sm;s+) scanf(%d,&as); /*給數(shù)組a中的元素賦值*/ printf(nPlease input %d numbers: ,n); for(s=0;s=0&jn) if(ai=bj) ck=bj; j+; k+; else ck=ai; i-; k+; if(i0&jn)for(;j=0&j=n)for(;i=0;i-,k+)ck=ai; /*b數(shù)組元素先用完,只用a數(shù)組的*/ for(s=0;s=*q; q+ (2) i11 &ai i-;if(i=0)break; i!=0 4、 /*題目:輸入一個字符串,再刪除指定的字符*/ /*如果字符串中沒有指定字符,則輸出原字符串。*/ #include void fun(char *str,char c) char *p; for(p=str;*p!=0;p+) if(*p!=c) *str+=*p; *str=0; void main() char str80,c; printf(nPlease input a string: );

溫馨提示

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

評論

0/150

提交評論