《C語言程序設(shè)計》二級學習資料參考答案(2016)_第1頁
《C語言程序設(shè)計》二級學習資料參考答案(2016)_第2頁
《C語言程序設(shè)計》二級學習資料參考答案(2016)_第3頁
《C語言程序設(shè)計》二級學習資料參考答案(2016)_第4頁
《C語言程序設(shè)計》二級學習資料參考答案(2016)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、理論部分參考答案2009春答案1-6DDCC BBAA DCBA ABCD ABCB ADCD7#include <stdio.h>#include <math.h>double fact(int n) double res=1;int i; for(i=1;i<=n;i+) res=res*i; return res;double cal(double x,double e) double s=0,t=x;int i; for(i=1;t>=e;i+) t=pow(x,i)/fact(i);s=s+t; return s;void main() float

2、 x,e; scanf("%f%f",&x,&e); printf("%lfn",cal(x,e); 2009秋答案一、1-6DACB BCAD DCBA AABB CCDD ABCD 二、1#include <stdio.h>main() int i,a100,min,min_i; for(i=0;i<100;i+) scanf("%d",&ai); if(i=0) min=ai,min_i=0; else if(ai<min) min=ai,min_i=i; printf("

3、;數(shù)組a中的最小值為a%d=%dn",min_i,min); 二、2#include <stdio.h>double cal_power(float x,int n) int i; double m=1; for(i=1;i<=n;i+) m=m*x; return m; main() float x; int i,n; double s=0; printf("請輸入浮點數(shù)x和正整數(shù)n:"); scanf("%f%d",&x,&n); for(i=1;i<=n;i+) s=s+1.0/cal_power(

4、x,i); printf("表達式的值為%lfn",s); 2010春答案一、1-6DCCB BBAA AADD ABCD DCCB ABCD二、1#include <stdio.h>main() int i,a100;long s=0; for(i=0;i<100;i+) scanf("%d",&ai); if(ai%2!=0) s=s+ai; printf("數(shù)組a中的奇數(shù)之和為%ldn",s); 二、2#include <stdio.h>int total(int n) int i,s=0;

5、 for(i=1;i<=n;i+) s=s+i; return s; main() int i,n; float s=0; printf("請輸入正整數(shù)n:"); scanf("%d",&n); for(i=1;i<=n;i+) s=s+1.0/total(i); printf("表達式的值為%fn",s); 2010秋答案一、1-6AABCC DDABCB AABB BBAA CDDC CDDC二、1 #include <stdio.h> void main() int a100, x, i, cou

6、nt=0 ; printf("Input 100 integers:n"); for ( i=0; i<100; i+) scanf("%d", a+i); printf("Input integer x:n"); scanf("%d", &x); for ( i=0; i<100; i+) if ( ai = x ) count+; printf( "count=%dn", count); 二、2double fact (int n) int i ;double s=1 ;

7、 for ( i=1; i<=n; i+)s *= i ;return s;#include <stdio.h>void main() double s=0;int n, i ;do scanf("%d", &n); while (n<=0);for ( i=1; i<=n; i+)s += (n-i+1)/fact(i);printf("s=%fn", s);11春答案一、ABCD DCBA AABB CCDD CDCD BBAA二、1 #include<stdio.h>void main() int

8、a100,x,i,s=0; for(i=0;i<100;i+) scanf("%d",&ai); scanf("%d",&x); for(i=0;i<100;i+) if(ai>=x) s+; printf("%dn",s);2 #include<stdio.h>double f(int n) int i; double s=1; for(i=n;i<=2*n-1;i+) s=s*i; return s; void main() double s=0;int n,i; do scan

9、f("%d",&n); while(n<=0); for(i=1;i<=n;i+) s+=1/f(i); printf("%fn",s);11秋答案:一、AAAB CDDC BABB DDCC DCBA DCBA二、1 #include<stdio.h> void main() int i,n=0;float a100; for(i=0;i<100;i+) scanf(“%f”,&ai); if(ai<60) n+; printf(“不及格人數(shù)是:%d?!?n);2 #include<stdio.

10、h> double f(int n) int i;double s=0; for(i=n;i<=2*n-1;i+) s=s+i; return s; void main() int i,n;double s=0; do scanf("%d",&n); while(n<=0); for(i=1;i<=n;i+) s=s+1.0/f(i); printf(“%lf”,s);12春答案:一、BABC DCBA BCDC AADD CBAB CDDA二、1 #include<stdio.h>void main() int m,n,i,j,

11、a66,s6=0; printf("請輸入m,n(1<=m<=6, 1<=n<=6):"); do scanf("%d%d",&m,&n); while(m<1 | m>6 | n<1 | n>6); for(i=0;i<m;i+) for(j=0;j<n;j+) scanf("%d",&aij); si+=aij; for(i=0;i<m;i+) printf("第%d行元素的和是:%d。n",i+1,si); 2 #inc

12、lude<stdio.h> double fun(int x) return x*x-3.14*x-6; void main() int x;double s=0; printf("x yn"); for(x=-10;x<=10;x+) printf("%-6d%.2lfn",x,fun(x); 12秋答案:一、DCBA ABCD ACBD ABCD DCBA BDAC二、1 #include<stdio.h>void main() int n,i,j,s=0,a66; printf("請輸入n(1<=n&l

13、t;=6):"); do scanf("%d",&n); while(n<1 | n>6); for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%d",&aij); if(aij!=0) s+; printf("矩陣中非零元素共%d個。",s); 2 #include<stdio.h> double power(double x,int n) int i;double s=1; for(i=1;i<=n;i+) s=s*x; return

14、s; void main() int i,n;double s=0; do scanf("%d",&n); while(n<=0); for(i=1;i<=n;i+) s=s+power(2,i); printf("%.0lf",s); 13春答案一、DCDA BADC DABA CCBB ADCD ABBC二、1 #include<stdio.h>void main() int x; scanf("%d",&x); if(x=0) printf("0n"); else if

15、(x<0) printf("-");x=-x; while(x!=0) printf("%d",x%10);x=x/10; printf("n"); 2 #include<stdio.h>double f(double x) return (x+1)*(x+1); void main() double x; printf(" x yn"); for(x=-1.0;x<=1.0;x=x+0.1) printf("%.1f %.2fn",x,f(x);13秋答案:一、BCDD

16、 CBAB CCBA DCBB CDAD ADAA二、1 #include<stdio.h> void main() int i,n=0;float a100; for(i=0;i<100;i+) scanf(“%f”,&ai); if(ai>=90) n+; printf(“優(yōu)秀學生人數(shù)是:%d。n”,n);2 #include<stdio.h> double f(int n) int i;double s=0; for(i=n;i<=2*n-1;i+) s=s+i; return s; void main() int i,n;double

17、s=0; do scanf("%d",&n); while(n<=0); for(i=1;i<=n;i+) s=s+f(i)/i; printf(“%lf”,s);14春答案:一、ABBC CDCB AADA ABCD BACC BADD二、1 #include<stdio.h> void main() int m,n,i,j,c=0;float s=0,a66;do printf("請輸入m(1<=m<=6):"); scanf("%d",&m); while(m<1 | m

18、>6); do printf("請輸入n(1<=n<=6):"); scanf("%d",&n); while(n<1 | n>6);printf("請輸入%d個數(shù):",m*n);for(i=0;i<m;i+) for(j=0;j<n;j+) scanf("%f",&aij); s+=aij; printf("矩陣中所有元素的平均值為:%f。n",s/(m*n); for(i=0;i<m;i+) for(j=0;j<n;j+)

19、 if(aij>s/(m*n) c+; printf("大于平均值的元素個數(shù)為:%d。n",c); 2 #include<stdio.h>double fact(int n) int i; double s=1; for(i=1;i<=n;i+) s=s*i; return s; void main() double s=0;int n,i; do scanf("%d",&n); while(n<=0); for(i=1;i<=n;i+) s+=i/fact(i+1); printf("%fn&quo

20、t;,s);14秋答案:一、BCDB ACBD CDBC ABDD ABAD AACC二、1 #include<stdio.h> void main() int a100,i,max,count=0; for(i=0;i<100;i+) scanf(“%d”,&ai); max=a0; for(i=1; i<100;i+) if(ai>max) max=ai;for(i=0; i<100;i+) if(ai=max) count+;printf(“MAX=%d,COUNT=%dn”,max,count);2 #include<stdio.h&g

21、t; #include<math.h> double fun(double x) return pow(x,3)+2.0*pow(x,2)-3.9*x+8; void main() double x; printf(“ x yn”); for(x=-2.0;x<=2.0;x=x+0.5) printf(“%-8g%gn”,x,fun(x); 15春答案:一、ACDB BDBD BCAB ACDC ABDD AADC二、1 #include<stdio.h>void main()int a10,i,max,maxi,t; for(i=0;i<10;i+) sc

22、anf("%d",&ai); max=a0; maxi=0; for(i=1;i<10;i+) if(ai>max) max=ai; maxi=i; t=a0; a0=amaxi; amaxi=t; for(i=0;i<10;i+) printf("%d n",ai);2 #include<stdio.h>double fun(double x)return x*x-6.5*x+2; void main()double x; printf(" x yn"); for(x=-3;x<=3;x=

23、x+0.5) printf("%-8.2lf %-8.2lfn",x,fun(x);15秋答案:一、BCDC BABC DCBA ADDA ADCB ABCD二、1 #include<stdio.h>void main()int n,i,j,ii,jj; float a66,min; scanf("%d",&n); for(i=0;i<n;i+) for(j=0;j<n;j+) scanf("%f",&aij); ii=0; jj=0; min=a00; for(i=0;i<n;i+) f

24、or(j=0;j<n;j+) if(aij<min) min=aij;ii=i;jj=j; printf("%f %d %dn",min,ii,jj);2 #include<stdio.h>#include<math.h>double dist(double x,double y)return sqrt(x*x+y*y); void main()int i; double x10,y10; for(i=0;i<10;i+) scanf("%lf%lf",&xi,&yi); printf("

25、; (x,y) distancen"); for(i=0;i<10;i+) printf("(%.2f,%.2f) %.2fn",xi,yi,dist(xi,yi);【補充要點】 位運算符運算符名稱說明按位求反轉(zhuǎn)換二進制,按位求反; 0 1 對換&按位求與轉(zhuǎn)換二進制,按位求與;有 0 得 0 ,全 1 得 1|按位求或轉(zhuǎn)換二進制,按位求或;有 1 得 1 ,全 0 得 0按位異或轉(zhuǎn)換二進制,按位異或;相同為 0 ,不同為 1<<按位左移轉(zhuǎn)換二進制,按位左移;乘 2 模余,注意符號>>按位右移轉(zhuǎn)換二進制,按位右移;除 2 取整上

26、機部分參考答案C 程序填空題參考答案1 調(diào)用函數(shù)f,計算:x=1.7時的多項式的值。#include <stdio.h>float f(float*,float,int);void main() float b5=1.1,2.2,3.3,4.4,5.5; printf("%fn",f(b,1.7,5);float f(float *a,float x,int n) float y=a0,t=1; int i; for(i=1;i<n;i+) t=t*x ; y=y+ai*t; return y;2 調(diào)用函數(shù)f,從字符串中刪除所有的數(shù)字字符。#include

27、 <stdio.h>#include <string.h>#include <ctype.h>void f(char *s) int i=0; while(si!='0') if(isdigit(si) strcpy(s+i,s+i+1); else i+;void main() char str80; gets(str); f(str); puts(str);3 數(shù)組 x 中原有數(shù)據(jù)為:1、-2、3、4、-5、6、-7,調(diào)用函數(shù) f 后數(shù)組 x 中數(shù)據(jù)為:1、3、4、6、0、0、0,輸出結(jié)果為:1 3 4 6 #include <st

28、dio.h>void f(int *a,int *m) int i,j; for(i=0;i<*m; ) if(ai<0) for(j=i;j<*m-1;j+) aj=aj+1; a*m-1=0; (*m)-;else i+;void main() int i,n=7,x7=1,-2,3,4,-5,6,-7; f(x,&n); for(i=0;i<n;i+) printf("%5d",xi); printf("n");4 調(diào)用函數(shù)f,將1個整數(shù)首尾倒置。#include <stdio.h>#include

29、 <math.h>long f(long n) long m=fabs(n),y=0; while(m!=0) y=y*10+m%10; m=m/10; return n<0? -y:y;void main() printf("%ldt",f(12345);printf("%ldn",f(-34567);5 輸入 m 、n(要求輸入的數(shù)均大于0),輸出它們的最大公約數(shù)。 #include <stdio.h>void main() int m,n,k; while(1) scanf("%d%d",&

30、m,&n); if(m>0 && n>0) break; k=m; while( m%k!=0 | n%k!=0) k-; printf("%dn",k);6 循環(huán)輸入若干個整數(shù)(以輸入Ctrl+z 結(jié)束循環(huán)),輸出每個數(shù)的位數(shù)。例如: #include <stdio.h>void main() int n,m,k; while(scanf("%d",&n)!=-1) m=n;k=0; while(m!=0) k+; m=m/10; printf("%d是%d位整數(shù)n",n,k)

31、; 7 對 x=0.0,0.5,1.0,1.5,2.0,., 10.0,求f(x)= x2 - 5.5x +sin(x) 的最大值。 #include <stdio.h>#include <math.h>#define f(x) x*x-5.5*x+sin(x)void main() float x,max; max=f(0.0); for(x=0.5;x<=10;x=x+0.5) if(f(x)>max)max=f(x); printf("%fn",max);8 循環(huán)輸入正整數(shù) n (直到輸入負數(shù)或者0結(jié)束),計算并顯示滿足條件 2m

32、n 2m+1 的 m 值。 #include <stdio.h>#define F (t<=n && t*2>=n)void main() int m,t,n; while(scanf("%d",&n),n>0) m=0;t=1; while(!F) t=t*2; m+; printf("%d %dn",n,m); 9 數(shù)列的第1、2項均為1,此后各項的值均為該項的前兩項的和。要求:計算數(shù)列的第 24 項的值。 #include <stdio.h> long f(int); void ma

33、in() printf("%ldn",f(24); long f(int n) if( n=1 | n=2) return 1; else return f(n-1)+f(n-2);10 顯示數(shù)據(jù),要求: (1)在數(shù)組a中存在,而在數(shù)組b中不存在的數(shù),以及 (2)在數(shù)組b中存在,而在數(shù)組a中不存在的數(shù)。#include <stdio.h>void main() int a6=2,5,7,8,4,12,b7=3,4,5,6,7,8,9,i,j,k; for(i=0;i<6;i+) for(j=0;j<7;j+) if(ai=bj) break; if(

34、j=7) printf("%d ",ai); putchar('n'); for(i=0;i<7;i+) for(j=0;j<6;j+) if(bi=aj) break; if(j=6) printf("%d ",bi); putchar('n');11 輸入三個整數(shù),按照由小到大的順序輸出這三個數(shù)。 #include <stdio.h>void swap(int *pa,int *pb) /*交換兩個數(shù)的位置*/ int temp; temp=*pa;*pa=*pb;*pb=temp;void m

35、ain() int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(a>b) swap(&a,&b); printf("%d,%d,%dn",a,b,c);12 輸入一個不超過80個字符的字符串,將其中的大寫字符轉(zhuǎn)換為小寫字符;小寫字符轉(zhuǎn)換為大寫字符;空格符轉(zhuǎn)換為下劃線。輸出轉(zhuǎn)換后的字符串。#include <stdio.h>#inclu

36、de <ctype.h>void main() char s81; int i; gets(s); for(i=0;si!= '0'i+) if(isupper(si) si=si+32; else if(islower(si) si=si-32; if(si= ' ') si='_' puts(s);13 輸入4個整數(shù),通過函數(shù) Dec2Bin 的處理,返回字符串,顯示每個整數(shù)的機內(nèi)碼(二進制,補碼)。#include <stdio.h>void Dec2Bin(long m,char *s) int i,k; for(

37、i=0;i<32;i+) k=m & 0x80000000; if(k!=0) si='1' else si= '0' m=m*2; /* m 左移1位 */ void main() char a33="" long n; int i; for(i=1;i<=4;i+) scanf("%ld",&n); Dec2Bin(n,a); puts(a); 14 輸入10個數(shù)到數(shù)組 a 中,計算并顯示所有元素的平均值,以及其中與平均值相差最小的數(shù)組元素值。#include <stdio.h>

38、#include <math.h> void main() double a10,v=0,x,d; int i; printf("Input 10 numbers: "); for(i=0;i<10;i+) scanf("%lf", &ai);v=v+ai/10; d= fabs(a0-v); x=a0; for(i=1;i<10;i+)if(fabs(ai-v)<d) d=fabs(ai-v),x=ai; printf("%.4f %.4fn",v,x);15 將輸入字符串 s 中所有的小寫字符

39、 c 刪除 。 #include <stdio.h> #include <string.h> void main() char s81;int i; gets(s); for(i=0;i<strlen(s);) if(si='c') strcpy(s+i,s+i+1); else i+; puts(s); C 程序改錯題參考答案1 輸入x和正數(shù)eps,計算多項式 的和,直到末項的絕對值小于eps為止。 #include <stdio.h>#include <math.h>void main() double x,eps,s=

40、1,t=1; /* 1 */ float i=0; /* 2 */ scanf("%lf%lf",&x,&eps); do i+;/* 3 */ t=-t*x/i; s+=t; /* 4 */ while(fabs(t)>=eps); printf("%fn",s);2 程序運行時,若輸入a,n分別為3,6,則輸出下列表達式的值: 3+33+333+3333+33333+333333#include <stdio.h>void main() int a,n,i; long s=0,t; /* 1 */ scanf(&qu

41、ot;%d%d",&a,&n); /* 2 */ t=0; /* 3 */ for(i=1;i<=n;i+) t=t*10+a; /* 4 */s=t+s; printf("%ldn",s);3 程序運行時輸入n,輸出n的所有質(zhì)數(shù)因子。 例如:輸入n為60,則輸出 60=2*2*3*5#include <stdio.h>void main() int n,i; /* 1 */ scanf("%d",&n);printf("%d=",n); /* 2 */ i=2;/* 3 */ wh

42、ile(n>1) if(n%i=0) printf("%d*",i); /* 4 */ n=n/i; else i+;printf("b n");4 程序運行時輸入整數(shù)n,則輸出n的各位數(shù)字之和。 例如:輸入n=1308,則輸出12;n=-3204,則輸出9#include <stdio.h>void main() /* 1 */ int n,s=0; scanf("%d",&n); /* 2 */ n=n<0?-n:n; /* 3 */ while(n>0) /* 4 */ s=s+n%10;

43、n=n/10; printf("%dn",s);5 程序運行時,輸入10個數(shù),分別輸出其中的最大值和最小值。#include <stdio.h>void main() float x,max,min; int i; /* 1 */ for(i=1;i<=10;i+) /* 2 */ scanf("%f",&x); /* 3 */ if(i=1) max=x;min=x; else if(x>max) max=x; if(x<min) min=x; /* 4 */ printf("%f,%fn",m

44、ax,min);6 輸入n,再輸入n個點的平面坐標,則輸出那些距離坐標原點不超過5的點的坐標值。#include <stdio.h>#include <math.h>#include <stdlib.h>void main() int i,n; struct axy float x,y; /* 1 */ struct axy *a; /* 2 */ scanf("%d",&n); a=(struct axy*) malloc(n*sizeof(struct axy); for(i=0;i<n;i+) scanf("

45、%f%f",&ai.x,&ai.y); /* 3 */ for(i=0;i<n;i+) if(sqrt(pow(ai.x,2)+pow(ai.y,2)<=5) printf("%f,",ai.x); /* 4 */ printf("%fn",(a+i)->y); 7 循環(huán)輸入x,n,調(diào)用遞歸函數(shù)計算,顯示x的n次方。當輸入n小于0時,結(jié)束循環(huán)。#include <stdio.h>float f(float x,int n) /* 1 */ if(n=0) return 1; else/* 2 */r

46、eturn x*f(x,n-1);void main() float y,z; int m; while(1) scanf("%f%d",&y,&m); /* 3 */ if(m<0) break; /* 4 */ z=f(y,m); printf("%fn",z); 8 輸入兩個字符串s1,s2后,將它們首尾先連。#include <stdio.h>void main() char s180,s240; int j; /* 1 */ int i=0; printf("Input the first strin

47、g:"); gets(s1); printf("Input the second string:"); gets(s2); /* 2*/ while(s1i!= '0') i+; for(j=0;s2j!='0'j+) /* 3 */ s1i+j=s2j; /* 4 */ s1i+j= '0' puts(s1);9 用“選擇法”對10個整數(shù)按升序排序。#include <stdio.h> #define N 10 void main() int i,j,min,temp; int aN=5,4,3,2,1

48、,9,8,7,6,0; printf("排序前:"); /* 1 */ for(i=0;i<N;i+) printf("%4d",ai); putchar('n'); for(i=0;i<N-1;i+) /* 2 */ min=i; for(j=i+1;j<N;j+) /* 3 */ if(aj<amin) min=j; temp=amin;amin=ai;ai=temp; printf("排序后:"); for(i=0;i<N;i+)printf("%4d",ai);

49、 /* 4 */ putchar('n');10 將十進制的整數(shù),以十六進制的形式輸出。#include <stdio.h> /* 1 */ void DtoH(int n) int k=n & 0xf; if(n>>4!=0) DtoH(n>>4); /* 2 */ if(k<10) putchar(k+'0'); else /* 3 */ putchar(k-10+'a'); void main() int a4=28,31,255,378,i; for(i=0;i<4;i+) prin

50、tf("%d->",ai); /* 4 */ DtoH(ai); putchar('n'); 11 輸入一個字符串,將其中所有的非英文字母的字符刪除后輸出。#include <stdio.h> #include <string.h>#include<ctype.h> void main() char str81; int i,flag; /* 1 */ gets(str); for(i=0;stri!='0') flag=tolower(stri)>='a' &&

51、 tolower(stri)<='z' /* 2 */ flag=!flag; if(flag) /* 3 */ strcpy(str+i,str+i+1); /* 4 */ i-; i+; printf("%sn",str);12 顯示兩個數(shù)組中,數(shù)值相同的元素。#include <stdio.h> void main() /* 1 */ int i,j; int a6=1,3,5,7,9,11; int b7=2,5,7,9,12,16,3; /* 2 */ for(i=0;i<6;i+) for(j=0;j<7;j+) /* 3 */ if(ai=bj) break;/* 4 */if(j<7) printf("%d ",ai); printf("n");13 逐個顯示字符串中各字符的機內(nèi)碼。提示:英文字符字母的機內(nèi)碼首位為0,漢子的每個字節(jié)首位為1.程序正確運行后,顯示如下:#include <stdio.h> void main() /* 1 */ char a7= "a2漢字" int i,j,k; /*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論