大理大学计算机C语言

本试卷为大理大学计算机C语言,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

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

计算机C语言

一、理论基础 (共20题,每题1分,共计10分)

(  C  )
1、下面的变量说明中________是正确的。
A、char:a, b, c;
B、char a; b; c;
C、char a, b, c;
D、char a, b, c
(  B  )
2、下列能正确定义且赋初值的语句是________。
A、int n1=n2=1;
B、char C=99;
C、float f=f+1;
D、double x=1.2E5.6;
(  D  )
3、下列选择中,不能用做标识符的是________。
A、1234
B、_1_2
C、int_2_
D、2_int_
(  B  )
4、下面实现换行功能的格式符为________。
A、\t
B、\n
C、\a
D、\k
(  B  )
5、下面对的叙述中不正确的是______。
A、用 typedef 可以定义各种类型名,但不能用来定义变量
B、用 typedef 可以增加新类型
C、用 typedef 只是将已存在的类型用一个新的标识符来代表
D、使用 typedef 有利于程序的通用和移植
(  D  )
6、下列对程序解决问题的过程描述中,哪项是正确的( )
A、编写程序→设计算法→分析问题→调适运行与检测结果
B、设计算法→分析问题→编写程序→调适运行与检测结果
C、设计算法→分析问题→调试运行与检测结果→编写程序
D、分析问题→设计算法→编写程序→调试运行与检测结果
(  D  )
7、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是________。
A、10101001
B、10101000
C、11111101
D、01010101
(  D  )
8、已知小写英文字母"a"的ascii码值为61h,现字母"g"被存放在某个存储单元中,若采用偶校验(假设最高位作为校验位),则该存储单元中存放的十六进制数是______。
A、66H
B、E6H
C、67H
D、E7H
(  D  )
9、一个汉字的内码长度为2个字节,其每个字节的最高二进制位的值依次分别是______。
A、0,0
B、0,1
C、1,0
D、1,1
(  C  )
10、字面常量42、4.2、42l的数据类型分别是________。
A、long,double,int
B、long,float,int
C、int,double,long
D、int,float,long
(  B  )
11、下列可用于c语言用户标识符的一组是________。
A、void,define,WORD
B、a3_b3,_123,Car
C、For,-abc,IF Case
D、2a,DO,sizeof
(  B  )
12、以下合法的赋值语句是______。
A、X=Y=100
B、D-;
C、X+Y;
D、C=int(A+B)
(  D  )
13、在64位高档微机中,一个字长所占的二进制位数为________。
A、8
B、16
C、32
D、64
(  C  )
14、下面判断正确的是________。
A、char*a="china";等价于char *a;*a="china";
B、char str[5]="china";等价于char str[]="china";
C、char*S="china";等价于char *S;S="china";
D、char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
(  B  )
15、已知英文字母m的ascii码值为6dh,那么字母q的ascii码值是________。
A、70H
B、71H
C、72H
D、6FH
(  B  )
16、假设x=10,y=9,则表达式"x!=y"的值是________。
A、true
B、1
C、0
D、非零值
(  D  )
17、对于64位系统,int类型能够表示的数的范围为
A、0~2的32次方
B、0~2的32次方-1
C、-2的31次方~2的31次方
D、-2的31次方~2的31次方-1
(  A  )
18、编写c语言程序并上机调试运行的一般过程是________。
A、编辑→编译→连接→运行
B、编译→编辑→连接→运行
C、编辑→连接→编译→运行
D、编译→连接→编辑→运行
(  A  )
19、设有定义:int x=2,*p=&x; float=3.0; char z='c'; 则立即进行以下运算有安全隐患的是________。
A、p++
B、x++
C、y++
D、z++
(  C  )
20、若有说明:int *p1,*p2,m=5,n;
以下均是正确赋值语句的选项是________。
A、p1=&m;
B、p1=&m;p2=&n;*p1=*p2;
C、p1=&m;p2=p1;
D、p1=&m;*p2=*p1;

二、控制结构 (共10题,每题1分,共计10分)

(  A  )
1、有如下程序:
main ()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf ("a = %d, b = %d\n", a, b);
}
该程序的输出结果是________。
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2 b=2
(  A  )
2、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
A、可以是任意合法的数值
B、必须是整数值
C、必须是正数
D、必须是逻辑值
(  A  )
3、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
A、a=3,b=4
B、a=3,b=3
C、a=4,b=5
D、a=4,b=4
(  C  )
4、下列if语句中,不正确的是________。
A、if(x>y);
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x) else x=1;
D、if(x
(  B  )
5、以下叙述中正确的是________。
A、在 C 语言中,逻辑真值和假值分别对应 1 和 0
B、关系运算符两边的运算对象可以是语言中任意合法的表达式
C、对于浮点变量 x 和 y,表达式:x==y 是非法的,会出编译错误
D、分支结构是根据算术表达式的结果来判断流程走向的
(  D  )
6、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式
(  B  )
7、c语言的switch语句中case后____
A、只能为常量
B、只能为常量或常量表达式
C、可为常量或表达式或有确定值的变量及表达式
D、可为任何量或表达式
(  D  )
8、在c 的if 语句中,可用作条件的表达式是________。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
(  A  )
9、c 语言中逻辑表达式的值为________。
A、0 或1
B、非零值或零值
C、true 或false
D、'true'或'false'
(  B  )
10、将三个数排序需要比较________次。
A、2
B、3
C、4
D、不确定

三、循环结构 (共10题,每题1分,共计10分)

(  B  )
1、若变量已正确定义,有以下程序段
i=0;
do printf("%d,"i);
while(i++);
printf("%d\n",i);
其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  D  )
2、以下循环体的执行次数是 _________
#include<stdio.h>
void main( )
{
int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);
}
A、3
B、2
C、1
D、0
(  B  )
3、下列for循环语句的执行次数是________。
for(int x=0,y=0;(y!=0)&&(x<4);x++)
A、无限次
B、一次也不执行
C、执行一次
D、执行三次
(  A  )
4、下列程序是死循环的是________。
A、for(;;)
B、int s=36;
while(s)=s;
C、int m=10;
dom--;while(m>0);
D、int n=5;
while(n>1)
n--;
if(n<0)break;
(  D  )
5、流程控制语句的基本控制结构有三种,其中不包括________。
A、顺序结构
B、选择结构
C、循环结构
D、计算结构
(  D  )
6、以下的 for 循环次数是多少次? for(x=0,y=0;(y!=123)|| (x<4);x++) ;
A、执行 3 次
B、执行 4 次
C、循环次数不定
D、是无限循环
(  A  )
7、while(fabs(t)<1e-5)if(!s/10)break; 循环结束的条件是________。
A、t>=1e-5&&t<=-1e-5&&s>-10&&s<10
B、fabs(t)<1e-5&&!s/10
C、fabs(t)<1e-5
D、s/10==0
(  C  )
8、以下描述中正确的是________。
A、由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号
C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
D、do-while 循环中,根据情况可以省略 while
(  B  )
9、下面用户自定义的标识符中,合法的是________。
A、break
B、Volume_1
C、4s
D、a+b
(  C  )
10、下面程序段。x=3;
do
{
y=x--;
if(!y)
{
printf("*");
continue;
}
printf("#");
}
while(1<=x<=2);
A、将输出##
B、将输出###*
C、是死循环
D、含有不合法的控制表达式

四、数组/指针数组 (共10题,每题1分,共计10分)

(  C  )
1、对两个数组a和b进行下列初始化: char m[]="1234567"; char n[]={'1','2’,'3','4','5','6','7'};则下列叙述正确的是________。
A、数组in与数组n完全相同
B、数组m与数组n长度相同
C、数组m比数组n长1
D、数组m与数组n中都存放字符串
(  A  )
2、在c语言中对于实型数组,其每个数组元素的类型是________。
A、实型
B、整型
C、可以为任何类型
D、不确定
(  A  )
3、如有定义语句 int a[]={ 1,8,2,8,3,8,4,8,5,8 }; 则数组 a 的大小是 __________.
A、10
B、11
C、8
D、不定
(  A  )
4、二维数组a[8][9]按行优先顺序存储,若数组元素a[2][3]的存储地址为1087,a[4][7]的存储地址为1153,则数组元素a[6][7]的存储地址为 ( )
A、1207
B、1209
C、1211
D、1213
(  D  )
5、下面说明不正确的是________。
A、char a[10]="china";
B、char a[10],*p=a;p="china"
C、char*a;a="china";
D、chara[10],*P;P=a="china"
(  B  )
6、下列关于字符串的说法中错误的是________。
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入'\0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
(  D  )
7、以下关于排序算法的叙述中,正确的是________。
A、冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B、冒泡排序法中,元素的交换次数不少于元素的比较次数
C、简单选择排序中,关键字相同的记录在排序前后的相对位置一定不变
D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换
(  A  )
8、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
(  C  )
9、以下能对一维数组a进行正确初始化的语句是________。
A、int a[10]=(0,0,0,0,0)
B、int a[10]={};
C、int a[]={0};
D、int a[10]={10*1};
(  D  )
10、有字符数组a[80]和b[80],则正确的输出语句是________。
A、puts(a,b);
B、printf("%s,%s",a[],b[]);
C、putchar(a, b);
D、puts(a),puts(b);

五、字符串/字符串指针 (共10题,每题1分,共计10分)

(  B  )
1、c语言中,下列不合法的字符串常量是________。
A、”\121”
B、'y='
C、”\n\n”
D、”ABCD\x6d”
(  C  )
2、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
A、char s[10]=”abcdefg”;
B、char t[]=”abcdefg”,*s=t;
C、char s[10];s=”abcdefg”;
D、char s[10];strcpy(s,”abcdefg”);
(  A  )
3、下列字符串是标识符的是: 。
A、_HJ
B、9_student
C、long
D、LINE 1
(  B  )
4、下列关于串的叙述中,哪一条是正确的( )
A、串是由至少1个字符组成的有限序列
B、串中字符的数目就是串的长度
C、空串就是由空格构成的串
D、串只能顺序存储
(  D  )
5、下列字符常量的写法中,正确的是________。
A、'abc'
B、'\5A'
C、A
D、'\73'
(  D  )
6、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
A、大写字母
B、下划线
C、数字字符
D、连接符
(  D  )
7、有以下程序
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i<N-1;I++)
for(j=i+1,j<N;J++)}
/*比较字符串的首字符大小,并交换字符
串的首字符*/
if(s[i][0])>s[j][0]){
t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5);printf(”%s,%s”,ss[0],ss[4]);
}
程序运行结果是________。
A、xy,aaaacc
B、aaaacc,xy
C、XCC,aabcc
D、ace,xabcc
(  B  )
8、下面选项中合法的字符常量是________。
A、"X"
B、'X'
C、'abc'
D、'\'
(  D  )
9、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  A  )
10、下面不能正确进行字符串赋值操作的语句是________。
A、char s[5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s;s="ABCDEF";
D、char *s; scanf("%s",s);

六、函数/函数指针 (共10题,每题1分,共计10分)

(  D  )
1、以下函数,一般情况下,功能相同的是________。
A、fputc和putchar
B、fwrite和fputc
C、fread和fgetc
D、putc和fputc
(  A  )
2、已有函数 max ( a , b ),为了让函数指针变量 p 指向函数 max ,正确的赋值方法是______。
A、p=max ;
B、*p=max ;
C、p=max ( a , b );
D、*p=max ( a , b );
(  C  )
3、以下正确的叙述是______。
A、C 语言允许 main 函数带形数,且形参个数和形参名均可由用户指定
B、C 语言允许 main 函数带形参,形参名只能是 argc 和 argv
C、当 main 函数带有形参时,传给形参的值只能从命令行中得到
D、有说明 : main ( int argc,char *argv ),则形参 argc 的值必须大于 1
(  D  )
4、在c 语言程序中,在函数内部定义的变量称为________。
A、全局变量
B、外部变量
C、全程变量
D、内部变量
(  D  )
5、有以下程序:
voidf(int *x,int * y)
{
int t;
t= *x;
*x= *y;
*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&a[7];
while(p)
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是______;
A、8,2,3,4,5,6,7,1,
B、5,6,7,8,1,2,3,4,
C、1,2,3,4,5,6,7,8,
D、8,7,6,5,4,3,2,1,
(  D  )
6、设函数定义如下: float f1(float a,float b)
{
return(a+b);
}
若有float x=1.1,y=2.2;
,则以下语句中正确的函数调用是________。
A、printf ("%f",f1();
B、printf ("%f",f1(&x,);
C、printf ("%f",f1(*x,*);
D、printf ("%f",f1(x,);
(  C  )
7、若有"double a; ",则正确的输入语句是________。
A、scanf("%lf",a);
B、scanf("%f",&a);
C、scanf("%lf",&a)
D、scanf("%le",a);
(  C  )
8、下列选项中,关于main()函数叙述不正确的是________。
A、一个完整的C语言程序中,有且只能有一个main()函数
B、main()函数是程序的主入口,程序总是从main()函数开始执行
C、如果没有声明main()函数,程序将从第1行开始执行
D、main()函数可以有返回值,也可以没有返回值
(  B  )
9、如果在一个函数中的复合语句中定义了一个变量,则该变量________。
A、在该函数中有效
B、只在该复合语句中有效
C、在该程序范围内均有效
D、为非法变量
(  C  )
10、以下叙述中正确的是________。
A、两个字符串可以用关系运算符进行大小比较
B、函数调用 strlen(s)会返回字符串 s 实际占用内存的大小(以字节为单位)
C、C 语言本身没有提供对字符串进行整体操作的运算符
D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

七、指针 (共10题,每题1分,共计10分)

(  D  )
1、若有定义:int a[10],则对数组a元素的正确引用是________。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
(  C  )
2、有定义语句:int *p[4]; 以下选项中与此语句等价的是________。
A、int p[4];
B、int **p;
C、int *(p「4」);
D、int (*p)「4」;
(  B  )
3、若有以下定义 int x[10], *pt=x; 则对x数组元素的正确引用是________。
A、*&x[10]
B、*(x+3)
C、*(pt+10)
D、pt+3
(  B  )
4、若有说明int a[3][4]; 则a数组元素的非法引用是________。
A、123
B、2.5
C、-12
D、1563
(  D  )
5、设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是______。
A、float*p=1024;
B、int*p=(float)x;
C、float p=&x;
D、float*p=&x;
(  C  )
6、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  B  )
7、对于int *pa[5]; 的描述,以下哪个选项是正确的
A、pa是一个指向数组的指针,所指向的数组是五个int类型的指针
B、pa是一个具有五个元素的指针数组,每个元素都是一个int类型的指针
C、pa[5]表示某个数的第五个元素的值
D、pa是一个指向某个数组中第五个元素的指针,该元素是int类型的变量
(  C  )
8、下面叙述中错误的是________。
A、函数的形式参数,在函数未被调用时就不被分配存储空间
B、若函数的定义出现在主调函数之前,则可以不必再加说明
C、若一个函数没有return语句,则什么值也不会返回
D、一般来说,函数的形参和实参的类型要一致
(  D  )
9、若二维数组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  )
10、以下函数调用语句中实参的个数是()。
func((e1,e2),(e3,e4,e5));
A、2
B、3
C、5
D、语法错误

八、结构体 (共10题,每题1分,共计10分)

(  D  )
1、有以下定义和语句
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;
(  A  )
2、若有下面的说明和定义:
struct test
{
int ml;
char m2;
float m3;
union uu
{
char ul[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test )的值是________。
A、12
B、16
C、14
D、9
(  C  )
3、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
A、struct 是结构体类型的关键字
B、struct stu 是用户定义的结构体类型
C、stutype 是用户定义的结构体类型名
D、a 和 b 都是结构体成员名
(  B  )
4、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu
{
int i;
int name;
} st,*p;
p=&st;
A、si
B、*i
C、(*.i
D、p->i
(  C  )
5、以下对结构体类型变量的定义中,不正确的是________。
A、typedef struct aa {
int n;
float m;
} AA;
AA tdl;
B、#define AA struct aa AA{
int n;
float m;
} tdl;
C、struct {
int n;
float m;
} aa;
struct aa tdl;
D、struct {
int n;
float m,
} tdl;
(  A  )
6、下列选项中不属于c语言的数据类型是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  B  )
7、下面关于主程序的说法,错误的是________。
A、a.next=q;
B、p.next=&b;
C、p->next=&b;
D、(*p).next=q;
(  D  )
8、有以下程序
typedef struct
{
int b,p;
}
a;
void f(a c)            /* 注意:c是结构变量名 */
{
int j;
c.b+=1;
c.p+=2;
}
main()
{
int i;
a a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);
}
程序运行后的输出结果是______。
A、2,3
B、2,4
C、1,4
D、1,2
(  C  )
9、下面哪个不是关键字?
A、int
B、struct
C、define
D、continue
(  A  )
10、定义共用体的关键字是________。
A、union
B、enum
C、struct
D、typedef

九、程序题 (共10题,每题1分,共计10分)

(  B  )
1、有以下程序: void fun(int a,int b,int c)
{
a=456:b=567;
c=678;
}
main()
{
int x=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出的结果是________。
A、30,20,10
B、10,20,30
C、456,567,678
D、678,567,456
(  A  )
2、下面程序段执行结果是________。 int i=5; printf("%d,%d,%d", i,(++i)+(++i)+(i++),i);
A、8,20,5
B、8,21,5
C、5,20,8
D、5,21,8
(  B  )
3、有以下程序
main() {
int i, j,m =55;
for(i=l;i<3;i++) for(j=3;j<=++) m=m%j;
printf("%d\n",m);
}
程序的运行结果是________。
A、0
B、1
C、2
D、3
(  B  )
4、有以下程序
#include <stdio.h>
main()
{
char s[]={"012xy"};
int i,n=0;
for(i=0;s[i]!=0;i++) if(s[i]>'a'&&s[i]<='z') n++;
printf("%d\n",n);
}
程序运行后的输出结果是________。
A、0
B、2
C、3
D、5
(  A  )
5、执行下面程序后 , 运行结果是 __________.
#include <stdio.h>
void main( )
{
int x=41,y=1;
if (x%3==0 && x%7==0)
{
y+=x;
printf("y=%d\n",y);
}
else
{
y=x;
printf("y=%d",y);
}
}
A、y=41
B、y= 43
C、y=42
D、y=1
(  B  )
6、有以下程序
main()
{
int i=10,j=1;
printf("%d,%d\n",i--,++j);
}
执行后输出的结果是________。
A、9,2
B、10,2
C、9,1
D、10,1
(  B  )
7、有以下程序int a=4;
int f(int n)
{
int t=0;
static int a=5;
if(n%2)
{
int a=6;
t+=a++;
}
else
{
int a=7;
t+=a++;
}
return t+a++;
}
main()
{
int s=a,i=0;
for(;i<2;i++) s+=f(i);
printf("%d\n",s);
}
程序运行后的输出结果是______。
A、24
B、28
C、32
D、36
(  B  )
8、有以下程序
main()
{
unsigned char a=2,b=4,c=5,d;
d=a|b;
d&=c;
printf("%d\n",d);
}
程序运行后的输出结果是______。
A、3
B、4
C、5
D、6
(  C  )
9、有以下程序
#include <stdio.h>
main()
{
char a=4;
printf("%d\n",a=a<<1);
}
程序的运行结果是______。
A、40
B、16
C、8
D、4
(  B  )
10、以下程序的输出结果是()。
main()
{ char s[]="123",*p;
p=s;
printf("%c%c%c\n",*p++,*p++,*p++);
}
A、123
B、321
C、213
D、312