北京建筑大学C语言程序设计模拟

本试卷为北京建筑大学C语言程序设计模拟,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言程序设计模拟

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、#define能作简单的替代,用宏来替代计算多项式5*X*x 4-5*x+5的值的函数f,正确的宏定义语句为( )。
A、#define f(x) 5*x*x+5*X+5
B、#define f5*x*x+5*x+5
C、#define f(a) (5*a”a+5*a+5)
D、#define(5*x*x+5+x+5) f(x)
(  C  )
2、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
A、两个语句都是将变量a的值赋予变量P
B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D、两个语句都是使P指向变量a
(  A  )
3、以下选项中不合法的用户标识符是________。
A、abC.C
B、file
C、Main
D、PRINTF
(  D  )
4、以下关于字符串的叙述中正确的是________。
A、c语言中有字符串类型的常量和变量
B、两个字符串中的字符个数相同时才能进行字符串大小的比较
C、可以用关系运算符对字符串的大小进行比较
D、空串一定比空格打头的字符串小
(  B  )
5、已知大写字母a的ascil码是65,小写字母a的acsii码是97。下列能将变量c中的大写字母转换为对应小写字母的语句是________。
A、c=(c-'A')%26+'A'
B、C=c+32
C、c=c-'A'+'A'
D、c=('A'+C)%26—'a'
(  C  )
6、avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明语句错误的是________。
A、int avg(int*a,int n);
B、int avg(int a[lO],int n);
C、int avg(int a,int n);
D、int avg(int a[],int n);
(  C  )
7、以下说法中正确的是________。
A、C语言程序总是从第一个的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
(  D  )
8、下列程序的输出结果是________。
char *p1="abcd", *p2="abcd", str[50]="xyz"; strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A、xyabcAB
B、abcABz
C、ABabcz
D、xycdBCD
(  C  )
9、c语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:
A、必须为字母
B、必须为下划线
C、必须为字母或下划线
D、可以是字母,数字或下划线中的任意一种
(  D  )
10、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
A、p=1;
B、*q=2;
C、q=p;
D、*p=5;
(  D  )
11、英文小写字母d的ascii码为100,英文大写字母d的ascii码为
A、50
B、66
C、52
D、68
(  C  )
12、c语言程序从 开始执行。
A、程序中第一条可执行语句
B、程序中第一个函数
C、程序中的main函数
D、包含文件中的第一个函数
(  B  )
13、设 p1 和 p2 是指向同一个 int 型一维数组的指针变量, k 为 int 型变量,则不能正 确执行的语句是______。
A、k=*P1+*P2;
B、p2=k;
C、P1=P2;
D、k=*P1 * ( *P2 ) ;
(  A  )
14、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  B  )
15、一个c语言程序是由
A、一个主程序和若干子程序组成
B、函数组成
C、若干过程组成
D、若干子程序组成
(  D  )
16、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
A、i=6,j=5
B、i=5,j=5
C、i=6,j=4
D、i=5,j=6
(  C  )
17、设以下变量均为int类型,表达式的值不为7的是________。
A、(x=y=6,x+y,x+1)
B、(x=y=6,x+y,y+1)
C、(x=6,x+1,y=6,x+y)
D、(y=6,y+1,x=y,x+1)
(  C  )
18、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  C  )
19、执行以下程序段后,w的值为________。
int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
A、-1
B、NULL
C、1
D、0
(  D  )
20、已知:char s[100]; int i; 则引用数组元素的错误的形式是________。
A、s[i+10]
B、*(s+i)
C、*(i+s)
D、*((s++)+i)
(  C  )
21、若有说明语句:int i,x[3][4]; 则不能将x[1][1]的值赋给变量i的语句是______。
A、i=*(*(x+1)+1)
B、i=x[1][1]
C、i=*(*(x+1))
D、i=*(x[1]+1)
(  A  )
22、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  B  )
23、以下选项中与if(a==1)a=b; else a++; 语句功能不同的switch语句是________。
A、switch (a)
case 1:a=b; break;
default: a++;
B、switch(a==1)
case 0:a=b; break;
case 1:a++;
C、switch(a)
default: a++; break;
case 1:a=b;
D、switch(a==l)
case 1:a=b;break;
case 0:a++:
(  A  )
24、设有声明语句:char a='\72'; 则变量a________。
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、声明不合法
(  C  )
25、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
A、cde
B、字符'c'
C、字符'c'的地址
D、无确定的输出结果
(  B  )
26、有以下程序
#include<string.h>
main()
{
char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcat(p,r);
strcpy(p+strlen(q),q);
printf("%d\n",strlen(p));
}
程序运行后的输出结果是________。
A、9
B、6
C、11
D、7
(  B  )
27、在c语言中,设有数组定义:char array[]="china"; 则数组array所占用的空间为________。
A、5个字节
B、6个字节
C、10个字节
D、12个字节
(  B  )
28、若有定义语句:char s[10]="1234567\0\0"; 则strlen(s)的值是________。
A、7
B、8
C、9
D、10
(  A  )
29、以下程序的运行结果是________。
#include <stdio.h>
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=null;
*q=8(p+5);
printf("%d %d\n", *p,*q);
}
A、运行后报错
B、6 6
C、6 11
D、5 5
(  A  )
30、设有如下说明:
typedef struct
{
int n;
char c;
double x;
}
std;
则以下选项:能正确定义结构体数组并赋初值的语句是________。
A、STDtt[2]={{1,'A',62},{2,'B',75}};
B、STDtt[2]={1,"A",62,2,"B",75};
C、struet tt[2]={{1,'A'},{2,'B'}};
D、struct tt[2]={{1,"A",62.5},{2,"B",75.0}};
(  D  )
31、有以下程序:
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[]) {
int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
prinff("%d\n",len);
}
此程序经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行: ex abed efg h3 k44 则执行后的输出结果时________。
A、14
B、12
C、8
D、6
(  C  )
32、以下关于链式存储结构的叙述中哪一条是错误的?
A、结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B、逻辑上相邻的结点物理上不必邻接
C、可以通过计算直接确定第i个结点的存储地址
D、插入、删除运算操作方便,不必移动结点
(  D  )
33、以下程序的输出结果是________。
void main() float a: a=1/100000000;
printf("%g",a);
A、0.00000e+00
B、0.0
C、1.00000e-07
D、0
(  A  )
34、以下选项中,合法的实数是________。
A、1.5E2
B、E1.1
C、2.10E
D、1.9E1.4
(  A  )
35、有以下程序段int m=0,n=0;
char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10a10↙,则输出结果是______。
A、10,A,10
B、10,a,10
C、10,a,0
D、10,A,0
(  D  )
36、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A、0
B、1
C、2
D、3
(  A  )
37、在int a[ ][3] = {{1,4}, {3,2}, {4,5,6}, {0}};
中,a[2][1]的值是________。
A、5
B、0
C、6
D、2
(  B  )
38、若变量a是unsigned int型,二进制赋值为1000000010001111,则a=a>>2结果是________。
A、1000000010001111
B、0010000000100011
C、0000001000111100
D、0000000010001110
(  B  )
39、关于 c 语言的符号常量,以下叙述中正确的是________。
A、符号常量的符号名是标识符,但必须大写
B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
C、符号常量在整个程序中其值不能再被重新定义
D、符号常量的符号名必须是常量
(  D  )
40、以下叙述中正确的是________。
A、复合语句在语法上包含多条语句,其中不能定义局部变量
B、花括号对只能用来表示函数的开头和结尾,不能用于其他目的
C、空语句就是指程序中的空行
D、当用 scanf 从键盘输入数据时,每行数据在没按下回车键(Enter 键)前,可以任意修改
(  B  )
41、以下标识符中,不能作为合法的c用户定义标识符的是________。
A、a3_b3
B、void
C、_123
D、IF
(  D  )
42、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10}
, *p=a;
不能表示a数组元素的表达式是________。
A、*p
B、a[9]
C、*p++
D、a[*p-a]
(  B  )
43、下列数据中属于"字符串常量"的是________。
A、ABC
B、"ABC"
C、'ABC'
D、'A'
(  B  )
44、设有以下程序段: int k=0;
while(k=1) k--;
则以下叙述中正确的是________。
A、while 循环执行一次
B、该循环是无限循环
C、循环体语句一次也不执行
D、该循环有语法错误
(  D  )
45、若int类型占两个字节,则以下语句输出为________。 int k=-1;
printf("%d,%u\n",k,k);
A、-1,-1
B、-1,65536
C、-1,32768
D、-1,65535
(  C  )
46、下列选项中,与i=j++完全等价的表达式是________。
A、j=j+1,i=j
B、i=++j
C、i=j, j=j+1
D、j+=i
(  B  )
47、以下有关switch语句的正确说法是________。
A、break语句是语句中必须的一部分
B、在switch 语句中可以根据需要使用或不使用break语句
C、break语句在switch 语句中不可以使用
D、在switch 语句中的每一个case都要用break语句
(  C  )
48、下面正确的字符常量是________。
A、"c"
B、'\\''
C、'W'
D、""
(  C  )
49、如下说法不正确的是________。
A、c>a+b 等效于c>( a+b)
B、若a,b 均为真,则a||b 为真
C、表达式'c'&&'d' 的值为0
D、逻辑运算符!比逻辑运算符||的优先级高
(  C  )
50、以下程序段中,能够正确地执行循环的是()。
A、for(i=1;i>10;i++)
B、static int a;while(a)
C、int s=6; do s-=2; while(s);
D、int s=6;m:if(s<100)exit(0);else s-=2;goto m: