黑龙江八一农垦大学历年计算机C语言期末题库

本试卷为黑龙江八一农垦大学历年计算机C语言期末题库,题目包括:单项选择题,判断题,编程题。

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

计算机C语言期末题库

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

(  B  )
1、若二维数组a有m列,则在a[i][j]前的元素个数为( )。
A、i*m+j-1
B、i*m+j
C、j*m+i
D、i*m+j+1
(  C  )
2、下列程序的输出结果是________。
main( )
{
int i, j, m=0, n=0;
for(i=0; i<2; i++) for(j=0; j<2; j++) if (j>=i) m=1;
n++;
printf("%d \n",n);
}
A、4
B、2
C、1
D、0
(  B  )
3、有以下程序
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
main( )
{
struct node *p,*q,*r;
int sum=0;
p=(struct node *)malloc(sizeof(struct node));
q=(struct node *)malloc(sizeof(struct node));
r=(struct node *)malloc(sizeof(struct node));
p->num=1;
q->num=2;
r->num=3;
p->next=q;
q->next=r;
r->next=null;
sum+=q->next->num;
sum+=p->num;
printf("%d\n",sum);
}
执行后的输出结果是________。
A、3
B、4
C、5
D、6
(  B  )
4、若已定义实参数组 int a[3][4]= { 2,4,6,8,10 }; 则在被调用函数 f 的下述定义中,对形参数组 b 定义正确的选项是 __________.
A、f(int b[ ][6])
B、f(b) int b[ ][4];
C、f(int b[3][ ]);
D、f(b) int b[4][5];
(  D  )
5、下列关于do…while语句的叙述中正确的是________。
A、do…while语句所构成的循环不能用其他语句构成的循环来代替
B、do…while语句所构成的循环只能用break语句跳出
C、do…while语句所构成的循环只有在while后面的表达式非零时才结束
D、do…while语句所构成的循环只有在while后面的表达式为零时才结束
(  A  )
6、假设有语句sizeof(double),则它是________。
A、一个整型表达式
B、一个双精度浮点型表达式
C、一种函数调用
D、一种函数定义
(  D  )
7、与二进制数101.01011等值的十六进制数是________。
A、A.B
B、5.51
C、A.51
D、5.58
(  C  )
8、在下列字符序列中,不可用做c语言标识符的是________。
A、student___num
B、class
C、#88
D、month___12
(  A  )
9、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是________。
A、++X,Y=X--
B、X+1=Y
C、X=X+10=X+Y
D、double(X)/10
(  C  )
10、已知三个用不同数制表示的整数a=00111101b,b=3ch,c=64d,则能成立的比较关系式______。
A、A<B<C
B、B<C<A
C、B<A<C
D、C<B<A
(  B  )
11、下列程序执行后的输出结果是
main() {
int a[3][3],*p,i;
p=&a[0][0];
for(i=1;i<9;i++) p[i]=i+1;
printf("%d\n",a[1][2]);
}
A、3
B、6
C、9
D、随机数
(  C  )
12、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s);
其输出结果为________。
A、a book!
B、a book
C、a bo
D、a
(  C  )
13、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
A、char st[4][5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s="ABCDE";
D、char *s; scanf("%s",*s);
(  B  )
14、对于以下递归函数f,调用 f(3) 的返回值是________。 int f(int n)
{
if(n) return f(n-1) + n;
else return n;
}
A、10
B、6
C、3
D、0
(  D  )
15、以下对一维数组c 进行正确的定义初始化的语句是________。
A、int c [10] =0;
B、int c [10] ={0}*10;
C、int c [1] ={0,0,0,0,0,0,0};
D、int c [10] ={0};
(  C  )
16、下列if语句中,不正确的是________。
A、if(x>y);
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x) else x=1;
D、if(x
(  C  )
17、位字段数据的单位是_______位。
A、十六进制
B、八进制
C、二进制
D、十进制
(  C  )
18、以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);
()
A、是无限循环
B、循环次数不定
C、4次
D、3次
(  C  )
19、以下常量中, 能够代表逻辑" 真" 值的常量是________。
A、\0'
B、0
C、'0'
D、NULL
(  A  )
20、在C语言中,下面那种数据类型不属于构造类型____
A、枚举类型
B、数组类型
C、结构体类型
D、共用体类型

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

(   T  )
1、c语言中三种循环语句可以相互嵌套。 
(   T  )
2、十进制数10转换为二进制为1010。() 
(   T  )
3、二维数组在定义时,只能省略第一维的长度。 
(   T  )
4、标准格式输入函数 scanf()可以从键盘上接收不同数据类型的数据项。 
(   F  )
5、文件指针和位置指针都是随着文件的读写操作在不断改变。 
(   T  )
6、在switch 语句中, case 后可不加" {}"。 
(   T  )
7、符号"a"和’a’的区别是 "a"是字符串常量,占2个字节; 而’a’是字符常量,占1个字节。( ) 
(   F  )
8、c程序中如果对二维数组的全部元素都赋初值,则定义数组时第一维的长度不能省略,但第二维的长度可以不指定。 
(   T  )
9、预处理命令的前面必须加一个“#”号。 
(   F  )
10、函数的形参可以是常量,变量或表达式 

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

1、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()
2、编写程序:一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。写出程序,打印第一天摘了多少个桃子。
3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,
数据如下:201513135157 张三 90
1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上
2)将学生中不及格学生的姓名显示出来
3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数