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

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

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