c语言程序设计试习题2_第1页
c语言程序设计试习题2_第2页
c语言程序设计试习题2_第3页
c语言程序设计试习题2_第4页
c语言程序设计试习题2_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言试卷-2一、选择题 ( 评分标准 20 分,每小题2分)1. 执行语句“a=b=3; printf(“%d,%dn”, a<<2, b>>2);”后的输出结果为_。(A)12,0 (B)12,3 (C)false,true (D)true,false2. 若a是32位int整型变量,判断其最低2个二进位均为1的表达式为_。(A)a&3=3 (B)a&3=11 (C)a&11=3 (D)a&11=113. 以“只读”方式打开文本文件c:xy.text,下列语句中哪一个是正确的_。(A)fp=fopen(“c:xy.txt”, “a”)

2、; (B)fp=fopen(“c:xy.txt”, “r”); (C)fp=fopen(“c:xy.txt”, “wb”); (D)fp=fopen(“c:xy.txt”, “r”);4. 为表示“a和b都不等于0”,应使用的C语言表达式是_。(A)(a!=0) (b!=0) (B)ab (C)!(a=0)&&(b!=0) (D)a&&b5. 若x是单精度实型变量,k是基本整型变量,以下正确的输入语句是_。(A) scanf(“%f%d”, &x,&k); (B)scanf(“%f%d”, x,k); (C)scanf(“%d%f”, &

3、x,&k) (D)scanf(“%d%f”, x,k);6. 下列运算中优先级最低的是_。(A)* (B)<< (C)= (D)->7. 已知字符c的ASC II为99,语句printf(“%d,%c”, c, c+1);输出为_。(A)99,c (B)99, 100 (C)99,d (D)语句不合法8. 不正确的赋值或赋初值的方式是_。(A)char str6=s,t,r, i,n,g; (B)char str10=”string” (C)char *str=”string”; (D)char str10; str=”string”;"9. C 语言程序中

4、可以对程序进行注释,注释部分必须用符号_括起来。 (A) 和 (B)和 (C)“/*”和”*/” (D)“*/”和”/*”10. _是合法的用户自定义标识符。(A)b-b (B)float (C)<fr> (D)_isw套数号答案21.A 2.A 3.B 4.D 5.A 6.C 7.C 8.D 9.C 10.D二、判断题 ( 评分标准 20 分,每小题2分)1. 表达式(3.6%2)符合C语言语法。2. 在C程序中,用整数0表示逻辑值“假”。3. 08是正确的整型常量。4. 设变量定义为char s=“hello”,则数组s中有6个元素。5. 若x是单精度实型变量,表达式(x=10

5、/4)的值是2.5。6. 若变量已正确定义,表达式x=y=1符合C语言语法。7. 表达式!(x>0y>0)等价于!(x>0&&!(y>0)。8. 表达式( 0x19<<1)&0x7的值是3。9. 在C源程序中将语句“if(x=5) y+;”误写成“if(x=5) y+;”,将导致编译错误。10. C的double类型数据可以精确表示任何实数。套数号答案41. F 2. T 3. F 4. T 5. F 6. T 7. T 8. F 9. F 10. F三、填空题 ( 评分标准 10 分,每小题2分)1. 存储A要占用_个字节(用数字表

6、示)。2. 设a=3.b=2.c=1.则a>b>c的值为_。(用0或1表示)3. 在C语言中,头文件的后缀名是_。4. 表达式 !5的值是_。5. 若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为_。参考答案:第4套(1)(2)0(3)h(4)(5)1四、程序改错题 ( 评分标准 20 分,每小题 5分 )1. 该程序功能:输入m、n(要求输入数均大于0),输出它们的最小公倍数。#include <stdio.h>void main() int m,n,k; while(scanf("%d%d",&m,&am

7、p;n),m<0&&n<0); for(k=m;k%n=0;) /*$1*/k=k+m; printf("%dn",k);说明:该程序中“/*$1*/”行中的语句k%n=0; 有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:8 6 结果:24运行样例:6 8 结果:24参考答案:k%n!=02. 该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+.的和直到末项的绝对值小于eps为止。/*一重循环*/#include <stdio.h>#include <math.h>void ma

8、in() float x,eps,s=1,t=1,i=1; scanf("%f%f",&x,&eps); do t=-t*x/i; /*$1*/ s+=t; while(fabs(t)>=eps); printf("%fn",s);说明:该程序中“/*$1*/”行中的语句t=-t*x/i; 有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:1 0.0001 结果:0.367882参考答案:t=-t*x/i+;3. 该程序功能:输入1个字符串,输出其中所出现过的大写英文字母。/*循环,分支,库函数*/#include &l

9、t;stdio.h>void main() char x80,y26; int i,j,ny=0; gets(x); for(i=0;xi!='0'i+) if(xi>='A'&&xi<='Z') for(j=0;j<ny;j+) if(yi=xj) break; /*$1*/ if(j=ny) yny=xi; ny+; for(i=0;i<ny;i+) printf("%c ",yi);printf("n");说明:该程序中“/*$1*/”行中的语句break

10、; 有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:FONTNAME and FILENAME 结果:F O N T N A M E F I L E N A M E参考答案:continue4. 该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。#include <stdio.h>#include <string.h>#include <stdlib.h>void main()int n;unsigned int i;char *str; scanf("%dn",&

11、n); str=(char*)malloc(n); gets(str); for(i=0; i<strlen(str); i+) if(stri<='a'&& stri>='z') /*$1*/stri=stri-32 ; puts(str);说明:该程序中“/*$1*/”行中的语句if(stri<='a'&& stri>='z') 有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:5 Apple 结果:APPLE 参考答案:if(stri>='

12、;a'&& stri<='z')五、程序填空( 评分标准 10 分,每小题5分)1. 以下程序对test.txt进行读操作,并将读出的文本输出到屏幕上。设test.txt文件中存有“hello,welcome to the world of C!”字样。#include <stdio.h>#include <stdlib.h>main()FILE *fp;char ch;/*$*/if (fp = NULL) printf("can not open testn"); exit(0);ch = fgetc

13、(fp);while(ch != EOF)putchar(ch);ch = fgetc(fp);fclose(fp);说明:该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。运行结果1:hello,welcome to the world of C!参考答案: fp = fopen("test.txt", "r");2. 输入6个整数 12 33 43 6 3 22 ,输出为:3 6 12 22 33 43 。/* 形参和实参的传递 */#include <stdio.h>void so

14、rt(int *a,int n ) int i, k, m, t;for(i=0; i<n-1;i+) k=i;for(m=i+1; m<n;m+)if (/*$1*/) k=m;t=ak; ak=ai; ai=t ; void main( ) int k, a6;for(k=0; k<6; k+)scanf("%d", &ak);sort(a, 6) ; for(k=0; k<6;k+)printf("%d ", ak);说明:该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加

15、句、减句)。运行样例1:12 33 43 6 3 22 结果:3 6 12 22 33 43参考答案:ak>am六、程序设计 ( 评分标准 20 分,每小题10分)1. 设计程序:输入一个正整数n,求1+1/2!+1/3!+.+1/n!的值,要求定义并调出函数fact(n)计算与n的阶乘有关的计算式,函数返回值的类型是单精度浮点型,保留小数2位。/*二重循环,求自然对数e的和函数*/参考答案:#include <stdio.h>#include <stdlib.h>float fact(int n);void main() int n;float sum;whil

16、e(scanf("%d",&n),n<0); /*排除n为负数的可能性*/if(n=0)sum=1; /*因为0!=1,但是函数调用进不去循环体,所以预先赋值*/elsesum=fact(n);printf("%2.2f",sum);float fact(int n)int i,j;float sum=0,temp;for(i=1;i<=n;i+) temp=1;for(j=1;j<=i;j+)temp*=1/(float)(j);sum+=temp; return sum;运行样例1:3 结果:1.672. 设计程序:编写函数strcmpA(char * s1, char * s2),返回较长的字符串的长度减去较短的字符串的长度,相等返回0。参考答案: /*字符串操作*/#include <stdio.h>#include <stdlib.h>#include <math.h>#include<string.h> /*支撑strlen(*str)的函数,一定要加上*/int strcmpA(char * s1, char * s2);void main() char str1100,str2100; int result

温馨提示

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

评论

0/150

提交评论