期末考试复习题-C语言

  • 格式:docx
  • 大小:23.46 KB
  • 文档页数:12

期末考试复习题-C语言

一、单选题(每题1分共三十分)

1、以下叙述不正确的是 D 。

A、一个C源程序可由一个或多个函数组成

B、一个C源程序必须包含一个main函数

C、C程序的基本组成单位是函数

D、在C程序中,注释说明只能位于一条语句的后面

2、下列运算符中,优先级最高的是_A____。

A、->

B、++

C、&&

D、=

3、表达式!(x>0&&y>0) 等价于__A__。

A、!(x>0)||!(y>0)

B、!x>0||!y>0

C、!x>0&&!y>0

D、!(x>0)&&!(y>0)

4、设有说明;char w;int x;float y;double z;则表达式w-x+z-y值的数据

类型为 D 。

A、float

B、char

C、int

D、double.

5、能正确表示“当x取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 B 。

A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)

C、(x>=1)||(x<=10)||(x>=200)||(x<=210) D、(x>=1)&&(x<=10)||(x>=200)||(x<=210)

6、以下程序的运行结果是 D 。

main()

{int k=4,a=3,b=2,c=1;

printf(“\n%d\n”,k

A、4

B、3

C、2

D、1

7、语句while(!E);中的表达式!E等价于 A 。

A、E= =0

B、E!=1

C、E!=0

D、E= =1

8、判断字符串s1是否大于字符串s2,应当使用 D 。

A、if(s1>s2)

B、if(a==b)

C、if(strcpy(s2,s1)>0)

D、if(strcmp(s1,s2)>0)

9、表达式__C__的值不是1。

A、0?0:1

B、5%4

C、!EOF

D、!NULL

10、以下有关函数的形参和实参的说法中正确的是 A 。

A、实参和与其对应的形参各占用独立的存储单元

B、实参和与其对应的形参各占用一个的存储单元

C、只有当实参和与其对应的形参同名时才占用一个的存储单元

D、形参是虚拟的,不占用存储单元

11、以下有关宏替换的叙述不正确的是 D 。 A、宏替换不占用运行时间

B、宏名无类型

C、宏替换只是字符替换

D、宏名必须用大写字母表示

12、下面判断正确的是 C 。

A、char *a=”china”;等介于char *a;*a=”china”;

B、char str[10]={”china”};等介于char

str[10];str[]={”china”};

C、cha r *s=”china”;等介于char *s;s=”china”;

D、char *s=”china”;等介于char s[10];*s=”china”;

13、设p1和p2是指向同一个字符串的指针变量,,c为字符变量,则以下不能正确执行赋值语句的是 B 。

A、c=*p1+*p2

B、p2=c

C、p1=p2

D、c=*p1*(*p2)

14、函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为 A 。

int f(int m)

{ static int i=0;int s=0;

for(;i<=m;i++) s+=i;return s;

}

A、 21

B、 16

C、 15

D、 8

15、声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是 A 。

A、*(a[2]+1)

B、a[9] C、*(a[1]+2)

D、*(*(a+2))+1

16、设有如下定义:

int (*ptr)();

则以下叙述中正确的是C 。

A、ptr是指向一维组数的指针变量

B、ptr是指向int型数据的指针变量

C、ptr是指向函数的指针,该函数返回一个int型数据

D、ptr是一个函数名,该函数的返回值是指向int型数据的指针

17、设有以下宏定义:

#define N 3

#define Y(n) ( (N+1)*n)

则执行语句:z=2 * (N+Y(5+1));后,z的值为 D 。

A、出错

B、42

C、48

D、54

18、给出以下定义:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为 C 。

A、数组x和数组y等价

B、数组x和数组y的长度相同

C、数组x的长度大于数组y的长度

D、数组x的长度小于数组y的长度

19、若有以下说明:

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

则数值为6的表达式是 C 。

A、*p+6

B、*(p+6) C、*p+=5

D、p+5

20、不能把字符串:Hello!赋给数组b的语句是 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!";

21、main()

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

p=a;

printf("%x\n",p);

printf("%x\n",p+9); }

该程序有两个printf 语句, 如果第一个printf 语句输出的是194,

则第二个printf语句的输出结果是D 。

A、203

B、204

C、1a4

D、1a6

22、左移运算:int a=16,c=a<<2; 变量c的值是。

A、67

B、4

C、1

D、64

23、数组定义为“int a[4][5];”,引用“a[1]+3”表示 A 。

A、a数组第2行第4列元素的地址

B、a数组第2行第4列元素的值

C、a数组第4行的首地址

D、a数组第1行第4列的首地址

24、定义带参数的宏“#define jh(a,b,t) t=a;a=b;b=t”,使两个参数a、b的值交换,下列表述中哪个是正确的 D 。 A、不定义参数a和b将导致编译错误

B、不定义参数a、b、t将导致编译错误

B、不定义参数t将导致运行错误 D、不必定义参数a、b、t类型

25、下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是 B 。

A、if(u>s)t=u; t=s;

B、t=s; if(u>s)t=u;

C、if(u>s)t=s; else t=u;

D、t=u; if(u>s)t=s;

26、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 A 。

main( )

{ int x;

scanf("%d",&x);

if(x + + 〉5)printf("%d",x);

else printf("%d\n",x - -); }

A、7和5

B、6和3

C、7和4

D、6和4

27、char *aa[2]={"abcd","ABCD"};

则以下就法中正确的是 D 。

A、aa数组元素的值分别是"abcd"和ABCD"

B、aa是指针变量,它指向含有两个数组元素的字符型一维数组

C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D、aa数组的两个元素中各自存放了字符'a'和'A'的地址

28、int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是D 。 A、*((*prt+1)[2])

B、*(*(p+5))

C、(*prt+1)+2

D、*(*(a+1)+2)

29、下列程序的输出结果是 D 。

main( )

{ char*p1,*p2,str[50]="xyz";

p1="abcd";

p2="ABCD";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str); }

A、xyabcAB

B、abcABz

C、ABabcz

D、xycdBCD

30、struct stu

{ int num;

char name[10];

int age; };

void fun(struct stu *p)

{ printf("%s\n",(*p).name); }

main()

{ struct stu students[3]={ {9801,"Zhang",20},

{9802,"Wang",19},

{9803,"Zhao",18} };

fun(students+2); }

输出结果是 B 。

A、Zhang

B、Zhao

C、Wang