C语言程序设计第2阶段练习题

更新时间:2024-03-18 10:22:01 阅读量: 综合文库 文档下载

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

江南大学现代远程教育 第二阶段测试卷

考试科目:《C语言程序设计》第七章至第九章(总分100分) 时间:90分钟

学习中心(教学点) 批次: 层次: 专业: 学号: 身份证号: 姓名: 得分:

一、单项选择题(本题共20小题,每小题2分,共40分。)

1、若有以下说明和语句,则输出结果是( )。 char sp[]=\printf(\

A、3 B、5 C、1 D、字符串中有非法字符,输出值不定

2、 若有变量说明:char s,s1[20];执行语句:s=\正确的叙述是( )。 A、二个语句都不正确

B、s所指向的字符串和s1的值都是\C、第一个语句正确,而第二个语句不正确 D、第二个语句正确,而第一个语句不正确

3、 变量的有效范围与其定义位置有关,( ),其作用域在整个源程序文件中都有效。 A、在第一个函数中定义的变量 B、在定义第一个函数之前所定义的变量 C、在主函数中定义的变量 D、在函数中定义的静态变量 4、若程序中定义了以下函数

double myadd(double a,double B) { return (a+B) ;}

并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 ( )。

A、 double myadd(double a,B) ; B、 double myadd(double,double); C、 double myadd(double b,double A) ; D、 double myadd(double x,double y);

1

5、有以下程序

void f(int v , int w) { int t; t=v;v=w;w=t; } main( )

{ int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\\n”,x,y,z); }

执行后输出结果是( )。 A、 1,2,3

B、 3,1,2

C、 1,3,2 D、 2,3,1

6、函数调用可以……,以下错误的是( )。 A、出现在执行语句中

B、出现在一个表达式中

C、作为一个函数的实参

D、作为一个函数的形参

7、若有宏定义与变量说明如下:

#define X 5 #define Y X+1 #define Z Y*X/2 int a; a=Y;

则执行以下printf语句后输出的结果是( )。 Printf(\A、7 5

B、12 6

C、12 5

D、7 6

8、下列说法不正确的是( )。

A、宏替换不占用运行时间 B、宏无类型

C、宏替换只是字符替换 D、宏名必须用大写字母表示

9、数组名作为参数传递给函数,此时作为实在参数的数组名被处理为(A、该数组的长度 B、该数组的元素个数 C、该数组中各元素的值 D、该数组的首地址 10.执行完下面的程序段后,屏幕显示的内容为( )。 main() { int a=2,i;

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

2

。 ) } f(int a) { int b=0; static int c=3; b++; c++;

return(a+b+c); }

A、777 B、7 7 7 C、789 D、7 8 9 11、以下描述中,正确的是( )。 A、调用函数时,实参可以是表达式 B、调用函数时,将为形参分配内存单元 C、调用函数时,实参与形参的原型必须一致 D、调用函数时,实参与形参可以用内存单元 12、以下能正确定义一维数组的选项是( )。 A、 int num []; int num[N];

13、有两个字符数组a,b,则以下正确的输入语句是( )。 A、gets (a,b);

B、scanf (\

D、gets (\

C、scanf (\ A、字符数组可以存放字符串

B、字符数组的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符\对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符串进行比较

15、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )。 A、float型

B、int型

C、long型

D、double型

16、在C语言中,引用数组元素时,其下标的数据类型允许是( )。 A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式

17、C语言中函数能否嵌套调用和递归调用?以下说法正确的是( )。 A、二者均不可 B、前者可,后者不可 C、前者不可,后者可 D、二者均可

3

B、 #define N 100 int num [N]; D、 int N=100;

C、 int num[0..100];

14、下述对C语言字符数组的描述中错误的是( )。

18、有语句char str1[10],str2[10]={\则能将字符串books赋给数组str1的正确语句是( )。

A、str1={\、strcpy(str1,str2); C、str1=str2; D、strcpy(str2,str1); 19、以下函数调用中有( )个实参。 expd((a1,a2,a3),(a4,a5),a7,a8)

A、4个 B、3个 C、8个 D、5个

20、C语言的编译系统对宏命令是( )时候处理的。 A、在程序运行 B、在程序连接时

C、和源程序其它C语言同时进行编译时 D、对源程序其它成份正式编译之前进行处理的

二、填空题(本题共8小题,每空2分,共30分)

1、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 。 2、在C语言中,二维数组元素在内存中的存放顺序是按 存放的。

3、下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:

1 2 3 4 1 5 9 13

5 6 7 8 2 6 10 14 当 A= 9 10 11 12 则 A’= 3 7 11 15 13 14 15 16 4 8 12 16 请填空

#define N 4

void rotate(int a[][N]) { int i,j,t;

for(i=0;i

for(j=0; ;j++) { t=a[i][j]; ; a[j][i]=t; } }

4、以下程序实现从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若字符不在,则打印**。请完善以下程序。 #include”stdio.h” #include”string.h” main( )

{ char str[100],ch;

int bot=0,top,mid,flag=0; gets(str);

4

getchar(ch); top= ; while((top-bot)>=0) { mid= ; if(str[mid]==c)

{ ; ;} else if(str[mid]

top= ;

}

if(flag)

printf(“%c字符在已知字符串中位置是%d\\n”,c,mid+1); else

printf(“**”);}

5、以下函数的功能是删除字符串s中的所有数字字符。请填空。

void dele(char s[]) { int n=0,i; for(i=0,s[i];i++) if( ) s[n++]=s[i]; s[n]= ; }

6、执行以下程序后,输出的结果是 。 int m = 10 ;

int f (int x, int y) { int m = 5 ; m += x*y ; return m ; } main( )

{ int a = 6, b = 7 ;

printf (“%d\\n”, f(a,b) / m) ; }

7、以下程序运行后的输出结果是 。

#define SQR(x) x*x main()

{ int a,k=3;

a=++SQR(k+1);

printf(\;} 8、有以下程序

5

本文来源:https://www.bwwdw.com/article/0z28.html

Top