长江师范学院往年计算机C语言测试卷

本试卷为长江师范学院往年计算机C语言测试卷,题目包括:单项选择题,判断题,编程题。

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

计算机C语言测试卷

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

(  D  )
1、下面是有关c语言字符数组的描述,其中错误的是________。
A、不可以用赋值语句给字符数组名赋字符串
B、可以用输入语句把字符串整体输入给字符数组
C、字符数组中的内容不一定是字符串
D、字符数组只能存放字符串
(  A  )
2、设有定义:int n1=0,n2,*p=&n2,*q=&n1; ,以下赋值语句中与n2=n1; 语句等价的是________。
A、*p=*q;
B、p=q;
C、*p=&n1;
D、p=*q;
(  D  )
3、有以下定义和语句
struct workers
{
int num;
char name[20];
char c;
srruct
{
int day;
int month;
int year;
}
s;
};
struct workers w,*pw;
pw=&w 能给w 中year 成员赋1980 的语句是________。
A、*pw.year=1980;
B、w.year=1980;
C、pw->year=1980;
D、w.s.year=1980;
(  D  )
4、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
A、struct是结构体类型的关键字
B、struct student 是用户定义的结构体类型
C、num, score都是结构体成员名
D、stu是用户定义的结构体类型名
(  A  )
5、若 x 和 y 都是 int 型变量 ,x=100,y=200, 且有下面的程序片段 : printf("%d",(x,y)); 上面程序片段的输出结果是 _________.
A、200
B、100
C、100 200
D、输出格式符不够 , 输出不确定的值
(  D  )
6、以下程序的输出结果是 ___________.
main( )
{
int a=100;
if (a>100) printf("%d\n",a>100);
else printf("%d\n",a<=100);
}
A、a<=100
B、100
C、0
D、1
(  B  )
7、有如下函数调用语句 func(rec1,rec2+rec3,rec4, rec5); 该函数调用语句中 , 含有的实参个数是 __________.
A、3
B、4
C、5
D、有语法错误
(  B  )
8、下列选项中均属于c语言合法的标识符是________。
A、Int
#sub
break
B、_3ab
FOR
Long
C、3a
printf
a_b
D、WORD
auto
include
(  B  )
9、若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10 },*ia=a; 则不能正确表示a数组元素的表达式是 ______。
A、*ia
B、a[10]
C、*a
D、a[ia-a]
(  C  )
10、以下叙述错误的是________。
A、C语言区分大小写
B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改
C、整数和实数都能用C语言准确无误地表示出来
D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示
(  D  )
11、已知:char s[100]; int i; 则引用数组元素的错误的形式是________。
A、s[i+10]
B、*(s+i)
C、*(i+s)
D、*((s++)+i)
(  B  )
12、下列关于自动类型转换的说法中,正确的是________。
A、操作数1是byte类型,操作数2是long类型,结果为byte类型
B、操作数1是byte类型,操作数2是long类型,结果为long类型
C、操作数1是long类型,操作数2是byte类型,结果是byte类型
D、操作数1是long类型,操作数2是byte类型,结果是long类型
(  A  )
13、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
A、011122
B、012
C、012020
D、120
(  B  )
14、有如下程序:
#include <stdio.h>
long fib(int n) {
if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{
printf("%d\n",fib(3));
}
该程序的输出结果是________。
A、2
B、4
C、6
D、8
(  B  )
15、已知英文字母m的ascii码值为6dh,那么字母q的ascii码值是________。
A、70H
B、71H
C、72H
D、6FH
(  D  )
16、如下程序,输入错误的为:
void main()
{
int a;
int b;
scanf("%d%d",&a,&b);
printf("%d %d",a,b);
}
A、1【空格】2【回车】
B、1【 Tab】2【回车】
C、1【回车】2【回车】
D、1【分号】2【回车】
(  D  )
17、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
A、大写字母
B、下划线
C、数字字符
D、连接符
(  C  )
18、整型变量x=1,y=3,经下列计算后,x的值不等于6的是________。
A、x=(x=1+2,x*2)
B、x=y>2?6:5
C、x=9-(--y)-(y--)
D、x=y*4/2
(  B  )
19、下面用户自定义的标识符中,合法的是________。
A、break
B、Volume_1
C、4s
D、a+b
(  B  )
20、设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是____
A、b=1.0/a
B、b=(float)(1/a)
C、b=1/(float)a
D、b=1/(a*1.0)

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、c 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .exe 的文件。 ( ) 
(   T  )
2、c语言中,所有的变量在使用前都必须先声明。 
(   T  )
3、关系表达式的值是一个逻辑值,即"真"或"假",并且用0表示"假",用1表示"真"。 
(   T  )
4、用strcat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间必须足够大。 
(   T  )
5、c 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。 
(   T  )
6、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。 
(   F  )
7、将int型变量x转换为float型应:float(x); 
(   T  )
8、使用strcpy(字符数组,字符串)函数时,字符数组长度必须足够大。 
(   F  )
9、for循环的三个表达式可以任意省略,while,do-while也是如此。 
(   F  )
10、有指针变量p和数组a,指针变量和数组都可以实现本身的值的改变,如p++和a++ 

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
2、编写程序:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
3、编程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入当输入数据为-1时表示输入结束,使用结构体实现。