2010福建省C语言模拟题十套(附带答案)

更新时间:2023-11-29 19:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一部分:选择题(40分,20小题/套)

概述

1、下面关于C语言的叙述中,正确的是()

A. 每行只能写一条语句 B. 程序中必须包含有输入语句 C. main函数必须位于文件的开头 D. 每条语句最后必须有一个分号 2、下面关于C语言的叙述中,错误的是(B) A. 若一条语句较长,也可分写在下一行上 B. 构成C语言源程序的基本单位是表达式 C. C语言源程序中大、小写字母是有区别的 D. 一个C语言源程序可由一个或多个函数组成 3、关于C语言数据类型的叙述,正确的是()

A. 枚举类型不是基本类型 B. 数组不是构造类型 C. 变量必须先定义后使用 D. 不允许使用空类型 4、C程序中main函数的位置()

A. 必须在最开始 B. 必须在系统库函数后面 C. 可以在自定义函数后面 D. 必须在最后 5、C语言的函数体由()括起来 A. ( ) B. { } C. [ ] D. /* */

6、关于C语言的叙述中,不正确的是()

A. C程序可由一个或多个函数组成 B. C程序必须包含一个main()函数 C. C程序的基本组成单位是函数 D. 注释说明只能位于一条语句的后面 7、一个程序的执行是从()

A. 本程序的第一个函数开始,到最后一个函数结束 B. 本程序的main函数开始,到main函数结束 C. 本程序的main函数开始,到最后一个函数结束 D. 本程序的第一个函数开始,到main函数结束 8、结构化程序设计的三种基本结构是(C)

A. 函数结构、分支结构、判断结构 B. 函数结构、嵌套结构、平行结构 C. 顺序结构、分支结构、循环结构 D. 分支结构、循环结构、嵌套结构 9、调试程序是指对程序进行(C)

A. 编辑 B. 编译 C. 查错和排错 D. 连接

10、C语言中,复合语句的构成是将一系列语句置于(C) A. begin与end之间 B. 一对圆括号“( )”之间 C. 一对花括号“{ }”之间 D. 一对方括号“[ ]”之间 11、构成C语言源程序的基本单位是(D) A. 语句 B. 过程 C. 表达式 D. 函数

语法基础

12、在C语言中,正确的用户标识符是() A. 3f B. _for C. struct D. _f.5

1

13、C语言的基本数据类型包括()

A. 整型、实型、字符型 B. 整型、实型、字符型、逻辑型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型 14、以下()是正确的常量

A. E-5 B. 1E5.1 C. ?a12? D. 32766L 15、以下()是正确的变量名

A. a.bee B. –p11 C. int D. p_11 16、以下()是正确的字符常量

A. “c” B. ?//” C. ?W? D. “\\32a” 17、以下()是不正确的字符串常量

A. ?abc? B. “12?12” C. “0” D. “ “ 18、C语言的整型数据在内存中的存储形式是(C) A. 原码 B. 反码 C. 补码 D. ASCII码

19、以下(B)是正确的浮点数( e后面的数必须为整数 e前面必须要有数字 A. e3 B. .62 C. 2e4.5 D. 123 20、下列不属于C语言关键字的是()

A. continue B. integer C. static D. signed 21、C语言的字符型数据在内存中的存储形式是(D) A. 原码 B. 补码 C. 反码 D. ASCII 22、在C语言中,变量所分配的内存空间大小是() A. 由变量的类型决定 B. 由用户自己决定 C. 任意的 D. 均为两个字节

23、若有定义:int a=2;则正确的赋值表达式是()

A. a-=(a*3) B. double(-1) C. a*3 D. a*4=3 24、语句x=(a=3,b=++a);运行后,x、a、b的值依次为() A. 3,3,4 B. 4,4,3 C. 4,4,4 D. 3,4,3 25、语句a=(3/4)+3%2;运行后,a的值为() A. 0 B. 1 C. 2 D. 3

26、以下四项中,符合C语言语法的语句是( C)注意分号 A. int a+b=c; B. int a=12:b=12:c=12; C. int a=12,b=12,c=12; D. int a,b=12,float c=21

27、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为() A. 3,3 B. 4,4 C. 4,3 D. 3,4

28、若变量已正确定义并赋值,符合C语言语法的表达式是()

A. a=8+b+c,a++ B. a=3a C. int(12.3%4) D. a=a+1=c+b 29、若有定义:int a,b;double x;则以下不符合C语言语法的表达式是() A. x%(-3) B. a+=-1 C. a=b=2 D. x=a+b

30、若有定义:int x=2,y=3;float i;则以下符合C语言语法的表达式是(B) A. x=x*3=2 B. x=(y==1) C. i=float(x) ( 形式错误:正确的是:i=(float)x 是将数据类型括号起来) D. i%(-3)

31、若有定义:int x;则语句x=(2*3)+6%5;运行后,x的值是() A. 8 B. 7 C. 6 D. 5

2

32、下面关于C语言变量的叙述中,错误的是(C)

A. 可以用const关键字定义变量 B. 在C程序中,SUM和sum是不同的变量

C. 变量名必须由字母或下划线组成 (可是是字母和数字组合) D. 变量的类型确定了变量的取值范围

33、若有定义:int x=5,y=6;则表达式x=(y= =6)的值为() A. 5 B. 1 C. 6 D. 0 34、下面叙述正确的是(B)

A. 2/3与2.0/3.0等价 B. (int)2.0/3与2/3等价 C. ++5与6等价 D. ?A?与”A”等价 35、下面叙述中,错误的是(A)

A. C语言基本的算术运算符不包含模运算符”%” B. 算术运算符的优先级高于关系运算符

C. 自加和自减运算符的结合方向是”自右向左”

D. C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行 36、下面叙述正确的是(A)

A. 强制类型转换运算的优先级高于算术运算 B. 若a和b是整型变量,(a+b)++是合法的 (自加自减运算只能用于简单变量,不能 用于表达式或常量) C. ?A?*?B?是不合法的 D. “A”+”B”是合法的 只能字符间运算

37、若有定义:int i=1,j=5;则表达式(++j)*(i--)的值为(C)

A. 1 B. 0 C. 6 D. 7 (i先运算再减减,加了括号也一样 38、设整型变量a为5,使b不为2的表达式是(C)

A. b=(++a)/3 B. b=6-(--a) C. b=a%2 D. b=a/2

39、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为(C) A. 1 B. 0 C. 2 D. 3(&&的优先级高于|| ,即先进行

++b&&++c运算,~,<< ,>>,&,^(异或),| 优先级依次降低 )

40、若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是(B) A. 7 B. 8 C. 9 D. 10 (i++要算完)

41、若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(B) A. 7 B. 8 C. 9 D. 10

42、若有定义:int i=2,j=5;则表达式(i+1,j+1,(++i+(j--))的值为(A) A. 8 B. 6 C. 7 D. 5 红字部分先算

43、若已定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值为(C) A. 4 B. 5 C. 6 D. 7 ( i先运算再-- 44、C语言的运算符按运算对象的个数可以分为(C) A. 单目运算符一种 B. 单目和双目运算符

C. 单目、双目和三目运算符 D. 单目、双目、三目和四目运算符

45、若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是(D)

A. scanf(“%5.2f”,&m); B. scanf(“%3.2f”,&m); C. scanf(“6.2f”,&m); D. scanf(“o”,&m);

3

46、已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是() A. scanf(“%ld”,&a); B. scanf(“%lf”,&a); C. scanf(“%c”,&a); D. scanf(“%u”,&a);

47、已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是(B)

A. scanf(“%d”,&a); B. scanf(“%lf”,&a); 不可能是实数 C. scanf(“%c”,&a); D. scanf(“%u”,&a); 十进制无符号 48、putchar()函数的功能是向终端输出( B)

A. 多个字符 B. 一个字符 C. 一个实型变量值 D. 一个整型变量表达式

49、以下程序段运行后的输出结果是(C) int k=11;

printf(“k=%d,k=%o,k=%x\\n”,k,k,k);

A. k=11,k=13,k=c B. k=11,k=12,k=13 C. k=11,k=13,k=b D. k=11,k=13,k=a

50、若有定义:int x=1234,y=123,z=12;则语句printf(“M+=+-”,x,y,z);运行后的输出结果为(D)

A. 123412312 B. 12341234123412341231231231212 C. 1234+1234+1234 D. 1234+123+12 51、已有如下定义和输入语句,

int a;char c1,c2;

scanf(“%d%c%c”,&a,&c1,&c2);

若要求a、c1、c2的值分别为10、A和B,正确的数据输入是() A. 10AB B. 10 A B C. 10A B D. 10 AB 52、以下程序段的运行结果是(A)

int a=0,b=0,c=0;

if(a&&++b) (因为a=0 又是与运算 ,故不进行&&后面的运算了) c++;

printf(“%d,%d\\n”,b,c);

A. 0,0 B. 1,2 C. 2,2 D. 1,0 53、以下程序的运行结果是()

void main() {

int a=65; char c=?A?;

printf(“%x,%d”,a ,c); }

A. 65,a B. 41,a C. 65,65 D. 41,65

54、若已定义:int a=5;float b=63.72;以下语句中能输出正确值的是(B) A. printf(“%d%d”,a,b); B. printf(“%d/”,a,b); C. printf(“//”,a,b); D. printf(“/%d”,a,b); 55、运行以下程序段时编译出错,其原因是(A)

char c1='8',c2='2008'; printf(\

4

A. c2是字符变量,只能赋以字符常量,不能赋以字符串常量 B. 字符串要用“2008“表示,而‘2008’不是字符串表示 C. ‘2008’只能赋值给字符数组 D. 字符变量不能用%d格式输出

56、若已定义:int a=3,b=15,c;则语句c=a>b;运行后c的值为(B) A. 1 B. 0 C. t D. f

57、在C语言中,判定逻辑值为“真“的最正确的叙述是(B)

A. 1 B. 非0的数 C. 大于0的数 D. 非0的整数 58、若已定义:int a=-36,b=-30,c;则语句c=a=y>=500的C语言表达式为(A) A. (y<=800)&&(y>=500) B. (y<=800)AND(y>=500) C. 800>=y>=500 D. (y<=800)&(y>=500) 60、若有定义:int x=3,y=4;则表达式!x||y的值为(A)(!,算术运算符,关系运算符,&&,|| ,赋值运算符 优先级依次降低) 注意: 表达式的最后结果不是零就是一

A. 1 B. 0 C. 3 D. 4

61、若有定义:int i=7,j=8;则表达式i>=j||i

A. 1 B. 变量i的值 C. 0 D. 变量j的值 62、若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为”假”。则不能满足要求的表达式是()

A. a%2==1 B. !(a%2==0) C. !(a%2) D. a%2 63、若有定义:int x=3,y=4,z=5;则值为0 的表达式是() A. ‘x’&&y B. x<=y

C. x||y+z&&y-z D. !((x

64、若有定义:int a=5,b=2,c=1;则表达式a-b

65、C语言中,能正确表示条件10

A. 1010||x<20 C. x>10&&<20 D. (x>10)&&(x<20)

66、以下运算符中优先级最低的是() A. << B. & C. >> D. |

67、已知double a=5.2;则正确的赋值表达式是( A) A. a+=a-=(a=4)*(a=3) B. a=a*3=2 C. a%3 (赋值语句必须有 “= ”) D. a=double(-2) 68、已知char a='R';则正确的赋值表达式是()

A. a=(a++)%4 B. a+2=3 C. a+=256-- D. a=?\\078? 69、已知int a=?R?;则正确的表达式是(A) A. a B. a=int(3e2) 要将(int) C. 2*a=a++ D. a=a+a=a+3 70、设有语句float x=3.0,y=3.0;使x值为6.0的表达式是() A. x*=y-4 B. x*=y C. x=y+4 D. x+=y

71、若有定义:float x=3.5,int z=8;则表达式x+z%3/4的值为() A. 3。75 B. 3.5 C. 3 D. 4

5

72、设有语句int x=3,y=3,a=1,b=2;表达式(x=a>b)&&(y=b>a)的值是() A. 8 B. 1 C. 5 D. 0 73、若有定义:int a=2,b=3;float x=3.5,y=2.5;

则表达式(float)(a+b)/2+(int)x%(int)y的值是() A. 3.5 B. 3.0 C. 2.5 D. 2.0

74、若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)/4的值是(B)

A. 2.5 B. 3.5 C. 4.5 D. 5.5

75、若有定义:int a=6,b=2;char c1=’a’,c2=’b’;则表达式a+b%5+c2-c1的值是( C) A. 7 B. 8 C. 9 D. 表达式错误 76、在下列运算符中,优先级最高的运算符是(C) A. <= B. != C. ! D. ||

77、设有定义:char c;float f;int i;unsigned u;double d;下列各表达式的类型分别是(A)

1. u+9 2. d!=f&&(i+2) 3. 8.2*i+c

A. 1. unsigned,2.int,3.double B. 1.double,2.double,3.double C. 1.int,2.double,3.char D. 1.unsigned,2.double,3.int

控制结构

78、以下程序段运行时,若从键盘输入10,则输出结果是(D

int a;

scanf(“%d”,&a);

if(a++>10) (先与10比较,再a++;)

printf(“%d\\n”,a); else

printf(“%d\\n”,++a); (++a后输出) A. 2 B. 11 C. 3 D. 12 79、以下程序的运行结果是()

void main() {

int x,y=1,z; z=-1; if(z==0) z=-z; else

x=y>0?3:5;

6

printf(“%d\\n”,x); }

A. -1 B. 3 C. 1 D. 5

80、对于整型变量x,下属if语句()与赋值语句:x=x%2==0?1:0;不等价。 A. if(x%2!=0) x=0;else x=1; B. if(x%2) x=1;else x=0; C. if(x%2==0) x=1;else x=0; D. if(x%2==1) x=0;else x=1; 81、以下程序段运行的结果是() int a,b,c,x; a=b=c=0;x=15; if(!a) x--; else if(b); if(c) x=3; else x+=4;

printf(\

A. 15 B. 17 C. 18 D. 19

82、若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为(D

if(a

{c=a;a=b;b=c;} (c=1,a=2,b=c=1)

A. a=1,b=2,c=3 B. a=2,b=3,c=1 C. a=2,b=3,c=3 D. a=2,b=1,c=1

83、以下程序段运行后变量a的值为()

int x=6,y=5; int a;

a=(--x==y++)?x:y+1

A. 0 B. 1 C. 6 D. 5 84、以下程序的运行结果是(C

void main() {

int n=?e?;

switch(n--) (n将一直减下去,知道遇到break为止,n=e 后面语句没有,所以

就输出error,因为后面没跟break ,所以继续向下执行直到遇到break为止)

{

defalut:printf(“error ”); case ?a?:

case ?b?:printf(“good”);break; case ?c?:printf(“pass”); case ?d?:printf(“warn”); }

}

A. error B. good C. error good D. warn 85、以下程序的运行结果是(C

void main()

7

{

int n=?c?; switch(n++) {

defalut:printf(“error”); case ?a?:

case ?b?:printf(“good”);break; case ?c?:printf(“pass ”);

(因为后面没跟break,所以继续往下执行输出warn)

case ?d?:printf(“warn”); }

}

A. pass B. warn C. pass warn D. error 86、以下程序的运行结果是(D

void main() {

int n=5;

if(n++>6) (n先与6比较,再n++ printf(“%d\\n”,n); else

printf(“%d\\n”,++n); (先++后输出 }

A. 4 B. 5 C. 6 D. 7

87、下面关于switch语句的叙述中,错误的是(A) A. case后面的表达式可以是关系表达式 B. switch语句是多分支选择语句

C. 每一个case后面的值必须互不相同,否则会出现矛盾的现象

D. 在执行一个case分支后,可用一个break语句使流程跳出switch语句 88、若有定义:int a=1,b=2,c=3;则以下程序段运行后c的值为(D

if(a>b) c=a*b; else c=a-b;

A. 2 B. 0 C. 1 D. -1

89、若有定义:int x;以下不会产生死循环的是(A A. for(;(x=getchar())!=?\\n?;); B. while(1){x++;} C. for(i=10;;i++); D. for(;;x+=1);

90、在循环语句的循环体中,break语句的作用是(D A. 暂停程序的运行 B. 结束本次循环

C. 继续执行break语句之后的循环体各语句 D. 提前结束循环,接着执行该循环后续的语句

91、以下程序段运行后,循环体中的“count+=2;”语句运行的次数为(A

int i,j,count=0;

8

for(i=1;i<=4;i++) {

count+=2;

printf(“%d”,count); }

A. 4次 B. 10次 C. 16次 D. 20次

92、在c语言中while循环和do-while循环的主要区别是(B

A. do-while循环体内可以使用break语句,while循环体内不能使用break语句 B. do-while的循环体至少无条件执行一次,while的循环体不是

C. do-while循环体可以使用continue语句,while循环体内不能使用continue语句

D. while的循环体至少无条件执行一次,do-while的循环体不是 93、以下程序段运行后,循环体运行的次数为(A)

int i=0,x;

for(;i<10;i++) x=x+i;

A. 10 B. 0 C. 1 D. 无限 94、以下程序段运行后变量n的值为(D

int i=1,n=1;

for(;i<3;i++) (遇到continue后直接返回验证循环条件,不在往下执行 {continue;n=n+i;}

A. 4 B. 3 C. 2 D. 1 95、有以下程序:

void main() {

int i;

for(i=0;i<3;i++) switch(i) {

case 1:printf(“%d”,i); case 2:printf(“%d”,i); case 3:printf(“%d”,i);

}

}

执行后输出的结果是(A

A. 11122 B. 01222 C. 013020 D. 120 96、以下程序的运行结果是(C

void main() {

int sum=0,item=0; while(item<5) {

item++; sum+=item;

9

if(sum>=6)

break; (当sum>=6时马上跳出循环,不在管item是否大于5了 }

printf(“%d\\n”,sum);

}

A. 10 B. 15 C. 6 D. 7 97、以下程序的运行结果是(B

voin main() {

int sum=0,item=0; while(item<5) {

item++;

if(item==2) (检查item是否等于2,如果是则跳出循环 ,在检测item是

否小于 5 ,如果item不等2则进行sum+=item运算)

continue; sum+=item; }

printf(“%d\\n”,sum); }

A. 10 B. 13 C. 15 D. 1 98、以下程序段执行后变量sum的值为(C

int i,j=1,sum=0; for(i=1,i<=3,i++) {

sum+=j; j++; }

A. 5 B. 3 C. 6 D. 4 99、以下程序的运行结果是(D

#include main() {

int y=10; do

{y--;} while(--y);

printf(\}

A. 1 B. 2 C. -1 D. 0

数组

10

}

A. 1357 B. 1357357577 C. 7531 D. 7531531311 172、下面程序的输出结果是(A)

#include void main() {

int i;

char *s=\ for(i=0;i<3;i++)

printf(\}

A. abc bc c B. c bc abc C. abc c bc D. a ab abc

173、下面程序的输出结果是(A)

#include void main() {

char *str=\ printf(\}

A. 1 B. 2 C. 3 D. 错误

174、以下程序执行时,输入1 2 3 4 5<回车>,输出为(A) #include #define N 5 void main() {

int a[N]; int *p=a;

while(p

scanf(\while(p>a)

printf(\}

21

A. 5 4 3 2 1 B. 1 2 3 4 5 C. 2 3 4 5 1 D. 4 3 2 1 5 175.以下程序段的运行结果是(D) int x[]={2,3,4,5,6,7},*p=x; int i,s=0;

for(i=1;i<6;i+=2)s+=*(p+i); printf(\

A.27 B.25 C.12 D.15 176.以下程序运行结果(A) main() {

int a[]={9,8,7,6,5,4},*p,*q,i; p=a;q=p+5; for(i=0;i<6;i++)

printf(\}

A.948576675849 B.948576 C.495867 D.495867768594

结构体和共用体

177.以下程序段的运行结果(B) union {

int num; char str[2]; }s;

s.num=20; s.str[0]='A'; s.str[1]='\\0';

printf(\

A.20 B.65 C.0 D.A

178.定义一个结构体变量后,该变量所占内存大小是(C)

A.结构体中第一个成员所需内存容量 B.结构体中最后一个成员所需内存容量 C.结构体中各成员所需内存容量总和 D.结构体成员中占内存容量最大者所需的容量

179.设有如下定义: union u_type { int x; float y; double z; char m; }a,b,c;

执行语句a.x=8;a.y=7.5;a.m='N';b.x=9;后,共用体变量a中的值为(B) A.9 B.'N' C.7.5 D.8 180.若有定义:

22

struct teacher {

int num;

char name[10]; char sex; int age; float score; }teacher1;

则变量teacher1所占用的内存字节数是()

A.5 B.14 C.19 D.20 181.下列对结构体类型变量定义不正确的是() A.struct teacher {

int num; int age; }teach1; B.struct {

int num; int age;

}teach1,teach2; C.struct {

int num; int age; }teacher;

struct teacher teach1; D.struct teacher {

int num; int age; };

struct teacher teach1; 182.若有定义: struct teacher {

int num; char sex; int age; }teacher1;

则下列叙述不正确的是() A.struct是结构体类型的关键字

B.struct teacher是用户定义的结构体类型

C.num,sex,age都是结构体变量teacher1的成员

23

D.teacher1是结构体类型名

183.以下程序的运行结果是() #include union Utype { int i; float f; }u[2];

void main() {

printf(\}

A.2 B.4 C.6 D.8 184.以下程序的运行结果是() #include union Utype { int i; flaot f; }; struct {

char ch[2]; int i;

union Utype u; }a;

void main() {

printf(\}

A.5 B.6 C.7 D.8

185.以下C语言共用体类型数据的描述中,不正确的是(D) A.共用体变量占的内存大小等于所需内存最大的成员所占的内存 B.共用体类型可以出现在结构体类型定义中

C.在定义共用体变量的同时允许对第一个成员的值进行初始化(定义对公用体变量的赋值和使用都只能是对变量的成员进行)

D.同一共用体各成员的首地址不相同 ( 是相同的 ) 186.设有如下语句: struct student {

int num; int age; };

struct student stu[3]={{101,18},{102,21},{103,19}};

24

struct student *p=stu;

则下面表达式的值为102的是(D)

A.(p++)->num B.(p++)->age C.(*p).age D.(*++p).num

187.根据下面定义,能打印出字母'H'的语句是(D) struct stu {

char name[8]; int age; };

struct stu class[12]={\

A.printf(\ B.printf(\C.printf(\ D.printf(\

枚举、自定义类型和位运算

199.对枚举类型进行定义,不正确的是(A)。

A.enum b{1,2,3}; B.enum a{A,B,C}; 枚举值是常量不是变量,不在程序中用赋值语句再对它赋值 ,只能将枚举值赋值给变量,不能将为元素的数值赋值给变量(d=X 是正确的,而d=0是错误的,d=(enum c)2;意思是将E赋值给d是可以的 )

C.enum c{D=3,E,F}; D.enum d{X=0,Y=5,Z=9}; 200.假定已有如下变量说明和枚举定义: char ch; int j,k;

enum day{sun,mon,tue,wed,thu,fri,sat}; int a[sat];

判断下列语句是否符合语法规则,结果是(A)。 sun=0; /*语句1*/ j=mon+tue; /*语句2*/

if(a[mon]>0)j++; /*语句3*/

A.语句1错误,语句2和语句3正确 B.语句2正确,语句1和语句3错误

C.语句3正确,语句1和语句2错误 D.语句1正确,语句2和语句3错误

201.设有如下定义: typedef int * INTEGER; INTEGER p,*q;

则(C)是正确的叙述。

A.p是int型变量 B.q是基类型为int的指针变量

C.p是基类型为int的指针变量 D.程序中可用INTEGER代替int类型名 202.在对无符号数的位运算中,操作数左移一位相当于()。 A.操作数除以2 B.操作数乘以2 C.操作数除以4 D.操作数乘以4

203.若有定义:int a=20,b=28,c;则执行语句c=(a^b)<<2;后c的值为()。 A.2 B.5 C.32 D.92 ^ 是异或

25

204.若有定义:int a=5,b=7,c;则执行语句c=a&b;后c的值为()。 A.12 B.2 C.6 D.5 205.下面程序的输出结果为()。 #include void main() {

enum Weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; enum Weekday day=sat; printf(\} A.7 B.6 C.5 D.4 206.若有以下类型说明,叙述正确的是(C)。 typedef struct {

int num; char *name;

int score; STU是结构体类型名 }STU,*PSTU; A.STU是变量名 B.PSTU是变量名

C.PSTU是指向结构体类型STU的指针类型名 D.类型说明语句有错误

207.下面程序段的运行结果是()。 int a=5,b=6; printf(\A.5 B.6 C.7 D.8

208.若有以下类型说明,则(B)是正确的叙述。 typedef union {

char str[2]; int i; }sp;

A.sp是一个共用体变量名 B.sp是一个共用体类型名 C.union sp是共用体类型名

D.typedef union是共用体类型名 209.定义枚举类型的关键字是()。 A.define B.enum C.union D.struct

文件

210.以下程序的功能是()。 #include main() {

26

FILE *fp; long int n;

fp=fopen(\fseek(fp,0,SEEK_END); n=ftell(fp); fclose(fp);

printf(\}

A.计算文件wj.txt的起始地址 B.计算文件wj.txt的终止地址 C.计算文件wj.txt内容的字节数 D.将文件指针定位到文件末尾 211.设有一文本文件test.txt,其内容为\(不包含引号),以下程序段的运行结果是()。 FILE *fp; char *str;

if((fp=fopen(\ str=fgets(str,5,fp); printf(\

A.cpro B.cprog C.progr D.cprogram 212.在C语言程序中,对文件操作的一般步骤是()。 A.打开文件,定义文件指针,读写文件,关闭文件 B.定义文件指针,读文件,写文件,关闭文件 C.定义文件指针,打开文件,读写文件,关闭文件 D.操作文件,定义文件指针,修改文件,关闭文件 213.下面程序运行后的结果是()。 #include main() {

FILE *fp;int i=10,j=20,k,n; fp=fopen(\fprintf(fp,\fprintf(fp,\fclose(fp);

fp=fopen(\fscanf(fp,\printf(\fclose(fp); }

A.10 20 B.10 30 C.20 30 D.20 10

214.以下程序运行后,屏幕显示write ok!,下列说法正确的是()。 #include main() {

FILE *fp;

fp=fopen(\

27

if(fp!=NULL) {

fprintf(fp,\fclose(fp);

printf(\} }

A.当前工作目录下存在data.txt文件,其中的内容为\B.fclose(fp);语句的功能是打开文件

C.当前工作目录下一定不存在data.txt文件 D.当前工作目录下一定存在data.txt文件

215.以下程序运行后,屏幕显示File open error!,则可能的原因是()。#include main() {

FILE *fp; char str[256];

fp=fopen(\if(fp==NULL) {

printf(\return; }

fscanf(fp,\fclose(fp); }

A.当前工作目录下有test.txt文件,但test.txt文件太小 B.test.txt文件不能关闭

C.当前工作目录下没有test.txt文件

D.当前工作目录下有test.txt文件,但test.txt文件太小 216.以下程序的可执行文件名为cmdline.exe。 #include #include

void main(int argc,char *argv[]) {

if(argc!=2) {

printf(\exit(1); }

printf(\}

在DOS命令行输入:cmdline harry<回车>,则输出结果是()。 A.You forgot to type your name or you typed more parameters

28

B.Hello harry C.Hello cmdline D.Hello

217.对下面程序正确的描述是(C)。 #include #include void main() {

FILE *in,*out;

if((in=fopen(\{

printf(\exit(0); }

if((out=fopen(\{

printf(\exit(0); }

while(!feof(in))

fputc(fgetc(in),out); fclose(in); fclose(out); }

A.程序实现在屏幕上显示磁盘文件infile.txt的内容

B.程序实现将两个磁盘文件infile.txt和outfile.txt的内容合二为一 C.程序实现将磁盘文件infile.txt复制到磁盘文件outfile.txt D.程序实现将两个磁盘文件合并在屏幕上输出 218.以下叙述中正确的是(D)。

A.C语言中的文件是流式文件,因此只能顺序存取数据

B.打开一个已有的文件进行了写操作后,原有文件中的全部数据必定被覆盖 C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 219.对下面程序正确的描述是(A)。 #include main() { int i;

FILE *fp;

if((fp=fopen(\,\ {i=fgetc(fp);i=i+1;} fseek(fp,0,SEEK_SET); fputc(i,fp);

29

fclose(fp); }

A.将文件中第一个字节的内容加1并重新写入到第一个字节 B.将文件中第一个字节的内容加1并写入到第二个字节中 C.以只读方式打开文本文件test.txt D.以只读方式打开二进制文件test.dat

220.若在fopen函数中使用文件的方式是\,该方式的含义是(D)。 A.为读/写打开一个文本文件 B.为输出打开一个文本文件

C.为读/写建立一个新的文本文件 D.为读/写建立一个新的二进制文件

第二部分:改错题(每小题10分,2小题/套)

说明如下:

(1)修改程序中每对\之间存在的错误; (2)不得删改程序中的\注释和其它代码;

(3)源程序均在考生文件夹中,务必以原文件名保存程序;

(4)按alt+tab键,切换考试程序与Turbo C;按alt+enter键,切换Turbo C窗口大小。 第1套

1.程序Cmody011.c的功能是:从字符串数组str1中取出ACSII码值为偶数且下标为偶数的字符依次存放到字符串t中。

例如,若str1所指的字符串为:4AZ18c?Ge9a0z! 则t所指的字符为:4Z8z 注意:数组下标从0开始。

2.程序Cmody012.c中,函数fun(int n)的功能是:根据参数n,计算大于10的最小n个能被3整除的正整数的倒数之和。例如: -------------------------Cmody011.c------------------- #include #include #include #include void main() {

char str1[100],t[200]; int i,j;

/**/i=0;/**/ 改成j=0 clrscr();

strcpy(str1,\for(i=0;i

/**/if((str1[i]%2==0)&&(i%2!=0))/**/ 将!=改成 == {

30

本文来源:https://www.bwwdw.com/article/6lit.html

Top