长江师范学院2022年计算机C语言期末预测卷

本试卷为长江师范学院2022年计算机C语言期末预测卷,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言期末预测卷

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

(  D  )
1、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是________。
A、x&&Y
B、x<=Y
C、x‖y+z&&y-z
D、!((x<Y)&&!Z‖1)
(  B  )
2、设a为存放(短)整型的一维数组,如果a的首地址为p,那么a中第i 个元素的地址为( )。
A、P+i*2
B、P+(i-1)*2
C、P+(i-1)
D、P+i
(  C  )
3、下列选项中不合法的十六进制数是________。
A、"0"xff
B、"0"X11
C、"0"x1g
D、”0”Xabc
(  C  )
4、以下符合c语言语法的实型常量是________。
A、1.2E0.5
B、3.14.159E
C、.5E-3
D、E15
(  D  )
5、有以下程序
#include <stdio.h>
void fun(int *a, int n)/*fun函数的功能是将a所指数组元数从大到小排序*/
{
int t,i,j;
for(i=o;i<n-1;j++) for(j=j+1;j<n;j++) if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0} ,i;
fun(c+4,6);
for(i=0;i<10,i++) printf("%d,",c[i]);
}
程序的运行结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9,8,7,6,5,4,3,2,1,
D、1,2,3,4,9,8,7,6,5,0,
(  A  )
6、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  D  )
7、运行下面程序时,若从键盘输入 "3,5<cr>" ,则程序的输出结果是 __________.
#include <stdio.h>
void main( )
{
int x,y;
scanf("%d,%d",&x,&y);
if (x==y) printf("x==y");
else if (x>y) printf("x>y");
else printf("x<y");
}
A、3<5
B、5> 3
C、x>y
D、x<y
(  A  )
8、以下选项中,与k=n++完全等价的表达式是________。
A、k=n,n=n+1
B、n=n+1,k=n
C、k= ++n
D、k+=n+1
(  C  )
9、以下说法中正确的是________。
A、#define和printf都是C语句
B、#define是C语句,而printf不是________。
C、printf是C语句,但#define不是________。
D、#define和printf都不是C语句
(  A  )
10、在c语言中,变量的隐含存储类别是________。
A、auto
B、static
C、extern
D、无存储类别
(  C  )
11、关于数组的叙述中,下列说法不正确的是________。
A、数组是最简单的复合数据类型,是有限元素的有序集合
B、数组的元素可以是值(基本数据类型)、对象或其他数组
C、定义数组时,必须分配内存
D、一个数组中的元素都必须是相同的类型
(  A  )
12、数组a[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素a[5,5]的地址为 (15) 。
A、1140
B、1145
C、1120
D、1125
(  A  )
13、下列描述说明正确的是________。
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
(  C  )
14、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y&&y!=0);
C、if(x>0)x- else y++;
D、if(y<0){;} else x++;
(  C  )
15、以下不正确的是 ______。
A、语句for(i=0:;i++)表示无限循环
B、for(; ;)表示无限循环
C、for()也表示无限循环
D、while(1)表示无限循环
(  D  )
16、下列叙述中正确的是________。
A、每个C程序文件中都必须要有一个main()函数
B、在C程序中 main()函数的位置是固定的
C、C程序中所有函数之间都可以:相互调用,与函数所处位置无关
D、在C程序的函数中不能定义另一个函数
(  A  )
17、下列四个不同数制表示的数中,数值最大的是________。
A、二进制数11011101
B、八进制数334
C、十进制数219
D、十六进制数DA
(  A  )
18、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  B  )
19、假定有以下变量定义: int k=6,x=12; 则能使x、k值为5、6的表达式是________。
A、x%=++k%10
B、x%=k+k%5
C、x-=++k%5
D、x-=k++%5
(  D  )
20、有以下程序:
#include<stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%5)==0)break;
else i--;
}
i+=13,a+=i;
}
printf("%d\n",a);
}
程序的输出结果是________。
A、62
B、63
C、23
D、36
(  B  )
21、下列选项中,值为1的表达式是________。
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0','0'
(  A  )
22、有以下程序
struct s
{
int n;
int a[20];
};
void f(int *a,int n)
{
int i;
for(i=0;i<n-1;i++)a[i]+=i;
}
main()
{
int i;
struct s s={10,{ 2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0; i<s.n; i++)printf("%d,",s.a[i]);
}
程序运行后的输出结果是________。
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
(  C  )
23、有以下程序
main()
{
char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是________。
A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6
(  A  )
24、设有以下函数
f(int a) {
int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是______。
main() {
int a=2,i;
for(i=0;i<3;i++)printf("%d\n"f(a));
}
A、7
8
9
B、7
9
11
C、7
10
13
D、7
7
7
(  B  )
25、有以下程序: int*f(int*x,int*y)
{
if(*x<*y) return x;
else return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
print("% d,% d,% d\n",*p,*q,*r);
}
执行后的输出结果是 ______。
A、7,8,8
B、7,8,7
C、8,7,7
D、8,7,8
(  B  )
26、有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++) printf("%d\n"i)
}
该程序中的for循环执行的次数是______。
A、5
B、6
C、7
D、8
(  C  )
27、下面程序段的运行结果是________。
char * format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A、for,"a+=b",ab
B、format,"a+=b"
C、a+=b,a=21,b=10
D、以上结果都不对
(  D  )
28、有下面程序段 char a[3],b[]="china"; a=b; printf("%3",a); 则下面的说法正确的是______。
A、运行后见输出China
B、运行后见输出Ch
C、运行后见输出Chi
D、编译出错
(  B  )
29、下面程序的输出是________。 typedef union
{
long x[2];
int y[4];
char z[8];
}
mytype;
mytype them;
void main()
{
printf("%d\n", sizeof(them));
}
A、32
B、16
C、8
D、24
(  B  )
30、有如下程序
main( )
{
int n=8;
while(n>6)
{
n--;
printf("%d",n);
}
}
该程序段的输出结果是______。
A、98
B、76
C、87
D、78
(  B  )
31、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、6
B、8
C、7
D、编译出错
(  C  )
32、若定义了以下函数:
void f(……)
{
……*p=(double*)malloc(10*sizeof(double));
……
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是______。
A、double *p
B、float **p
C、double **p
D、float *p
(  B  )
33、若fp是指向某文件的指针,且未读到此文件末尾,则库函数feof(fp)的返回值是______。
A、EOF
B、0
C、非零值
D、1
(  D  )
34、假定int类型变量占用4个字节,若有定义:int x[10]= {0,2,4}则数组x在内存中所占字节数是______。
A、4
B、12
C、20
D、40
(  C  )
35、以下关于宏的叙述中正确的是______。
A、宏名必须用大写字母表示
B、宏定义必须位于源程序中所有语句之前
C、宏替换没有数据类型限制
D、宏调用比函数调用耗费时间
(  A  )
36、若变量已正确定义,表达式 (j=3, j++) 的值是____。
A、3
B、4
C、5
D、6
(  B  )
37、以下说法正确的是________。
A、实参类型不必同形参类型一致。
B、实参可以是常量、变量和表达式。
C、形参可以是常量、变量和表达式。
D、实参顺序与形参顺序无关。
(  D  )
38、函数调用结束后,形式参数( )
A、继续占用相同大小的内存
B、不确定
C、占用内存减小
D、释放内存
(  B  )
39、以下叙述中错误的______。
A、C 程序在运行过程中所有计算都以二进制方式进行
B、C 程序在运行过程中所有计算都以十进制方式进行
C、所有 C 程序都需要编译链接无误后才能运行
D、C 程序中整型变量只能存放整数,实型变量只能存放浮点数
(  B  )
40、程序必须在有限的步骤、有限的时间内执行完毕,指的是算法的( )特点
A、确定性
B、有穷性
C、可行性
D、输入
(  A  )
41、以下选项中哪些描述是不正确的?
A、循环语句必须要有终止条件否则不能编译
B、break关键字用于跳出当前循环
C、continue用于终止本次循环,执行下一次循环
D、switch条件语句中可以使用break
(  D  )
42、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
A、大写字母
B、下划线
C、数字字符
D、连接符
(  C  )
43、有以下程序段:
int x=3;
do
{
printf(”%3d”,x-=2);
}
while(!(--x));
程序段的输出结果是________。
A、1
B、3 0
C、1-2
D、死循环
(  B  )
44、在c语言中,不允许有常量的数据类型是________。
A、整型
B、结构型
C、字符型
D、字符串
(  B  )
45、有以下程序
main()
{
int a=666,b=888;
printf("%d\n",a,b);
}
程序运行后的输出结果是______。
A、错误信息
B、666
C、888
D、666,888
(  C  )
46、下列关于指针变量的描述,不正确的是________。
A、在没有对指针变量赋值时,指针变量的值是不确定的
B、同类指针类型可以进行相减操作
C、在使用没有赋值的指针变量时,不会出现任何问题
D、可以通过指针变量来取得它指向的变量值
(  C  )
47、以下程序的执行结果是_______.
main()
{
int num = 0;
while( num <= 2 )
{
num++;
printf( "%d,",num );
}
}
A、0,1,2
B、1,2,
C、1,2,3,
D、1,2,3,4,
(  B  )
48、c语言的switch语句中case后____
A、只能为常量
B、只能为常量或常量表达式
C、可为常量或表达式或有确定值的变量及表达式
D、可为任何量或表达式
(  B  )
49、已有以下数组定义和f 函数调用语句, 则在f 函数的说明中,对形参数组array 的错误定义方式为________。int a[3][4];
f(a);
A、f(int array[][6])
B、f(int array[3][])
C、f(int array[][4])
D、f(int array[2][5])
(  C  )
50、以下选项中合法的实型常数是()。
A、5E2.0
B、E-3
C、2.00E-01
D、1.3E