C语言练习题(谭浩强第四版)..附有答案(1)

高级语言程序设计综合练习一 学号: 姓名:

一、选择题

1、 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( )

A、 任意 B、 第一个函数必须是主函数,其他函数任意 C、 必须完全按照执行的顺序排列

D、 其他函数可以任意,主函数必须在最后

2、 下列四个叙述中,正确的是:( )

A、 C程序中的所有字母都必须小写

B、 C程序中的关键字必须小写,其他标示符不区分大小写 C、 C程序中的所有字母都不区分大小写 D、 C语言中的所有关键字必须小写

3、 下列四个叙述中,错误的是:( )

A、 一个C源程序必须有且只能有一个主函数 B、 一个C源程序可以有多个函数

C、 在C源程序中注释说明必须位于语句之后 D、 C源程序的基本结构是函数

4、 下面不是C语言合法标识符的是:( )

A、abc B、5n C、_4m D、x3

5、 以下叙述不正确的是:( )

A. 分号是C语句的必要组成部分 B. C程序的注释可以写在语句的后面 C. 函数是C程序的基本单位 D. 主函数的名字不一定非用main来表示

6、 C语言中允许的基本数据类型包括:( )

A. 整型、实型、逻辑型 B. 整型、实型、字符型

C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型

7、 C语言中能用八进制表示的数据类型为:( )

A、字符型、整型 B、整形、实型

C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型

8、 下列属于C语言合法的字符常数是:( )

A、’\\97’ B、”A” C、’\\t’ D、”\\0”

9、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )

A、char

1

高级语言程序设计综合练习一 学号: 姓名:

printf(“%d,%c\\n”,c2-c1,c2-‘a’+’A’);则输出结果是:( ) A、2,M B、3,E

C、2,E D、输出项与相应的格式控制不一致,输出结果不确定 11、 以下合法的赋值语句是:( )

A、x=y=100 B、d--; C、x + y D、c = int(a+b); 12、 在以下一组运算符中,优先级最高的是:( )

A、<= B、== C、% D、&& 13、 下列能正确表示a≥10或a≤0的关系表达式是:( ) A、a>=10 or a<=0 B、a<=10 || a>=0 C、a>=10 || a<=0 D、a>=10 && a<=0 14、 下列只有当整数x为奇数时,其值为“真”的表达式是:( ) A、x%2==0 B、!(x%2==0) C、(x-x/2*2)==0 D、!(x%2) 15、 设a为整型变量,不能正确表达数学关系10=15) C、a>10 && a<15 D、!(a<=10) && !(a>=15) 16、 已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:( )A、0 B、语法错 C、1 D、“假” 17、 表达式17%4 /8的值为:( )

A、0 B、1 C、2 D、3

18、 一个可执行的C程序的开始执行点是:( )

A. 程序中的第一个语句 B. 包含文件中的第一个函数 C. 名为main的函数 D. 程序中的第一个函数

19、 组成C语句的一个必不可少的符号是:( )

A. 逗号 B. 引号 C. 冒号 D. 分号

20、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:( A. int B. long C. float D. double

21、 下述是C语言中有关变量定义的几个说法,正确的是:( )

A. 变量可以不定义直接使用 B. 一个说明语句只能定义一个变量

C. 几个不同类型的变量可在同一语句中定义 D. 变量可以在定义时进行初绐化 22、 与x * = y + z等价的赋值表达式是:( )

2

高级语言程序设计综合练习一 学号: 姓名:

A. x = y + z B. x = x * y + z C. x = x * (y + z) D. x = x + y * z 23、 当代电子计算机能够自动地处理指定的问题是因为:( )

A.计算机是电动的 B.有解决该问题的计算机程序 C.事先存储了解决该问题的程序 D.以上都不是 24、 以下叙述中最准确的是:( )

A.计算机程序是处理某一问题所有指令的集合

B.计算机程序是处理某一问题所用到的所有数据的集合 C.计算机程序是处理某一问题的所有指令及其数据的集合 D.计算机程序是处理某一问题的所有指令及其数据的有序集合 25、 目前编写计算机程序一般采用的是:( )

A.机器语言 B.汇编语言 C.高级语言 D.英语 26、 设计一个计算机程序最基本的工作是:( )

A.制定正确的算法 B.选择合理的数据结构 C.制定正确的算法和选择合理的数据结构 D.以上都不是 27、 算法具有五个特性,以下选项中不属于算法特性的是:( )

A.有穷性 B.简洁性 C.可行性 D.确定性 28、 下述哪一个不是结构化程序基本结构:( )

A.顺序 B.选择 C.循环 D.嵌套 29、 C语言是一种:( )

A.机器语言 B.汇编语言 C.高级语言 D.以上都不是 30、 C语言源程序的扩展名为:( )

A..exe B..c C..obj D..cpp 31、 C程序编译、连接后最终产生(即计算机执行)的文件的扩展名为( )

A..exe B..c C..obj D..cpp 32、 构成C语言源程序的基本单位是:( )

A.子程序 B.过程 C.文本 D.函数 33、 下列叙述正确的是:( )

A.C语言源程序可以直接在DOS环境中运行

B.编译C语言源程序得到的目标文件可以直接在DOS环境中运行

C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D.C语言源程序可以直接在VC++环境中运行 34、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:( )

3

高级语言程序设计综合练习一 学号: 姓名:

A.写在前面的函数先开始执行 B.总是从main()函数开始执行 C.总是从max()函数开始执行 D.写在后面的函数先开始执行 35、 以下叙述不正确的是:( )

A.分号是C语句的必要组成部分 B.C程序的注释可以写在语句的后面 C.函数是C程序的基本单位 D.主函数的名字不一定用mian表示 36、 以下为C语句的是:( )

A.a=8 B.a++; C.if(a>8) D. #include 37、 以下所列语句中,合法的语句是:( )

A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);

二、判断题

1. ( T )C语言是严格区分大写和小写的,因此主函数不能写成main()以外的其他形式。 2. ( F )C语言程序是从源文件的第一条语句开始执行的。

3. ( F )C语言对其数据在内存中所占用的实际字节数是有明确规定的。 4. ( F )C语言中/*..*/之间的注释内容是不能跨行的。 5. ( F )C语言中多个以“;”结束的语句不能放在同一行。 6. ( F )变量说明语句int a=b=c=23;是正确的。

7. ( F )字符型数据不可以和整数数据一起进行算术运算。

8. ( T )C语言中强制类型转换不会改变原变量的原有数据类型。 9. ( F )表达式j=-i++和j=-(i++)不相等

10. ( T )程序段:i=8,j=10;printf(\其结果9,10,9,10. 11. ( F )C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上

原样显示。

12. ( T )计算机程序的执行过程实际上是对程序所表达的数据进行处理的过程。

13. ( T )目前程序设计的理念已经从“面向过程的程序设计”向“面向对象的程序设计”

方面转变。

14. ( T )有人曾提出:计算机程序=算法+数据结构。

15. ( T )在程序设计中提到的算法就是“解决问题的方法和步骤”

16. ( T )在程序设计中提到的数据结构就是“程序处理的对象的表示方法” 17. ( T )计算机程序的算法就是解决“做什么”和“怎么做”的问题。 18. ( T )结构化程序设计的基本理念是:将一个较大的问题细分成若干个较小问题的组合。 19. ( F )C程序的执行是从程序的第一行开始,一直到程序的最后一行结束。 20. ( T )C程序的执行是从主函数的第一行开始,一直到主函数的最后一行结束。

21. (T)设x、t均为int型变量,则执行语句\后,t的值为0 22. ( T )若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值

不变

23. ( T )在C程序中,%是只能用于整数运算的运算符 24. ( T )在C语言中,逻辑“真”等价于不等于0的数 25. ( F )C语言中字符型、整型、实型都能用八进制表示 26. ( T )变量的三要素是:变量名、变量类型、变量的值。 书上必会的题:课后题:第三章P83-4,6,7

4

高级语言程序设计综合练习一 学号: 姓名:

一、 选择题

1. 以下说法正确的是( )。

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

2. 算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性

的是( )。

A)有零个输入或多个输入 B)高效性 C)有穷性 D)确定性

3. C语言中用于结构化程序设计的3种基本结构是

A)顺序结构、选择结构、循环结构 B)if,switch,break C)for,while,do-while D)if,for,continue

4. 一个C程序的执行是从( )。

A)main()函数开始,直到main()函数结束 B)第一个函数开始,直到最后一个函数结束 C)第一个语句开始,直到最后一个语句结束 D)main()函数开始,直到最后一个函数结束

5. 组成C程序的基本单位是( )。

A)函数 B)标识符 C)表达式 D)语句

6. 若有语句scanf(“%d%d”,&a,&b);要使变量a,b分别得到12和34;正确的输入

形式为( )。 A)12<空格>34<回车> B)12,34<回车> C)1234<回车> D)12:34<回车>

7. C语言中最简单的数据类型包括( )。

A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)字符型、实型、逻辑型

8. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符( )。

A)必须为字母 B)必须为下划线

C)必须为字母或下划线 D)可以是字母,数字和下划线中任一字符

9. 下列可用于C语言用户标识符的一组是( )。

A)void, define, WORD B)a3_b3, _123,Car

5

高级语言程序设计综合练习一 学号: 姓名:

C)For, -abc, IF Case D)2a, DO, sizeof

10. C语言中运算对象必须是整型的运算符是( )。

A)%= B)/ C)= D)<=

11. 设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据

类型为( )。

A)int B)float C)double D)不确定

12. 在C语言中,char型数据在内存中的存储形式是( )。

A)补码 B)反码 C)原码 D)ASCII码

13. 设int类型的数据长度为2字节,则该类型数据的取值范围是( )。

A) 0至65536 B) 0至65535

C) -32767至32768 D) -32768至32767

14. x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是A)INPUT x、y、z;

B)scanf(\); C)scanf(\);

D)read(\);

15. 调用getchar和putchar函数时,必须包含的头文件是

A)stdio.h B)stdlib.h C)define D)以上都不对

16. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0

17. 若变量c为char类型,能正确判断出c为小写字母的表达式是

A)′a′<=c<=′z′ B)(c>=′a′)||(c<=′z′) C)(′a′<=c)and(′z′>=c) D)(c>=′a′)&&(c<=′z′)

18. 若运行时给变量x输入12,则以下程序的运行结果是

main() {int x,y;

scanf(\); y=x>12?x+10:x-12;

printf(\\n\); }

A)0 B)22 C)12 D)10

6

高级语言程序设计综合练习一 学号: 姓名:

19. 已知char ch=′C′;则以下表达式的值是ch=(ch>=′A′ && ch<=′Z′)?(ch+32):ch;

A)A B)a C)Z D)c

20. 请阅读以下程序:

main()

{ int a=5,b=0,c=0; if(a=b+c)

printf(\\n\); else

printf(\$$$\n\); }

以上程序

A)有语法错不能通过编译 B)可以通过编译但不能通过连接 C)输出*** D)输出$$$

21. 若int k=8;则执行下列程序后,变量k的正确结果是

main() {int k=8; switch(k) {case 9:k+=1; case 10:k+=1;

case 11:k+=1;break; default:k+=1;}

printf(\\n\);} A)12 B)11 C)10 D)9

22. 阅读如下程序段

#include \main()

{ int a=45,b=40,c=50,d; d=a>30?b:c; switch(d)

{ case 30 : printf(\); case 40 : printf(\); case 50 : printf(\); default : printf(\);}} 则输出的结果是 A)40,50, B)50,# C)40,# D)40,50,#

二、 填空题

1. 用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式

执行,也可以通过编译程序一次翻译产生目标程序,然后执行。 2. C语言中的标识符只能由字母、下划线和( 数字 ) 组成。 3. C语言源程序注释符号有两种,(/*??*/ )用于块注释,( // )用于行注释。

7

高级语言程序设计综合练习一 学号: 姓名:

4. 源程序test.c经编译产生的目标文件是:( test.obj );经连接处理后,产生的可执

行文件是:( test.exe )。

5. C标准库函数中,数学函数的原型在(math.h )头文件中。

6. 如下语句printf(\\n\35);在执行后的输出结果是 ( e )。 7. 下列程序的输出结果是 ( 1.300000,1.300000 ) 。

#include #include int main()

{ float a=-1.3;b=1.3;

printf(\(a),fabs(b)); return 0; }

8. 将以下程序写成三目运算表达式是( max = a>b ? a : b)。

if(a>b)max=a; else max=b;

9. 若从键盘输入58,则以下程序输出的结果是 ( 585858 ) 。

main() { int a;

scanf(\);

if(a>50)printf(\); if(a>40)printf(\); if(a>30)printf(\);}

10. 阅读下面的程序,当程序在执行时,如果输入的是′A′,则输出结果为( #include \main() { char a;

a=getchar(); switch(a)

{ case 65: printf(\); case 66: printf(\);

default :printf(\\n\);

} }

三、 判断题

1. ( F )一个程序只能由一个C程序文件组成。

2. ( T )一个C程序文件是由一个或多个函数组成的。 3. ( T )一个程序必须包含一个main函数。

4. ( F )main函数必须写在一个C程序文件的最前面。 5. ( F )C程序的执行从程序头开始。 6. ( F )函数体不可以为空。

7. ( F )C程序的注释只能是一行。

8. ( F )C程序中的数据声明和语句必须用“。”结束。 9. ( F )C程序一行只能写一条语句。

10. ( F )在C程序中,符号“Sum”和“sum”相同。

ABother ) 。

8

高级语言程序设计综合练习一 学号: 姓名:

第三章 顺序结构

一、选择题

1. 下面程序的输出是:( ) main()

{ int k=11;

printf(\ }

A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b

2. 以下合法的C语言赋值语句是:( )

A)a=b=58 B)k=int(a+b) ; C)a=58,b=58 D)--i;

3. 以下程序的输出结果是:( ) main()

{ int x=10,y=3;

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

A)0 B)1 C)3 D)不确定

4. 若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是:(A)read (a,b,c); B)scanf(“%d%d%d”,a,b,c); C)scanf(“%D%D%D”,%a,%b,%c); D)scanf(“%d%d%d”,&a,&b,&b);

5. 执行下面程序段后,c3中的值是:( )

int c1=1 , c2=2 , c3; c3=c1/c2;

A)0 B)1/2 C)0.5 D)1

6. 以下程序段的输出是:( )

float a=57.666;

printf(“*%4.2f*\\n”, a);

A)*57* B)*58* C)*57.66* D)*57.67*

7. 若有以下定义和语句:( ) int a=5,b b=a++;

此处b的值是:( )

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

8. 以下程序的输出结果是:( ) main()

{ int x=10,y=10;

)9

高级语言程序设计综合练习一 学号: 姓名:

printf(\ }

A) 10 10 B) 9 9 C) 9 10 D) 10 9

9. 已知字符A的ASCII码为十进制的65,下面程序的输出是:( ) main() {

char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3';

printf(\ }

A) 67,D B) B,C

C) C,D D) 不确定的值

10. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是:( main() {

int x;

scanf(\ if (x++>5)

printf(\

else

printf(\

}

A) 7和5 B) 6和3 C) 7和4 D) 6和4

11. 若执行下面的程序从键盘输入3和4,则输出是:( ) main()

{ int a,b,s;

scanf(\ s=a;

if (a

printf(\ }

A) 14 B) 16 C) 18 D) 20

12. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值

scanf(\

为了把100和765.12分别赋给i和f,则正确的输入为:( ) A) 100<空格>765.12<回车> B) i=100,f=765.12<回车>

C) 100<回车>765.12<回车> D) x=100<回车>,y=765.12<回车>

) 10

高级语言程序设计综合练习一 学号: 姓名:

二、判断题

1.( F )在C语言中,实型数据在内存都中占4个字节。

2.( F )在C语言中,参加算术( +,-,*,/,% )运算的数据可以是任何类型的数据。

3.( F )若有定义和语句:int a;char c;scanf(\当通过键盘输入:

10,‘A’之后,则变量a中存放的是10,变量c中存放的是‘A’。

4.( F )C语言中,变量名只能是小写字母表示,符号常量名可用大写表示 5.( F )在C语言中,变量可以不要定义,直接使用 6.( T )一个C语言程序总是从主函数开始执行的

7.( F )注释语句必须用/*和*/括起来,且只能位于某一语句的后面

第四/五章 选择结构与循环结构

一、选择题

1. 有以下程序 main( )

{ int i;

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

{ case 1 : printf(\ case 2 : printf(\ default : printf(\ }

}

执行后输出结果是:( )

A)011122 B)012 C)012020 D)120

2. 以下程序的输出结果是:( ) main()

{ int a=5,b=4,c=6,d;

printf(\(a>c?a:c) : (b)); }

A) 5 B) 4 C) 6 D) 不确定

3. 以下程序中,while循环的循环次数是:( ) main()

{ int i=0; while(i<10)

{ if(i<1) continue; if(i==5) break; i++; } }

11

高级语言程序设计综合练习一 学号: 姓名:

A) 1 B) 10 C) 6 D) 死循环,不能确定次数

4. 以下程序的输出结果是:( ) main( )

{ int a=0,i;

for(i=1;i<5;i++) switch(i) { case 0:

case 3: a+=2; case 1:

case 2: a+=3; default: a+=5; }

printf(\ }

A) 31 B) 13 C) 10 D) 20

5. 若执行以下程序时从键盘上输入9,则输出结果是:( ) main() { int n;

scanf (\ if(n++<10)

printf (\

else

printf(\

}

A) 11 B) 10 C) 9 D) 8

6. 有以下程序段 int k=0;

while(k=1)

k++;

则while 循环执行的次数是:( )

A) 无限次 B) 有语法错,不能执行 C) 一次也不执行

7. 以下程序执行后sum的值是:( ) main()

{ int i , sum;

for(i=1;i<6;i++) sum+=i; printf(\ }

A)15 B)14 C) 不确定 D)0

8. 以下程序输出结果是:( )

D) 执行1次 12

高级语言程序设计综合练习一 学号: 姓名:

main ()

{ int m=5; if (m>5)

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

else

printf (“%d\\n”,m--);

}

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

9. 设有如下定义:

int a=1,b=2,c=3,d=4,m=2,n=2;

则执行表达式:(m=a>b)&&(n=c>d)后,n的值为:( )

A)1 B)2 C)3 D)0

10. 以下程序运行后,如果从键盘上输人5,则输出结果是:( )

main( ) {

int x;

scanf(\,&x); if(x--<5)

printf(\,x); else

printf(\,x++); }

A、3 B、4 C、5 D、6

11. 以下程序段的输出是:( ) int i,j,m=0;

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

for (j=3;j<=19;j+=4) m++;

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

A)12 B)15 C)20 D)25

12. 定义如下变量:int n=10;则下列循环的输出结果是:( ) while (n>7)

{ n--; printf(\ }

A) 10 9 8 B) 9 8 7

C) 10 9 8 7 D) 9 8 7 6

13. 以下循环体的执行次数是:( ) main()

{ int i,j;

13

高级语言程序设计综合练习一 学号: 姓名:

for(i=0,j=1;i<=j+1;i+=2,j--)

printf(\

}

A) 3 B) 2 C) 1 D) 0

14. 在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:

( )

A) switch B) continue C) break D) if

二、判断题:

1. ( F )用1作while循环的判断条件,则循环一次也不执行。 2. ( F )for循环表达式的括号内的3个表达式均不可以省略。 3. ( F )若有for( ; ; ){??},是指循环体执行0次。 4. ( F )程序有死循环的时候,上机编译不能通过。 5. ( F )执行for(I=0;I<3;I++);后I的值为2。 6. ( T )所有类型的循环都可以进行嵌套使用。

7. ( T )利用break语句可以提前终止循环的执行。 8. ( F )利用continue语句可以提前终止循环的执行。

9. ( F )break语句和continue语句不可以同时出现在同一个循环体内。 10. ( F )switch语句中,每一个case的冒号后面都必须至少跟有一条语句

第6章 数组

一、选择题

1、假设int型变量占两个字节的存储单元,若有定义: int x[10]={0,2,4};

则数组x在内存中所占字节数为:( )

A、3 B、6 C、10 D、20

2、下面程序段的输出结果是:( ) int j;

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (j=0;j<3;j++)

printf(“%d ”,x[j][2-j]);

A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9

3、以下能正确定义数组并正确赋初值的语句是:( )

A、int N=5,b[N][N]; B、int a[1][2]={{1},{3}};

C、int c[2][]= {{1,2},{3,4}}; D、int d[3][2]={{1,2},{3,4}};

4、有以下程序

main()

14

高级语言程序设计综合练习一 学号: 姓名:

{ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2;

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

{ printf(\}

执行后输出结果是:( )

A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9

5、以下能正确定义一维数组的选项是:( )

A、int num[]; B、int num[0..100]; C) #define N 100 D) int N=100;

int num[N]; int num[N];

6、有以下程序

main()

{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1]; printf(\}

程序运行后的输出结果是:( ) A、 11 B、 19 C、 13 D、、20 7、不能把字符串“Hello!”赋给数组b的语句是:( )

A、char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’}; B、char b[10];b=”Hello!”;

C、char b[10]; strcpy(b,”Hello!”); D、char b[10]=”Hello!”;

8、函数调用strcat(strcpy(str1,str2),str3)的功能是_:( )

A、将串str1复制到串str2中后在连接到串str3之后 B、将串str1连接到串str2之后再复制到串str3之后

C、将串str2复制到串str1中后再将串str3连接到串str1之后 D、将串str2连接到串str1中后再将串str1复制到串str3中

9、在C语言中,一维数组的定义方式为:类型说明符 数组名( )。

A.[常量表达式] B.[整型表达式] C.[整型常量]或[整型表达式] D.[整型常量]

10、若有说明:int a[10];,则对a数组元素的正确引用是:( )。

A.a[10] B.a[3.5] C.a(5) D.a[10-10]

11、在C语言中,引用数组元素时,其数组下标的数据类型允许是:( )。

A.字符常量 B.浮点型常量 C.整型常量或整型表达式 D.任何类型的表达式

12、下列数组定义、初始化或赋值语句中,正确的是:( )。

15

高级语言程序设计综合练习一 学号: 姓名:

A.int x[5]={1,2,3,4,5,6}; B.int n=8; int score[n]; C.int a[8]; a[8]=100; D.int x[]={1,2,3,4,5,6};

13、已知int a[][3]={1,2,3,4,5,6,7};,则数组a的第一维的大小是:( )。

A.2 B.3 C.4 D.无确定值

14、若有说明:int a[3][4];,则对a数组元素的非法引用是:( )。

A.a[0][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4]

15、已有定义:char a[]=\,以下叙述中正确的是:( )。

A.数组a和数组b的长度相同 B.a数组长度小于b数组长度 C.a数组长度大于b数组长度 D.数组a和数组b等价

16、对两个数组a和b进行如下初始化:

char a[]=“ABCDEF”;

char b[]={?A?, ?B?, ?C?, ?D?, ?E?, ?F?}; 则以下叙述正确的是:( )。 A.数组a与数组b完全相同 B.数组a与数组b长度相同C.数组a与数组b中都存放字符串 D.数组a比数组b长度长

17、有下面的程序段:

char a[3],b[]=“China”; a=b;

printf(“%s”,a);

A.运行后将输出China B.运行后将输出Ch C.运行后将输出Chi D.编译出错

18、下面程序的运行结果是:( )。

char c[5]={?a?, ?b?, ?\\0?, ?c?, ?\\0?}; printf(“%s”,c); A.ab B.abc C.ab\\0 D.ab\\0c\\0

19、设有数组定义:char array[]=“china”;,则数组array所占的空间为:( )。

A.4个字节 B.5个字节 C.6个字节 D.7个字节

20、判断字符串s1是否大于字符串s2,应当使用:( )。

A.if(s1>s2) B.if(strcmp(s1,s2)) C.if(strcmp(s2,s1)>0) D.if(strcmp(s1,s2)>0)

21、下列语句中,不正确的是:( )。

A.char str[5]=\

B.char str[]={'h','e','l','l','o','\\0'}; C.char str[5]={\D.char str[100]=\

16

高级语言程序设计综合练习一 学号: 姓名:

22、下面错误的初始化语句是:( )。

A.char str[]=\B.char str[100]=\

C.char str[]={'h','e','l','l','o'}; D.char str[]={'hello'};

23、定义了一维int型数组a[10]后,下面错误的引用是:( )。

A.a[0]=1; B.a[10]=2; C.a[0]=5*2;

D.a[1]=a[2]*a[0];

24、下面的二维数组初始化语句中,错误的是:( )。

A.float b[2][2]={0.1,0.2,0.3,0.4}; B.int a[][2]={{1,2},{3,4}}; C.int a[2][]= {{1,2},{3,4}}; D.float a[2][2]={0};

25、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为:(A.24 B.25 C.18 D.17

26、下面程序的运行结果是:( )。

main() {

int a[][3]={1,2,3,4,5,6}; printf(\}

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

27、下面程序的运行结果是:( )。

main() {

char s1[20]=\ char s2[15]=\

printf(\}

A.20 B.15 C.5 D.2

28、下面程序的运行结果是:( )。

main() { int x[]={22,33,44,55,66,77,88}; int k,y=0; for (k=1;k<=4;k++) if (x[k]%2==1)

)。17

高级语言程序设计综合练习一 学号: 姓名:

y++; printf(\} A.0 B.1 C.2 D.3

29、下面程序的运行结果是:( )。

main() {

int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j

A.14 B.19 C.20 D.21

30、下面程序的运行结果是:( )。

main() { char s[]=\ int i; i=0; while(s[i]!='\\0') { if(s[i]>='a'&&s[i]<='z') printf(\ i++; } }

A.ab B.ab1c2d4e C.abcde

D.a

二、判断题:

1. ( F )在程序中可以对数值数组中的数据进行整体使用。

2. ( T )如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。 3. ( T )用scanf函数输入的字符串不可以带空格。 4. ( T )用gets函数输入的字符串可以带空格。

5. ( F )实现两个字符串的复制可以使用str1=str2;语句。 6. ( T )使用strcpy函数可以实现两个字符串的复制。 7. ( T )使用strcat函数可以实现两个字符串的连接。

8. ( F )使用strlen函数可以求出一个字符串的实际长度(包含‘\\0’字符)。 9. ( F )如有定义char a[20];则可以通过a=“I am a boy”;给a赋值。 10. ( T )如有定义int a[3][4]={0}; 则数组a的所有元素初值均为0。 11. ( F )构成数组的各个元素可以有不同的数据类型。

12. ( F )若有说明:int a[10];,则可以a[10]引用数组a的第10个元素。

13. ( T )引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。 14. ( T )若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]。 15. ( F )使用strcat函数可以实现两个字符串的复制。

18

高级语言程序设计综合练习一 学号: 姓名:

第7章 函 数

一、选择题

1. 在c语言中以下不正确的说法是:( )

A. 实参可以是常量、变量、或表达式 B. 形参可以是常量、变量或表达式 C. 实参可以为任意类型

D. 形参应与其对应的实参类型一致

2. 以下程序有语法性错误,有关错误原因的正确说法是:( )

int main() { int G=5,k;

void prt_char(); ??

k=prt_char(G); ?? }

A. 语句void prt_char();有错,它是函数调用语句,不能用void说明 B. 变量名不能使用大写字母

C. 函数说明和函数调用语句之间有矛盾 D. 函数名不能使用下划线 3. 以下正确的说法是:( )

A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可嵌套 C. 函数的定义和调用均不可以嵌套 D. 函数的定义和调用均可以嵌套

4. 在一个函数内部定义的变量是:( )

A、 简单变量 B、 局部变量 C、 全局变量 D、 标准变量 5. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:( )A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 6. 以下所列的各函数首部中,正确的是:( ) A、 void play(var :Integer,var b:Integer) B、 void play(int a,b) C、 void play(int a,int b)

D、 Sub play(a as integer,b as integer)

7. 当调用函数时,实参是一个数组名,则向函数传送的是:( )

A、 数组的长度 B、 数组的首地址

C、 数组每一个元素的地址 D、 数组每个元素中的值

8. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:(A、 地址传递 B、 单向值传递

19

高级语言程序设计综合练习一 学号: 姓名:

C、 由实参传给形参,再由形参传回实参 D、 传递方式由用户指定 9. 以下叙述中不正确的是:( )

A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量

C) 在一个函数内定义的变量只在本函数范围内有效

D)在一个函数内的复合语句中定义的变量在本函数范围内有效 10. 有以下程序

void fun (int a,int b,int c) { a=456; b=567; c=678;} int main()

{ int x=10, y=20,z=30; fun (x,y,z);

printf(\return 0; }

输出结果是:( )

A、30,20,10 B、10,20,30 C、456,567,678 D11. 下述函数定义形式正确的是( )。

A、 int f(int x; int y) B、 int f(int x,y) C、 int f(int x, int y) D、 int f(x,y: int) 12. 关于函数参数,说法正确的是( )。

A、 实参与其对应的形参各自占用独立的内存单元 B、 实参与其对应的形参共同占用一个内存单元

C、 只有当实参和形参同名时才占用同一个内存单元 D、 形参是虚拟的,不占用内存单元 13. 一个函数的返回值由( )确定。

A、 return语句中的表达式 B、 调用函数的类型 C、 系统默认的类型 D、 被调用函数的类型 14. C语言中形参的默认存储类别是( )。

A、 自动(auto) B、 静态(static) C、 寄存器(register) D、 外部(extern) 15. 以下正确的函数形式是( )。

A、 double fun(int x,int y) { z=x+y; return z; } B、 fun(int x,y) { int z; return z; } C、 fun(x,y)

{ int x,y; double z; z=x+y; return z; } D、 double fun(int x,int y) { double z; z=x+y; return z; }

16. 在一个源程序文件中定义的全局变量的有效范围为( )。

A、 一个C程序的所有源程序文件 B、 该源程序文件的全部范围

C、 从定义处开始到该源程序文件结束

、678,567,456 20

高级语言程序设计综合练习一 学号: 姓名:

D、 函数内全部范围

17. 下列函数中,能够从键盘上获得一个字符数据的函数是( )。

A、 puts( ) B、 putchar( ) C、 getchar( ) D、 gets( ) 18. 以下程序的输出结果是( )。

fun(int a,int b,int c) { c=a+b; }

int main() { int c; fun(2,3,c); printf(“%d\\n”,c); return 0; }

A、 2 B、 3 19. 分析以下程序的运行结果( func(int a,int b) { int temp=a; a=b; b=temp; }

int main() { int x,y; x=10; y=20; func(x,y);

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

A、 10,20 B、10,10 20. 下面程序的输出是( )。fun(int x) {

static int a=3; a+=x; return(a); }

int main() { int k=2,m=1,n; n=fun(k); n=fun(m); printf(“%d”,n);

return 0;

)。

C、 20,10 C、 5 D、20,20 D、 无定值21

高级语言程序设计综合练习一 学号: 姓名:

}

A、 3 B、 4 C、 6 D、 9 21. 以下程序输出的结果是( )。

int func(int a,int b) {

return(a+b); }

int main() {

int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d\\n”,r);

return 0; }

A、 12 B、 13 C、 14 D、 15 22. 以下程序的输出结果是( )。

int a,b void fun() {

a=100; b=200; }

int main() {

int a=5,b =7; fun(); printf(“%d%d \\n”,a,b);

return 0; }

A、 100200 B、 57 C、 200100 D、23. 下列程序执行后的输出结果是

void func1(int i); void func2(int i);

char st[]=\ void func1(int i) { printf(\[i]);

if(i<3) { i+=2;func2(i);} }

void func2(int i) { printf(\[i]);

if(i<3) { i+=2;func1(i);} }

int main()

{ int i=0; func1(i); printf(\\n\); return 0;} A)hello B)hel C)hlo D)hlm

75 22

高级语言程序设计综合练习一 学号: 姓名:

24. 有以下程序

int f(int n)

{ if(n==1) return 1; else return f(n-1)+1; }

int main() { int i,j=0;

for(i=1;i<3;i++) j+=f(i); printf(\\n\); return 0; }

程序运行后的输出结果是 A)4 B)3 C)2 D)1 25. 现有如下程序

#include \ int fun(int x)

{ printf(\\n\); }

int main()

{ fun(12+5); return 0; }

则程序的输出结果是 A)12 B)13 C)17 D)18

二、判断题

1、 ( ) 函数定义void max(int a,int b)表示该函数的返回值不确定。 2、 ( )在C语言中,函数体中变量的隐含存储类别是自动变量auto。 3、 ( )return语句作为函数的出口,在一个函数体内只能有一个。 4、 ( )在C程序中,函数不能嵌套定义,但可以嵌套调用。 5、 ( ) C语言的源程序中必须包含库函数。 6、 ( )在C程序中,函数调用不能出现在表达式语句中。 7、 ( )在C函数中,形参可以是变量、常量或表达式。 8、 ( )在主函数main( )中定义的变量都可以在其它被调函数中直接使用。

9、 ( )在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。10、 ( )C语言程序中的main( )函数必须放在程序的开始部分。 11、 ( )若定义的函数没有参数,则函数名后的圆括号可以省略。 12、 ( )函数的函数体可以是空语句。 13、 ( )函数的实参和形参可以是相同的名字。 14、 ( )函数调用中,形参与实参的类型和个数必须保持一致。 15、 ( )C语言中函数返回值的类型由return语句中的表达式的类型决定。 16、 ( )外部类型的变量只能定义一次,但可在不同地方声明多次。 17、 ( )外部类型的变量作用范围大,编程中应多用外部变量。 答案:

BCBBD CBBDB CADAD CCDAC DBCBD

23

高级语言程序设计综合练习一 学号: 姓名:

1F 2T 3F 4T 5 F 6F 7 F 8 F 9T 10F 11F 12T 13T 14T 15F 16T 17F

第8章 指 针

一、 选择题

1、 下列选项中正确的语句组是:( )

A)char s[8]; s={\)char *s; s={\C)char s[8]; s=\ D)char *s; s=\2、 若有定义:int *p[3];,则以下叙述中正确的是:( ) A)定义了一个类型为int的指针变量p,该变量具有三个指针

B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C)定义了一个名为*p的整型数组,该数组含有三个int类型元素

D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 3、 已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 函数的功能是:( )

A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较

D)检查p1和p2两个指针所指字符串中是否有'\\0'

4、 若有如下定义char a[10],*p=a,则对a数组中元素的不正确的引用是:( )

A)*&a[5] B)a+2 C)*(p+5) D)*(a+5) 5、 有以下程序 main()

{ int x[8]={8,7,6,5,0,0}, *s; s=x+3;

printf(\}

执行后输出结果是:( )

A) 随机值 B) 0 C) 5 D) 6 6、 下列程序的运行结果是:( ) void fun(int *a, int *b) { int *k;

k=a; a=b; b=k; }

main()

{ int a=3, b=6, *x=&a, *y=&b; fun(x,y);

printf(\}

A) 6 3 B) 3 6 C) 0 0 D)编译出错 7、 下面程序的输出结果是:( ) main()

24

高级语言程序设计综合练习一 学号: 姓名:

{ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p; p=a;

printf(\}

A) 0 B) 1 C) 10 D) 9

8、 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:( )

A) i = *p; B) *p = *&j; C) i = &j; D) i = **p; 9、 以下定义语句中,错误的是:( )

A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\ D) int n=5,a[n];

10、 以下不能正确进行字符串赋初值的语句是:( ) A) char str[5]=\; B) char str[]=\

C) char *str=\11、 有以下程序 main()

{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1]; printf(\}

程序运行后的输出结果是:( )

A) 11 B) 19 C) 13 D) 20 12、 有以下程序 #include main()

{ char *p=\

printf(\}

程序运行后的输出结果是:( ) A) 12 B) 15 C) 6 D) 5

13、 变量的指针,其含义是指该变量的______. a)值 b)地址 c)名 d)一个标志

14、 若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_______. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 15、 若有说明;int *p,m=5,n;以下正确的程序段的是____. a)p=&n; b)p=&n; scanf(\ scanf(\ c)scanf(\ d)p=&n;

*p=n; *p=m; 16、 以下正确的程序段是______.

a)char str[20]; b)char *p; scanf(\ scanf(\

25

高级语言程序设计综合练习一 学号: 姓名:

c)char str[20]; d)char str[20],*p=str;

scanf(\ scanf(\17、 下面程序的运行结果是____. #include #include main() {

char *s1=\ char *s2=\ s1+=2;s2+=2;

printf(\ }

a)正数 b)负数 c)零 d)不确定的值

18、 若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为_____ a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j 19、 若有以下定义,则p+5表示___. int a[10],*p=a;

a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值 20、 以下程序的输出结果是________. #include

void fun(int *p); int main() {

int x = 3; fun(&x);

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

void fun(int *p) {

*p = 5; }

A) 3 B) 5 C) 8 D) 2 21、 下面判断正确的是

A)char *a=\等价于 char *a;*a=\

B)char str[5]={\等价于char str[]={\C)char *s=\等价于 char *s;s=\

D)char c[4]=\[4]=\等价于char c[4]=d[4]=\

22、 下列程序的运行结果是

void fun(int *a, int *b) { int *k;

k=a; a=b; b=k;

26

高级语言程序设计综合练习一 学号: 姓名:

}

main()

{ int a=3, b=6, *x=&a, *y=&b; fun(x,y);

printf(\%d\a, b); }

A)6 3 B)3 6 C)编译出错 D)0 0

二、判断题

1. ( F )指针变量里存放的是地址值,因此指针变量只能是int型的。 2. ( T )有一个一维数组a[10],那么a与&a[0]等价。

3. ( F )有如下程序段:int i, j = 2, k, *p = &i;k = *p + j;这里出现的两个“*”号,

含义是一样的。

4. ( F )在C语言中,每一个变量在内存里占用的单元数都是相同的。 5. ( T )通过指针变量,就能间接地得到它所指向的变量的值。

6. ( F )有说明:int *p;且p指向地址为1500的内存单元,那么经过操作“p++;”后,p

将指向1501的内存单元。

7. ( T )一个变量的指针就是该变量的地址。 8. ( F )在C语言中允许将一个整数赋给指针变量。

9. ( F )数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。 10. ( F )char *p[10];定义了一个指向字符数组的指针变量。

答案:

DBABB BCBDA BDBDD ABDAB CB FTFFT FTFFF

C语言程序设计练习题

结构体与联合体

一、单选题

1. 下列关于结构体的说法错误的是:( D )

A:结构体是由用户自定义的一种数据类型

B:结构体中可设定若干个不同数据类型的成员

C:结构体中成员的数据类型可以是另一个已定义的结构 D:在定义结构体时,可以对成员进行初始化

2. 以下结构体类型说明及结构体变量a,b的定义中,正确的是:( B )

A:struct ss B:struct ss { char flag; { char flag;

27

高级语言程序设计综合练习一 学号: 姓名:

float x; float x; } ; };

ss a,b; struct ss a,b; C:struct D:struct

{ char flag; { char flag;

float x; float x; }ss; }ss;

ss a,b; struct ss a,b;

3. 设有以下说明语句:

struct stu { int a; float b;

}stutype;

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

B:struct stu是用户定义的结构体类型名 C:stutype是用户定义的结构体类型名 D:a和b都是结构体成员名

4. 在VC++6.0中使用C语言时,若有如下定义:

struct data { long i; char ch; double f;

}b;

则结构变量b占用内存的字节数是:( D )

A:4 B:8 C:12 D: 13 5. 下面程序的运行结果是:( ) main( )

{ struct cmplx { int x; int y; }c[2]={1,3,2,7};

printf(\}

A:0 B:1 C:3 D:6

6. 若有以下说明和语句,则对pup中sex域的正确引用方式是:( ) struct pupil

{ char name[20]; int sex; }pup,*p; p=&pup;

A:p.pup.sex B:p->pup.sex C:(*p).pup.sex D:(*p).sex

28

高级语言程序设计综合练习一 学号: 姓名:

7. C语言规定结构体变量系统分配给它的存储空间是( )

A)该结构体中最后一个成员所需的存储空间 B)该结构体中所有成员所需存储空间的总和。 C)该结构体中第一个成员所需的存储空间

D)该结构体中占用最大存储空间的成员所需的存储空间

8. 当说明一个共用体变量时,系统分配给它的内存是:( )

A:各成员所需内存量的总和

B:共用体中第一个成员所需内存量

C:成员中占内存量最大者所需的内存量 D:共用体中最后一个成员所需内存量

9. 以下对C语言中共用体类型数据的叙述正确的是:( )

A:可以对共用体变量名直接赋值

B:一个共用体变量中可以同时存放所有成员 C:一个共用体变量中不能同时存放其所有成员 D:共用体类型定义中不能出现结构体类型的成员

10. 若有以下定义和语句: union data { int i; char c; float f; }a;

则以下语句正确的是:( )

A:a=5 B:printf(\ C:a={2,'a',1.2};

11. 根据以下定义,能输出字母M的语句是( ) struct person { char name[9];int age;}; struct person class[10]={ “John”,17, “Paul”,19, “Mary”,18, “Adam”,16,}; A.printf(“%c\\n”,class[3].name); B.printf(“%c\\n”,class[3].name[1]); C.printf(“%c\\n”,class[2].name[1]); D.printf(“%c\\n”,class[2].name[0]);

12.有如下定义:

struct date { int y ;

int m ; int d ;}; struct person

{ char name[20];

D:n=a 29

高级语言程序设计综合练习一 学号: 姓名:

char sex;

struct date birthday; }a;

对结构体变量a的出生年份进行赋值时,下面正确的赋值语句是( )。 A y =1958 B birthday.y=1958

C a.birthday.y =1958 D a.y =1958

13.有以下程序段

typedef struct node { int data;

struct node *next; }NODE; NODE *p;

以下叙述正确的是( )

A)NODE *p;语句出错 B)p 是指向struct node 结构体变量的指针的指针

C)p 是struct node 结构体变量 D)p 是指向struct node 结构体变量的指针

14.以下关于typedef 的叙述错误的是( )

A) typedef只是将已存在的类型用一个新的名字来代表 B) 用typedef可以增加新类型

C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用typedef为类型说明一个新名,通常可以增加程序的可读性

15.下面程序的运行结果是( )

union un

{ int a; int b; int c;}; main()

{ union un u;

u.a=1; u.b=2; u.c=3;

printf(“a=%d,b=%d,c=%d\\n”,u.a,u.b,u.c); }

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

(第9章 结构体与联合体)参考答案

一、单选题

答案: 1D 2 B 3 C 4 D 5 D 6 D 7B 8C 9 C 10 B 11 D 12 C 13D 14B 15A

二、程序填空

30

高级语言程序设计综合练习一 学号: 姓名:

已知head 指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。下面的sum函数是求出链表中所有结点数据域值的和,作为函数值返回。请填空完善程序。

struct link { int data;

struct link *next;} main() { struct link *head; int s; ┆

s=sum(head); /*head 是指向已知单向链表的头结点*/ ┆ }

int sum( 【1】 ) {

struct link *p; int s=0; p=head->next; while(p)

{ s+= 【2】 ; p= 【3】 ; } return(s); }

二、程序填空 答案:【1】struct link *head 【2】 p->data 【3】 p->next

C语言程序设计练习题7

第10章 文 件

一、单选题

1.利用C语言的文件操作,可以把数据永久保存在:( )

A.磁盘 B.内存 C.屏幕 D.键盘

2.若有程序片段 FILE *fp; fp=fopen(“a.txt”,”r”); 则以下说法中正确的是:( )

A.fp指向磁盘文件a.txt的地址

B.fp指向磁盘文件a.txt 所对应的FILE 结构 C.如果fp不为NULL,表示文件打开失败 D.可以利用fp指针对文件a.txt进行写操作

3.fopen函数的作用是:( ) A.将文件的内容读入内存 B.读出文件的大小

C.建立与文件关联的FILE结构体变量并返回该结构体变量的地址 D.向文件写数据

4.已知fp是一个指向已打开文件的指针,ch是一个字符型变量,则ch=fgetc(fp)的作用是:( )

31

高级语言程序设计综合练习一 学号: 姓名:

A.获取键盘输入的字符,并赋值给ch

B.获取fp所指向的文件的第一个字节的内容,并赋值给ch

C.获取fp所指向的文件的当前文件位置指针所指向的一个字节的内容,并赋值给ch

D.将ch的值输出到fp所指向的文件中

6、若执行fopen函数时发生错误,则函数的返回值是________________ 。

A)地址值 B)0 C)1 D)EOF

7、若要用fopen函数打开一个新的二进制文件,该文件要求既能读也能写,则打开方式字符串应是_______。

A)”ab+” B)”wb+” C)”rb+” D)”ab”

8、若以“a+”方式打开一个已存在的文件,则以下叙述正确的是______________。

A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容删除,只可作写操作

D)以上各种说法皆不正确

9、当顺利执行了文件关闭操作时,fclose函数的返回值是_______________。

A)-1 )TURE C)0 D)1

10、已知函数的调用形式:fread (buffer,size,count,fp);其中buffer代表的是____________。

A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址

D)一个存储区,存放要读的数据项

11、fscanf函数的正确调用形式是_________________。 A)fscanf (fp,格式字符串,输出表列); B)fscanf(格式字符串,输出表列,fp); C) fscanf(格式字符串,文件指针,输出表列) D)fscanf(文件指针,格式字符串,输入表列)

12、fwrite函数的一般调用形式是______________。 A)fwrite(butter, count, size fp); B) fwrite(fp, size, count, butter);

C) fwrite(fp, count, size, butter); D) fwrite(butter, size, count, fp); 13、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____________。 A)只写 B)追加 C)读或读写 D)答案B和C都正确

14、若调用fputc函数输出字符成功,则其返回值是___________。

32

高级语言程序设计综合练习一 学号: 姓名:

A)EOF B)1 C)0 D)输出的字符

15.fclose函数的作用是:( ) A.删除文件

B.删除文件中的数据

C.释放与该文件相关联的FILE结构体变量 D.清空文件缓冲区

二、判断题

1. 2. 3. 4.

( )C语言中,认为键盘是标准输入文件stdin ( )C语言中,认为显示器是标准输出文件stdout ( )C语言中,文件存取是以字节为单位的。

( )fopen(“c:\\test.dat”,”r”)的作用是打开一个磁盘文件,此文件可以被执行写操作

5. ( )fopen(“test.txt”,”r”)表示为写操作打开一个二进制文件 6. ( )使用文件前必须先打开文件 7. ( )文件使用结束后必须关闭文件

8. ( )fputc函数的作用是把一个字符写到磁盘文件中去。

9. ( )如果文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的

信息( )。

10. ( )当文件操作完成后必须使用fclose命令关闭文件 ( )。

(第10 章 文件)参考答案

一、单选题

1 A 2 B 3 C 4 B 6 B 7 B 8 A 9 C 10 C 11 D 12 D 13 C 14 D 15 C

二、判断题

1T 2T 3T 4F 5F 6T 7T 8T 9T 10T

三.填空

1.以下程序由终端键盘输入一个文件名,然后从键盘输入一些字符,并依次把它们存放到该文件中,用#作为用户输入结束的标志。 #include #include int main() { FILE *fp;

char ch,filename[10];

printf(\请输入所用的文件名:\ scanf(\

if((fp=fopen(filename,“w”))==NULL) { printf(\无法打开此文件\\n\

33

高级语言程序设计综合练习一 学号: 姓名:

exit(0); }

ch=getchar( );

printf(“请输入一个字符串(以#结束):\ ch=getchar( ); while(ch!=‘#’) { fputc(ch,fp); putchar(ch); ch=getchar(); }

fclose(fp); putchar(10); return 0; }

34

联系客服:779662525#qq.com(#替换为@)