长春中医药大学计算机C语言期末

本试卷为长春中医药大学计算机C语言期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言期末

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

(  C  )
1、没有如下定义: int(*ptr)(); 则以下叙述中正确的是________。
A、ptr是指向一维组数的指针变量
B、ptr是指向int型数据的指针变量
C、ptr是指向函数的指针,该函数返回一个int型数据
D、ptr是一个函数名,该函数的返回值是指int型数据的指针
(  A  )
2、有以下函数: char fun(char*p)
{
return p;
}
该函数的返回值是________。
A、无确功的值
B、形参P中存放的地址值
C、一个临时存储单元的地址
D、形参P自身的地址值
(  B  )
3、若有以下定义和语句:"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中
(  C  )
4、avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明语句错误的是________。
A、int avg(int*a,int n);
B、int avg(int a[lO],int n);
C、int avg(int a,int n);
D、int avg(int a[],int n);
(  B  )
5、设有定义:long x=-123456l; 则以下能够正确输出变量x值的语句是________。
A、printf(“x=%d\n”,x)
B、printf(“x=%ld\n”,x)
C、printf(“x=l\n”,x)
D、printf(“x=%D\n”,x);
(  A  )
6、执行语句printf("%u\n",+12345)的输出结果是________。
A、12345
B、0
C、-1
D、非定值
(  D  )
7、putchar ( )函数可以向终端输出一个 ( ) 。
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值
(  D  )
8、以下叙述正确的是________。
A、在C程序中,主函数必须位于程序的最前面
B、在C程序中,一行只能写一条语句
C、C程序的基本结构是程序行
D、C语句是完成某种程序功能的最小单位
(  C  )
9、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  A  )
10、已定义以下函数 fun(char *p2, char *p1)
{
while((*p2=*p1)!='\0')
{
p1++;
p2++;
}
}
函数的功能是________。
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有'\0'
(  A  )
11、以下程序段的输出结果是 char s[]="\\141\141abc\t"; printf ("%d\n",strlen(s));
A、9
B、12
C、13
D、14
(  B  )
12、以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{
int *p,*s;
for(p=a,s=a; p-a<n; p++) if ( ) s=p;
return(*s);
}
main()
{
int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是________。
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s
(  C  )
13、有以下程序
#include <stdio.h>
main()
{
int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{
case 0: switch(a[i]%2)
{
case 0:a[i]++;
break;
case 1:a[i]--;
}
break;
case 1:a[i]=0;
}
for(i=0;i<4;i++) printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是________。
A、3 3 4 4
B、2 0 5 0
C、3 0 4 0
D、0 3 0 4
(  B  )
14、若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b;
c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是________。
A、程序段有语法错
B、3,5,3
C、3,5,5
D、3,5,7
(  B  )
15、c 语言共用体类型变量在程序运行期间 。
A、所有成员一直驻留在内存中
B、只有一个成员驻留在内存中
C、部分成员驻留在在内存中
D、没有成员驻留在内存中
(  D  )
16、假定等级和分数有以下对应关系: 等级: a 分数: 85 ~ 100 等级: b 分数: 60 ~ 84 等级: c 分数: 60 以下 对于等级 grade 输出相应的分数区间,能够完成该功能的程序段是 __________.
A、switch (grade)
{
case 'A':printf("85--100\n");
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
B、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
C、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
D、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");break;
default:printf(" 等级错误 !\n");}
(  B  )
17、以下描述错误的是_________。
A、break语句可用于switch语句和循环语句
B、break语句和continue语句的作用是一样的,都是提前结束整个循环
C、在循环语句中使用break语句是为了跳出循环,提前结束循环
D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环
(  D  )
18、下面程序段的运行结果是 _____________.
for(i=1;i<=5;)
printf("%d",i);
i++;
A、12345
B、1234
C、15
D、无限循环
(  B  )
19、有如下说明 : int a[10]= { 0,1,2,3,4,5,6,7,8,9 }; 则数值不为 9 的表达式是 __________.
A、a[10-1]
B、a[8]
C、a[9]-0
D、a[9]-a[0]
(  C  )
20、表达式sizeof(double)是________。
A、函数调用
B、double型表达式
C、int型表达式
D、非法表达式
(  D  )
21、若已定义: int a[]= { 0,1,2,3,4,5,6,7,8,9 },*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是________。
A、a[p-a]
B、*(&
C、p
D、a[10]
(  B  )
22、若有条件表达式(exp)a++:b--,则以下表达式中能完全等价于表达式(exp)的是________。
A、(exp==0)
B、(exp!=0)
C、(exp==1)
D、(exp!=1)
(  A  )
23、设函数中有整型变量a,为保证其在未赋初值的情况下初值为0,应选择的存储类别是________。
A、static
B、register
C、auto
D、auto或register
(  D  )
24、下列四个数中与十进制数(163)10不相等的数是________。
A、(A3)16
B、(10100011)2
C、(000101100011)8421BCD
D、(233)8
(  B  )
25、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若a按行先存储,元素a[8,5]的起始地址与当a按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
A、A[8,5]
B、A[3,10]
C、A [5,8]
D、A[0,9]
(  A  )
26、假设int类型的变量x、y和z,它们的初始值分别为10、20和30,则布尔表达式x<10‖y>10&&z<10的值为______。
A、false
B、1
C、true
D、无法判断
(  C  )
27、下列各进制的整数中,______表示的值最大。
A、十进制数10
B、八进制数10
C、十六进制数10
D、进制数10
(  B  )
28、所有在函数中定义的变量及函数的形式参数,都属于________。
A、全局变量
B、局部变量
C、静态变量
D、常量
(  A  )
29、在下列原型所示的c++函数中,按"传值"方式传递参数的是________。
A、void f1(int x);
B、void f2(int*x);
C、void f3(const int*x);
D、void f4(int&x);
(  D  )
30、设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是________。
A、b%(c%4)
B、b%(c-a%5)
C、b%a-a%5
D、(b%a)-(a%4)
(  C  )
31、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
A、以上的说明形式非法
B、ST 是一个结构体类型
C、NEW 是一个结构体类型
D、NEW 是一个结构体变量
(  B  )
32、以下不正确的定义语句是________。
A、double x[5]=1.0,2.0,3.0,4.0,5.0;
B、int y[5]=0,1,2,3,4,5;
C、char c1[]='1','2','3','4','5';
D、char c2[]='a','b','c';
(  C  )
33、有以下程序
void fun(int *a,int i,int j)
{
int t;
if (i<j)
{
t=a[j];
a[i]=a[j];
a[j]=t;
i++;
j--;
fun(a,i,j);
}
}
main()
{
int x[]={2,6,1,8},i;
fun(x,0,3);
for(i:0;i<4;i++) printf("%2d",x[i]);
}
程序运行后的输出结果是______。
A、1 2 6 8
B、8 6 2 1
C、8 1 6 2
D、8 6 1 2
(  A  )
34、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
(  B  )
35、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
A、3 4 7 5
B、3 5 7 4
C、1 2 3 4
D、1 2 3 5
(  C  )
36、在以下给出的表达式中,与while(e)中的(e)不等价的表达式是________。
A、(!E==0)
B、(E>0 || E
C、(E==0)
D、(E!=0)
(  A  )
37、下列选项可以正确表示字符型常量的是________。
A、'\r'
B、"a"
C、"\897"
D、296
(  B  )
38、以下程序段的执行结果为
#define PLUS(X,Y)X+Y
main()
{
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
A、SUM=9
B、SUM=12
C、SUM=18
D、SUM=28
(  A  )
39、设有定义:char*c; 以下选项中能够使字符型指针c正确指向一个字符串的是________。
A、charstr[]="string";c=str;
B、scanf("%s",c);
C、c=getchar();
D、char str[]="string";strcpy("C,str")
(  A  )
40、若x、y均是int型变量,则执行以下语句后的结果是________
for(x=1;x<5;x+=2)
for(y=1;y<5;y++)
{
printf("%2d",x*y);
if(y==4)printf("\n");
}
A、1 2 3 4 3 6 9 12
B、2 3 4 5 3 4 5 6
C、1 2 3 4 5 6 9
D、2 3 4 3 6 9 6 9 12
(  D  )
41、有以下程序
main(int argc,char *argv[])
{
int n=0,i;
for(i=1;i<argc;i++) n=n*10+*argv[i]-'0';
printf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt 12 345 678程序运行后的输出结果是______。
A、12
B、12345
C、12345678
D、136
(  D  )
42、二进制数010110101转换错误的为:
A、转换为八进制为265
B、转换为十六进制为0xB5
C、转换为十进制为奇数
D、转换为十进制数为偶数
(  A  )
43、若x是double型变量,n是int型变量,执行以下语句( ),并输入3 1.25后,x的值是1.25,n的值是3。。
A、scanf("%d%lf", &n, &x);
B、scanf("%lf%d", &x, &n);
C、scanf("%lf%d", &n, &x);
D、scanf("%d, %lf", &n, &x);
(  C  )
44、对c 语言的文件存取方式的论述中,正确的是文件________。
A、只能顺序存取
B、只能随机存取(也称直接存取)
C、可以是顺序存取,也可以是随机存取
D、只能从文件的开头存取
(  C  )
45、"对下面程序段:
#define A 3
#define B(a) ((A+1)*a)...x=3*(A+B(7)); 正确的判断是________。"
A、程序错误,不许嵌套宏定义
B、程序错误,宏定义不许有参数
C、x=93
D、x=21
(  A  )
46、有说明语句:inta,b; 如果输入 111322333,使得 a 的值为 111,b 的值为 333,则以下正确的语句是________。
A、scanf("%3d%*3d%3d",&a, &b);
B、scanf("%*3d%3d%3d",&a, &b);
C、scanf("%3d%3d%*3d",&a, &b):
D、scanf("%3d%*2d%3d",&a, &b);
(  C  )
47、以下叙述中不正确的是________。
A、表达式a&=b等价于a=a&b
B、表达式a|=b等价于a=a|b
C、表达式a!=b等价于a=a!b
D、表达式a^=b等价于a=a^b
(  C  )
48、下列各定义数组的语句中不正确的是________。
A、int a[1][3];
B、int x[2][2]={1,2,3,4};
C、int x[2][ ]={1,2,4,6};
D、int m[ ][3]={ 1,2,3,4,5};
(  D  )
49、当定义一个结构体变量时,系统为它分配的内存空间是________。
A、结构中一个成员所需的内存容量
B、结构中第一个成员所需的内存容量
C、结构体中占内存容量最大者所需的容量
D、结构中各成员所需内存容量之和
(  A  )
50、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
A、****
B、%%%%
C、%%%%C
D、有语法错,不能执行