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

更新时间:2023-12-20 22:23:01 阅读量: 教育文库 文档下载

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

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

一、选择题

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

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

二、判断题

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

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

c)char str[20]; d)char str[20],*p=str; 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(\); }

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; float x; float x;

27

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

} ; };

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]; char sex;

D:n=a 29

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

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

二、程序填空

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

30

本文来源:https://www.bwwdw.com/article/2wb5.html

Top