大连交通大学计算机C语言期末

本试卷为大连交通大学计算机C语言期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言期末

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

(  B  )
1、若变量已正确定义并赋值,符合c语言语法的表达式是________。
A、a=a+7:
B、a=7+b+e,a++
C、int(12.3%4)
D、a=a+7=c+b
(  C  )
2、有以下程序
typedef struct
{
char name[9];
char sex;
float score [2];
} stu;
stu f(stu a) {
stu b={"zhao", 'm', 85.0, 90.0};
int i;
strcpy(a.name, b.name);
a.sex=b.sex:;
for(i=0;i<2;i++) a.score[i]=b.score[i];
return a:
}
main() {
stu c=
{
"qian", 'f', 95.0, 92.0
};
stu d=f(c);
printf("%s, %c, %2.0f, %2.0f", d.name, d.sex, d.score[0], d.score[1]); ) 程序的运行结果是________。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,m,85,90
D、Zhao,f,95,92
(  C  )
3、对两个数组a和b进行下列初始化: char m[]="1234567"; char n[]={'1','2’,'3','4','5','6','7'};则下列叙述正确的是________。
A、数组in与数组n完全相同
B、数组m与数组n长度相同
C、数组m比数组n长1
D、数组m与数组n中都存放字符串
(  C  )
4、若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是________。
int[3][3],*pt[3],k;
for(k=0;k<3;k++)
pt[k]-&t[k][0];
A、t[2]Eo]
B、t[2][2]
C、tell[2]
D、t[2][1]
(  A  )
5、有以下程序:
main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
}
printf("%d\n",c);
}
程序运行后的输出结果是________。
A、3
B、5
C、7
D、9
(  C  )
6、设有数组定义:char array[]="student"; 则数组所占的存贮空间为________。
A、6个字节
B、7个字节
C、8个字节
D、9个字节
(  D  )
7、以下叙述中不正确的是________。
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效
(  D  )
8、c语言对嵌套的if语句的规定是:else总是与 配对。
A、与之前最近的if
B、第一个if
C、缩进位置相同的if
D、与之前最近的且尚未配对的if
(  C  )
9、计算机内部运算使用的数是________。
A、十进制数
B、十六进制数
C、二进制数
D、八进制数
(  B  )
10、下面的程序
main()
{
int x=3;
do
{
printf("%d\n",x-=2);
}
while(!(--x));
}
A、输出的是1
B、输出的是1和-2
C、输出的是3和0
D、是死循环
(  B  )
11、以下能正确定义且赋初值的语句是________。
A、int n1:=n2:=10;
B、char c=32;
C、float f=f+1.1;
D、double x=12.3E2.5;
(  A  )
12、以下程序片段( ) 。
main ( )
{
int x=0,y=0,z=0;
if (x=y+z) printf("***");
else printf("###");
}
A、输出:###
B、输出:***
C、可以编译,但不能通过连接,所以不能运行
D、有语法错误,不能通过编译
(  B  )
13、有以下程序
#include <stdio.h>
main()
{
char s[]={"012xy"};
int i,n=0;
for(i=0;s[i]!=0;i++) if(s[i]>'a'&&s[i]<='z') n++;
printf("%d\n",n);
}
程序运行后的输出结果是________。
A、0
B、2
C、3
D、5
(  A  )
14、有以下程序
#include <stdio.h>
main()
{
char *a[ ]={"abcd","ef","gh","ijk"};
int i;
for(i=0;i<4;i++) printf("%c",*a[i]);
}
程序运行后输出的结果是________。
A、aegi
B、dfhk
C、abcd
D、abcdefghijk
(  C  )
15、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
(  C  )
16、c 语言的程序一行写不下时,可以 。
A、用逗号换行
B、用分号换行
C、在任意一空格处换行
D、用回车符换行
(  D  )
17、若有以下定义和语句: double r=99 , *p=&r ; *p=r ; 则以下正确的叙述是______。
A、以下两处的 *p 含义相同,都说明给指针变量 p 赋值
B、在 "double r=99,*p=&r ; " 中,把 r 的地址赋值给了 p 所指的存储单元
C、语句 "*p=r ; " 把变量 r 的值赋给指针变量 p
D、语句 "*p=r ; " 取变量 r 的值放回 r 中
(  D  )
18、已知小写英文字母"a"的ascii码值为61h,现字母"g"被存放在某个存储单元中,若采用偶校验(假设最高位作为校验位),则该存储单元中存放的十六进制数是______。
A、66H
B、E6H
C、67H
D、E7H
(  D  )
19、在下面语句中,其含义为"p为指向含n个元素的一维数组的指针变量"的定义语句是________。
A、int p [n]
B、int * p( );
C、int * p(n);
D、int( * p)[n]
(  A  )
20、下列关于指针运算的描述中,错误的是________。
A、在一定条件下,两个指针可以相加
B、在一定条件下,两个指针可以进行逻辑判断
C、在一定条件下,指针可以为空值
D、在一定条件下,两个指针可以相互赋值
(  D  )
21、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。
A、只读
B、追加
C、读或读写
D、以上均正确
(  B  )
22、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
A、算术表达式
B、字符串
C、单精度实型数
D、双精度实型数
(  C  )
23、排序的重要目的是为了以后对已排序的数据元素进行________。
A、打印输出
B、分类
C、查找
D、合并
(  D  )
24、以下正确的说法是______。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共用一个存储单元
C、只有当实参和与其对应的形参同名时才共用存储单元
D、型参是虚拟的,函数在没有被调用时,不占用存储单元
(  B  )
25、下列关于c语言用户标识符的叙述中正确的是________。
A、用户标识符中可以出现下划线和中划线(减号)
B、用户标识符中不可以出现中划线,但可以出现下划线
C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
(  C  )
26、在下列选项中,没有构成死循环的程序段是________。
A、int i=100;
for(;;) {
i=i%10+1;
if(i>10)
break;
}
B、while(1);
C、int k=0;
do
{
++k;
}
while(k<=10);
D、int s=12;
while(s);
--s;
(  D  )
27、以下选项中,能用作数据常量的是________。
A、018
B、011
C、0.8e2.5
D、25L
(  B  )
28、int a[5],*p=a; 对a数组元素地址的正确引用是________。
A、p+5
B、&a[0]
C、&a+1
D、*a+1
(  A  )
29、以下不合法的字符常量是________。
A、'\018'
B、'\'"
C、'\\'
D、'\xcc'
(  C  )
30、有以下函数: int fun(char *x, char *y)
{
int n=0;
while((*x==*y)&&*x!=’\0’)
{
x++;
y++;
n++;
}
return n;
}
函数的功能是________。
A、将y所指字符串赋给x所指存储空间
B、查找x和y所指字符串中是否有’\0’
C、统计x和y所指字符串中最前面连续相同的字符个数
D、统计x和y所指字符串中相同的字符个数
(  B  )
31、以下程序的输出结果是
fun(int x, int y) return(x+y);
main()
{
int a=1, b=2, c=3, sum;
sum=fun((a++, b++, a+b), c++);
printf("%d", sum);
}
A、9
B、8
C、7
D、6
(  D  )
32、以下语句或语句组中,能正确进行字符串赋值的是________。
A、char *sp; *sp="right!";
B、char s[10]; s="right!";
C、char s[10]; *s="right!";
D、char *sp="right!";
(  D  )
33、若有定义:char*x="abcdefghi"; 以下选项中正确运用了strcpy函数的是______。
A、char y[10];strcpy(y,x[4]);
B、char y[10];strcpy(++y,&x[1]);
C、char y[10],*s;strcpy(s=y+5,x);
D、char y[10],*s;strcpy(s=y+1,x+1);
(  D  )
34、判断字符串s1是否大于字符串s2,应当使用 。
A、if (s1>s2)
B、if (strcmp(s1,s2))
C、if (strcmp(s2,s1)>0)
D、if (strcmp(s1,s2)>0)
(  B  )
35、c语言中下面哪个不是循环语句?
A、do while
B、if
C、while
D、for
(  C  )
36、下列标识符,不合法的是________。
A、abc
B、_d
C、123
D、e1
(  B  )
37、若有说明:inta,b=2,*p=&a; 则能完成a=b赋值功能的语句是______。
A、a=*p;
B、*p=*&b;
C、a=&b;
D、a=**p;
(  B  )
38、若变量已正确说明为float类型,要通过语句 scanf("%f %f %f",&a,&b,&c); 给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是________。
A、10 22 33
B、10.0,22.0,33.0
C、10.0 22.0 33.0
D、10<回车>22<回车>33<回车>
(  D  )
39、表达式 *((int *)(p+1)+2)的值时_______.
static struct
{
int x, y[3];
}
a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p;
p = a+1;
A、3
B、7
C、10
D、11
(  A  )
40、下列c语言程序段中关于while循环体正确的说法是inti=1;
while(5)
{
i++;
if(i>3)break;
}
A、三次循环
B、四次循环
C、五次循环
D、六次循环
(  D  )
41、语句 fread(buffer,size, count,fp); 其中 buffer 代表的是________。
A、一个整型变量,代表要读入的数据项总数
B、一个指向所读文件的文件指针
C、存放读入数据项的存储区长度
D、存放读入数据的地址
(  C  )
42、以下叙述中正确的是________。
A、由 printf 输出的数据都隐含左对齐
B、scanf 和 printf 是 C 语言提供的输入和输出语句
C、赋值语句是一种执行语句,必须放在函数的可执行部分
D、由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
(  C  )
43、以下叙述中正确的是________。
A、对于逻辑表达式:a++||b++,设 a 的值为 1,则求解表达式的值后,b的值会发生改变
B、对于逻辑表达式:a++&&b++,设 a 的值为 0,则求解表达式的值后,b的值会发生改变
C、else 不是一条独立的语句,它只是 if 语句的一部分
D、关系运算符的结果有三种:0,1,-1
(  B  )
44、下面选项中合法的字符常量是________。
A、"X"
B、'X'
C、'abc'
D、'\'
(  C  )
45、下列定义不正确的是________。
A、#define PI 3.141592
B、#define S 345
C、int max(x,y); int x,y; { }
D、static char c;
(  D  )
46、下列运算符中是c语言关系运算符的是________。
A、~
B、!
C、&
D、!=
(  D  )
47、设变量定义为"int a, b;
",执行下列语句时,输入(),则a和b的值都是10.\n scanf("a=%d, b=%d",&a, &b);
A、10 10
B、10, 10
C、a=10 b=10
D、a=10, b=10
(  D  )
48、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  A  )
49、char a[]="This is a program.";输出前 5 个字符的语句是()。
A、printf("%.5s",a);
B、puts(a);
C、printf("%s",a);
D、a[5*2]=0;puts(a);
(  B  )
50、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);