2024年4月27日发(作者:)

重庆邮电大学 2006-2007学年第 一 学期

程序设计基础 考试题 ( B 卷 )

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

A、if(s1>s2) B、if(a==b)

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

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

A、0?0:1 B、5%4 C、!EOF D、!NULL

线 线

题号 一 二 三 四 五 六 七 八 九 十 总分

分数

评卷人

一、 单选题(每题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%dn”,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

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、char *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("%xn",p);

printf("%xn",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("%dn",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