黑龙江工程学院C语言程序设计模拟

本试卷为黑龙江工程学院C语言程序设计模拟,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计模拟

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

(  C  )
1、下列叙述中正确的是________。
A、break语句只能用于switch语句体中
B、continue语句的作用是使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体内
D、在循环体内使用break语句和continue语句的作用相同
(  D  )
2、以下叙述中不正确的是________。
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量在本函数范围内有效
(  B  )
3、下列程序的运行结果是________。
void main()
{
int s=0,k;
for(k=7;k>1;k--)
{
switch(k)
{
case 1: case 4: case 7: s++: break;
case 2: case 3: case 6:break;
case 0: case 5: s+=2: break;
}
}
printf("s=%d",s);
}
A、s=3
B、s=4
C、s=5
D、无输出结果
(  B  )
4、以下对枚举类型名的定义中正确的是______。
A、enum a={ one , two , three} ;
B、enum a {one=9 , two=-1 , three} ;
C、enum a={"one" , "two" , "three"} ;
D、enum a {"one" , "two" , "three"} ;
(  A  )
5、若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设 a[0] [0]位于数组的第一个位置上) ________。
A、i*m+j
B、j*m+I
C、i*m+j-1
D、i*m+j+1
(  A  )
6、在c语言中,以下说法不正确的是________。
A、在C程序中,整数和实数都能被准确无误地表示出来
B、在C程序中,任何一个变量名都代表存储器中的一个位置
C、静态变量的生存期与整个程序的运行期相同
D、C语言中,任何变量都必须先声明才能进行引用
(  A  )
7、c语言中,下列运算符优先级最高的是________。
A、!
B、%
C、>>
D、==
(  C  )
8、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
A、a!=4||b==1
B、'a'%3
C、'a'=1/2
D、'a'+32
(  C  )
9、以下定义数组中错误的是________。
A、int a [10];
B、int a [2][20];
C、int a[20][ ];
D、int a[];
(  C  )
10、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
A、以上的说明形式非法
B、ST 是一个结构体类型
C、NEW 是一个结构体类型
D、NEW 是一个结构体变量
(  A  )
11、设有定义 double a[10],*s=a; 以下能够代表数组元素a[3]的是______。
A、*(s+3)
B、(*s)[3]
C、*s[3]
D、*s+3
(  A  )
12、以下不能将s所指字符串正确复制到t所指存储空间的是______。
A、do*t++=*s++;while(*s);
B、for(i=0;t[i]=s[i];i++);
C、while(*t=*s)t++;s++;
D、for(i=0,j=0;t[i++]=s[j++];);
(  B  )
13、语句:printf("%d\n",12&012);
的输出结果是________。
A、12
B、8
C、6
D、012
(  D  )
14、分块语句(块if)的控制转移中,有一些基本的规则,下列()条规则是最不正确的。
A、一个块IF必须与一个ENDIF语句相对应
B、一个块IF语和END IF语句间可以含有零个或多个ELSE IF语句
C、一对块IF语句和END IF语句间可含有一个零或零个SLSE块
D、允许越过块IF语句头进入核IF嵌套层
(  B  )
15、以下合法的赋值语句是______。
A、X=Y=100
B、D--;
C、X+Y;
D、C=INT(A+B)
(  C  )
16、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为________。
A、4 5 3 2 1 6
B、4 3 2 1 5 6
C、3 2 1 4 5 6
D、2 1 3 4 5 6
(  C  )
17、与数学式子3乘以x的n次方/(2x-1)对应的c语言表达式是______。
A、3*x^n/(2*x-1)
B、3*x**n/(2*x-1)
C、3*pow(x,n)*(1/(2*x-1))
D、3*pow(n,x)/(2*x-1)
(  B  )
18、关于数组和指针,以下说法错误的是________。
A、数组名本身就是一个指针,指向数组内存的起始位置
B、既可以读入数据到数组中,也可以读入数据到未赋初值的指针中
C、可以让一个指针指向一个同类型的数组
D、指针可以指向同类型的数组中的任意一个元素
(  A  )
19、下面选择中正确的赋值语句是(设char a[5],*p=a;)________。
A、p="abcd";
B、a="abcd";
C、*p="abcd";
D、*a="abcd";
(  B  )
20、下列程序段的输出结果为()。
float k=0.8567;
printf("%06.1f%%",k*100);
A、0085.6%%
B、85.70%
C、85.60%
D、0.857

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

(   F  )
1、使用不带参数的for(;;)语句可以正常控制循环。 
(   T  )
2、在一个文件中定义的全局变量其作用域还可以扩展到其他文件。 
(   F  )
3、寄存器变量的值也存放在内存中。 
(   T  )
4、比较两个字符串是否相等不能通过条件运算符"=="。 
(   F  )
5、隐式类型转换是指将取值范围大的数据类型转换为数据取值范围小的数据类型。 
(   T  )
6、c语言中函数返回值的类型跟形参的数据类型没有直接的联系。 
(   F  )
7、已有定义:char a[]="xyz",b[]={'x','y','z'};则数组a 和b 的长度相同 
(   F  )
8、字符数组char c[]="string";有6 个数组元素 
(   T  )
9、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0 ( ) 
(   T  )
10、c程序是从函数开始执行的。 

三、填空题 (共5题,每题4分,共计20分)

1、设x=2.5,a=7,y=4.7, 则x+a%3*(int)(x+y)%2/4为________。
2、if语句与_________语句一起可以构成循环结构。
3、如果一个变量要在一个程序中的所有函数都能共享,则应该定义成为________。
4、C语言函数是由函数首部和函数体两部分组成。其中,函数首部包括 函数类型、函数名和______。
5、若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是______

四、程序分析题 (共4题,每题5分,共计20分)

1、下面程序的输出结果是________。
int x=-32769;
printf("%d",x);
2、有以下程序
main( )
{
int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf("%d\n",x);
}
执行后输出结果是 ________。
3、以下程序的运行结果是_____________。
main( )
{
int k, s ,a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
s=0;
for( k=0;k<4;k ++)s=s+ a[k][k];
printf("%d,",s);
}
4、请阅读并分析以下程序,该程序的输出结果是:
#include <stdio.h>
int funa(int a)
{
int b=0;
static int c=3;
a=c++,b++;
return(a);
}
main()
{
int a=2,i,k;
for(i=0;i<2;i++)k=funa(a++);
printf("%d\n",k);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序:字符串排序。如下:
请输入3个字符串,每个字符串以回车结束!:
b
a
t
排序后的结果为:
a
b
t
2、已知银行定期存款利率为r=2.25%,输入存款本金x、存款年数n,输出本利之和y=x(1+r)(1+r)...(1+r),共n个(1+r)。
3、用一个数组存放图书信息,每本书是一个结构,包括下列几项信息书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息然后打印出以上信息,使用结构体实现。