(电大复习)0993 C评议程序设计A20130708 (1)_第1页
(电大复习)0993 C评议程序设计A20130708 (1)_第2页
(电大复习)0993 C评议程序设计A20130708 (1)_第3页
(电大复习)0993 C评议程序设计A20130708 (1)_第4页
(电大复习)0993 C评议程序设计A20130708 (1)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0993+C 评议程序设计 A 第 1 页 共 35 页 0993+C 评议程序设计 A 考试时长: 60 分钟 单选题 10 题 30 分,填空题 10 题 30 分, 写出程序结果 4 题 40 分 C 语言程序设计课程期末复习练习 一、单选题 1在每个 C 语言程序中都必须包含有这样一个函数,该函数的函数名为 ( )。A. main 2每个 C 语言程序文件的编译错误分为( )类。 B. 2 3. 字符串 a+b=12n的长度为( )。 B. 7 4. 在 switch语句的每个 case块中,假定 都是以 break语句结束的,则此 switch语句容易被改写为( )语句。 B. if 5. 在下面的 do-while 循环语句中,其循环体语句被执行的次数为( )。 int i=0; do i+; while(i0 & x10 23. 当处理特定问题时的循环次数已知时,通常采用( )循环来解决。 A. for 24. 假定 i 的初值为 0,则在循环语句“ while(ib | b=5 的相反表达式为 a5)的相反表达式为 (x! =0 | y5 的相反表达式为 _ x+yname 等价的访问表达式为 _(*p).name _。 三、写出下列每个程序运行后的输出结果 1. #includevoid main()int x=5;switch(2*x-1) case 4: printf(%d ,x); break;case 7: printf(%d ,2*x); break;case 10: printf(%d ,3*x); break;default: printf(%s ,default);printf(%sn,switch end.); default switch end. 2. #includevoid main() int f1,f2,i;f1=1;printf(%d ,f1); for(i=2;ivoid main() int a10=12,39,26,41,55,63,72,40,83,95; int i, i1=0, i2=0;for(i=0;i#includevoid main( ) char s15=567891234;int i, n=strlen(s) ;for(i=0; iint LB(int *a, int n) int i,s=1;for(i=0;ivoid main() int i,s=0; for(i=1;i#define N 6void main() int i,aN=2,5,8,10,15,21;for(i=0; i#includevoid main() int i;unsigned int len; 0993+C 评议程序设计 A 第 3 页 共 35 页 char* a5=student,worker,cadre,soldier,zzeasan123; len=strlen(a0);for(i=1; ilen) len=strlen(ai); printf(%dn,len); 10 9. #includevoid main()int a,b;for(a=2,b=3; bvoid LE(int* a, int* b) int x=*a;*a=*b; *b=x;void main() int x=15, y=26;printf(%d %dn,x,y); LE(&x,&y); printf(%d %dn,x,y); 15 26 26 15 11. #includevoid main() int i, s=0;for(i=1;i+) if(s30) break;if(i%2=0) s+=i;printf(s=%dn,s); s=42 12. #includevoid main() int a9=36,25,48,24,55,40,18,66,20; int i, b1, b2;b1=b2=a0;for(i=1; ib1) b1=ai; if(aivoid SB(char ch) switch(ch) case A: case a:printf(WW ); break; case B: case b:printf(GG ); break;default:printf(BB ); break; void main() char a1=a,a2=B,a3=f;SB(a1);SB(a2);SB(a3); printf(n); WW GG BB 14. #include#define M 6void main()int i,x; int aM=10,15,22,37,46,58; for(i=0; istruct Worker char name15; int age; float pay;void main() struct Worker x=wanghua,52,2350;struct Worker y, *p; y=x; p=&x;printf(%d %7.2fn, y.age+p-age, p-pay+20); 104 2370.00 16. #includevoid main() int i,j,k=0;for(i=0; ivoid main() int x=60; int i=2, p=1;while(1) if(x%i=0) p*=i; x/=i;if(ivoid main() int a8=76,63,54,62,40,75,90,58; int i;for(i=0; i70) printf(%d ,ai);printf(n); 76 75 90 19. #includevoid WF(int x, int y) x=x+y;y+=x; printf(%d %dn,x,y);void main() int x=3, y=8; WF(x,y); 11 19 20. #includeint LA(int *a, int n) int i,s=0; for(i=0;i int SG(int x) /x 为大于等于 2 的整数 int a=(int)sqrt(x); /sqrt(x)取 x 的平方根 int i=2; while(idata; f=f-next; while(f) 0993+C 评议程序设计 A 第 4 页 共 35 页 if(f-datax) x=f-data; f=f-next; return x; 假定 struct IntNode 的类型定义为: struct IntNode int data; struct IntNode* next; 3. #include int SA(int a, int b) if(ab) return 1; else if(a=b) return 0; else return -1; 4. void Output(struct IntNode *f) /f 为单链表的表头指针 if(!f) return; while(f) printf(%d ,f-data); f=f-next; printf(n); 假定 struct IntNode 的类型定义为: struct IntNode int data; struct IntNode* next; 5. int SC(int a, int b, int c) if(a=b & a=c) return a; if(b=a & b=c) return b; return c; 6. int* LI(int n) int* a=malloc(n*sizeof(int); int i; for(i=0;i=k) c+; return c; 8. void QA(struct Worker a, int n) int i; for(i=0; ib 则返回 1,若 a=b 则返回 0,若 ab 则返回 -1。 4. 遍历并输出由 f 所指向的单链表中每个结点的值。 5. 求出 a,b,c 三个数中的最大值并返回。 6. 首先建立一个动态整型数组 an,接着从键盘上输入 n 个整数到 an中,最后返回数组 an的首地址。 7. 统计并返回一维整型数组 an中大于等于 k 的值的个数。 8. 从键盘上为具有 struct Worker 类型的数组 an输入 n 个记录。 五、按题目要求编写程序或函数 1. 编写一个程序,输出 50 以内(含 50)的、能够被 3 或者 5 整除的所有整数。 2. 编写一个递归函数“ int FF(int a, int n)” ,求出数组 a 中所有 n 个元素之积并返回。 3. 编写一个程序,利用 while 循环,计算并打印输出n1.31211 的值,其中正整数 n 值由键盘输入。假定求和变量用 sum 表示,计数变量用 i 表示, sum、 i和 n 均定义为全局变量, sum 和 i 的初值分别被赋予 0 和 1。 0993+C 评议程序设计 A 第 5 页 共 35 页 4. 根据函数原型“ void DD(int a, int n, int MM)”编写函数定义,利用双重循环查找并打印输出数组 an中任何两个元素的值等于 MM 值的元素值。假定ai+aj等于 MM,则 输出格式为: (ai,aj)。 5. 编写一个程序,计算 1+3+32+.+310的值并输出,假定分别用 i,p,s 作为循环变量、累乘变量和累加变量的标识符。 6. 根据函数原型“ int FF(int a, int n)”,编写函数定义,计算并返回数组 an中所有元素之和。 7. 根据 函数原型“ double Mean(double aMN,int m,int n)”, 编写函数定义, 要求返回二维数组 amn中所有元素的平均值。假定在计算过程中采用变量 v存 放累加值和最后的平均值。 8. 根据 函数原型“ int MM(int a,int m)”, 编写函数定义,计算并返回数组am中元素最大值和最小值之差。 参考解答: 1. #include void main() int i; for(i=3; i int n,i=1; double sum=0; void main() scanf(%d,&n); while(i void main() int i; int p=1; int s=1; for(i=1;i=10;i+) p*=3; s+=p; printf(%dn,s); 6. int FF(int a, int n) int i,sum=0; for(i=0; in; i+) sum+=ai; return sum; 7. double Mean(double aMN,int m,int n) int i,j; double v=0.0; for(i=0; im; i+) for(j=0; jn; j+) v+=aij; v/=m*n; return v; 0993+C 评议程序设计 A 第 6 页 共 35 页 注:函数体的最后两行可以合并为一条返回语句: return v/=m*n 8. int MM(int a,int m) int i,x1,x2; x1=x2=a0; for(i=1; ix1) x1=ai; if(ai0 & x10 B x10 C x0 & x10 9字符串 “a+b=12 n” 的长度为( B)。 A 6 B 7 C 8 D 9 10在下列符号常量定义中。错误的定义语句格式为( C)。 A const M1=10; B const int M2=20; C const M3 10 D const char mark=3; 11带有随机函数的表达式 rand()%20的值在( C)区间内, A 119 B 120 C 019 D 020 12当处理特定问题时的循环次数已知时,通常采用( A)循环来解决。 A for B while C do-while D switch 13在 switch 语句的每个 case 块中,假定都是以 break 语句结束的,则此 switch语句容易被改写 为( B)语句。 A for B if C do D while 14 for 语句能够被改写为( D)语句。 A复合 B if C switch D while 15下面循环语句执行结束后输出的 i 值为( B)。 for(int i=0;in/2)coutiendl;break; A n/2 B n/2+1 C n/2-1 D n-1 16在下面循环 w 语句中内层循环体 S 语句的执行次数为( D)。 for(int i=0;in;i+) for(int j=i;jn;j+)S; A n2 B (n+1)/2 C n(n-1)/2 D n(n+1)/2 17在下面的 do 循环语句中,其循环体被执行的次数为( A )。 int i=0;do i+;while(i*i5的相反表达式为_x+yb | b=5的相反表达式为_a5 | by 逻辑值为 _false_。 35若 x=5,y=10,则 xb)_ 0993+C 评议程序设计 A 第 10 页 共 35 页 7与结构成员访问表达式 (*fp).score 等价的表达式是 _fp-score_。 三、写出下列每个程序运行后的输出结果 1. #include void main() int x=5;switch(2*x-3) case 4:printf(%d ,x); case 7:printf(%d ,2*x+1); case 10:printf(%d ,3*x-1);break; default:printf(%s ,defaultn); printf(%sn,switch end.); 输出结果为: 11 14 switch end. Press any key to continue 2. #include void main() int i,s=0; for(i=1;i void main() int i,s1=0,s2=0; for(i=0;i void main() int n=10,y=1; while(n-)y+;y+; printf(y=%dn,y); 输出结 果为: y=21. Press any key to continue 5. #include void main() int f,f1,f2,i; f1=f2=1; printf(%d %d ,f1,f2); for(i=3;i #include void main() 0993+C 评议程序设计 A 第 11 页 共 35 页 int i,n; for(n=2;ntemp)printf(%d ,n); printf(n); 输出结果为: 2 3 5 7 11 13 17 19 Press any key to continue 7. #include #include const int M=20; void main() int i,c2,c3,c5; c2=c3=c5=0; for(i=1;i #include const int M=20; void main() int i,s; for(i=1,s=0;i void main() int a10=12,39,26,41,55,63,72,40,83,95; int i,i1=0,i2=0; for(i=0;i #include void main() int i; char *a5=student,worker,cadre,soldier,peasant; char *p1,*p2; p1=p2=a0; for(i=0;i0)p1=ai; if(strcmp(ai,p2)0)p2=ai; printf(%s %sn,p1,p2); 输出结果为: worker cadre Press any key to continue 0993+C 评议程序设计 A 第 12 页 共 35 页 3. #include int a10=4,5,6,15,20,13,12,7,8,9; void main() int i,s0,s1,s2; s0=s1=s2=0; for(i=0;i void main() char a=abcdbfbgacd; int i1=0,i2=0,i=0; while(ai) if(ai=a)i1+; if(ai=b)i2+; i+; printf(%d %d %dn,i1,i2,i); 输出结果为: 2 3 11 Press any key to continue 5. #include void main() int a34=1,2,7,8,5,6,10,6,9,12,3,4; int m=a00; int ii=0,jj=0; int i,j; for(i=0;im)m=aij;ii=i;jj=j; printf(%d %d %dn,ii,jj,aiijj); 输出结果为: 2 1 12 Press any key to continue 6. #include void main() int a,b; for(a=1,b=2;b void SB(char ch) switch (ch) case A:case a: printf(WW);break; case B:case b: printf(GG);break; case C:case c: printf(PP);break; 0993+C 评议程序设计 A 第 13 页 共 35 页 default:printf(BB);break; void main() char a1=b,a2=C,a3=f; SB(a1);SB(a2); SB(a3);SB(A); printf(n); 输出结果为 : GGPPBBWW Press any key to continue 2. #include #include double SD(int a,int b,char op) double x; switch(op) case +:x=a+b;break; case -:x=a-b;break; case *:x=a*b;break; case /:if(b)x=(double)a/b; else exit(1); break; default:(运算符错! n);exit(1); return x; void main() int x=20,y=8; printf(%3.2lf ,SD(x,y,-); printf(%3.2lf ,SD(x,y,*); printf(%3.2lf ,SD(x,y,/); 输出结果为: 12.00 160.00 2.50 Press any key to continue 3. #include void WF(int x,int y) x=x+y; y=x+y; printf(subs:x,y=%d,%dn,x,y); void main() int x=18,y=23; printf(main:x,y=%d,%dn,x,y); WF(x,y); x=2*x; printf(main:x,y=%d,%dn,x,y); 输出结果为: main:x,y=18,23 subs:x,y=41,64 main:x,y=36,23 Press any key to continue 4. #include #include void fun(char ss); void main() char s15=567891234; fun(s); printf(%sn,s); void fun(char ss) int i,n=strlen(ss); for(i=0;iaj)aj+1=aj; else break; aj+1=x; void main() int i; int a6=20,15,32,47,36,28; InsertSort(a,6); for(i=0;i void main() int a8=3,5,7,9,11,13,15,17; int i,*p=a; for(i=0;i int LA(int *a,int n) int i,s=0; for(i=0;i int LB(int *a,int n) int i,s=1; for(i=0;i struct Worker char name15; /姓名 0993+C 评议程序设计 A 第 15 页 共 35 页 int age; /年龄 float pay; /工资 ; void main() struct Worker x=wanghua,52,23.50; struct Worker y,*p; y=x;p=&x; printf(%s %d %6.2fn,,y.age,y.pay); printf(%s %d %6.2fn,p-name,p-age,p-pay); 输出结果为: wanghua 52 23.50 wanghua 52 23.50 Press any key to continue 2. #include #include struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; void main() struct Worker x; char *t=louting; int d=38;float f=493; strcpy(,t); x.age=d;x.pay=f; x.age+;x.pay*=2; printf(%s %d %6.2fn,,x.age,x.pay); 输出结果为: louting 39 986.00 Press any key to continue 3. #include #include struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; int Less(struct Worker r1,struct Worker r2) if(r1.age int SA(int a,int b) if(ab)return 1; else if(a=b)return 0; else return -1; 函数功能为: 根据实参 a 大于、等于或小于实参 b,返回 1,0或 -1 2. #include int SC(int a,int b,int c) if(a=b & a=c)return a; if(b=a & b=c)return b; return c; 函数功能为: 返回实参 a、 b、 c 中的最大数 3.double SF(double x,int n) /n 为大于等于 0的整数 double p=1,s=1; for(i=1;i=n;i+) p*=x; s+=p/(i+1); return s; 0993+C 评议程序设计 A 第 16 页 共 35 页 函数功能为: 计算 x+x2/2+x3/3+xn/(n+1) 的值 4. #include int SC(int x) int a=(int)sqrt(x); int i=2; while(i void trans(int x) char a10; int i=0,rem; do rem=x%16; x=x/16; if(rem0)printf(%c,a-i); printf(n); 函数功能为: 将一个整数化成十六进制数 1. #include int WB(int a,int n,int x) for(int i=0;i int WC(int a,int n,int k) int c=0;for(int i=0;i=k)c+; return c; 函数功能为: 返回数组中前 n 个其值大于等于 k 的元素之和 3. #include #include #include const int N=10; int ff(int x,int y) int z; printf(%d + %d = ,x,y); scanf(%d,&z); if(x+y=z)return 1;else return 0; void main() int i,a,b,c=0; srand(time(0); /初始化随机数系列 for(i=0;i=0 & *a const int M=2,N=3; double Mean(double aMN, int m,int n )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论