湖南中医药大学2023年C语言程序设计专升本模拟考试

本试卷为湖南中医药大学2023年C语言程序设计专升本模拟考试,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本模拟考试

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

(  A  )
1、下列叙述中正确的是________。
A、只能在循环体内和switch语句体内使用break语句
B、continue语句的作用是结束整个循环的执行
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用got0语句
(  A  )
2、下列变量声明合法的是________。
A、short a=1.4e-1;
B、double b=1+3e2.8;
C、10ng do=0xfdaL;
D、float 2_aaa=1e-3;
(  C  )
3、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d)y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
y=1,a≥b
B、y=0,a
y=1,a≥b且c≠d
C、y=0,a
y=1,a<B且C≠D
D、y=0,a
y=1,c≠d
(  A  )
4、若程序中定义了以下函数 double myadd(double a,double b)
{
return (a+b);
}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是________。
A、double myadd(double a,b);
B、double myadd(double,double);
C、double myadd(double b,double a);
D、double myadd(double x,double y);
(  C  )
5、以下程序的输出结果是 ____________.
#include <stdio.h>
fun(int x,int y,int z)
{
z=x*x+y*y;
}
void main()
{
int a=31;
fun(5,2,a);
printf("%d",a);
}
A、0
B、29
C、31
D、无定值
(  A  )
6、下列不是合法的c语言语句是________。
A、a=5
B、int i;i++;
C、;
D、;
(  C  )
7、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  C  )
8、字面常量42、4.2、42l的数据类型分别是________。
A、long,double,int
B、long,float,int
C、int,double,long
D、int,float,long
(  B  )
9、将十进制257转换成十六进制数是______。
A、11
B、101
C、F1
D、FF
(  A  )
10、在位运算中,操作数每左移一位,其结果相当于
A、操作数乘以2
B、操作数除以2
C、操作数除以4
D、操作数乘以4
(  B  )
11、有以下程序:
main( )
{
unsigned int a;
int b=-1;
a=b;
printf("%u",a);
}
程序运行后的输出结果是________。
A、-1
B、65535
C、32767
D、-32768
(  B  )
12、有以下程序
#include<stdio.h>
main()
{
int a=1,b=2;
while(a<6)
{
b+=a;
a+=2;
b%=10;
}
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是________。
A、5,11
B、7,1
C、7,11
D、6,1
(  C  )
13、以下程序的输出结果是
typedef union {
long x[2];
int y[4];
char z[8];
} mytype;
mytype them;
main() {
printf("%d\n",sizeof(them));
}
A、32
B、16
C、8
D、24
(  C  )
14、顺序执行下列程序语句后,则b的值是 string a="hello"; string b=a.substring(0,2);
A、Hello
B、hello
C、He
D、null
(  D  )
15、以下程序的输出结果是______。
struct har
{
int x,y;
struct har *p;
}
h[2];
main()
{
h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=&h[1];
h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
}
A、12
B、23
C、14
D、32
(  A  )
16、对于定好的数组,系统会自动为该数组分配内存空间,char c[20]= { "hello world" }对于c对应的内存中的地址编号是2000,则c[4]对应的内存地址的编号为________。
A、2004
B、200A
C、2010
D、2008
(  A  )
17、c语言中,形参缺省的存储类别是________。
A、auto(自动)
B、static(静态)
C、register(寄存器)
D、extern(外部)
(  D  )
18、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10}
, *p=a;
不能表示a数组元素的表达式是________。
A、*p
B、a[9]
C、*p++
D、a[*p-a]
(  D  )
19、若有说明 int a[][4]={0,0};
则下面不正确的叙述是________。
A、数组a的每个元素都可得到初值0
B、二维数组a的第一维大小为1
C、因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
D、有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
(  B  )
20、已有定义int k=2;
int *p1,*p2;
且p1,p2 均指向变量k,下面不能正确执行的赋值语句是________。
A、k=*p1+*p2;
B、p2=k;
C、p1=p2;
D、k=*p1*(*p2);

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

(   F  )
1、当函数值类型缺省定义时,函数值隐含的类型是double型。( ) 
(   T  )
2、关系表达式的值是一个逻辑值,即"真"或"假",并且用0表示"假",用1表示"真"。 
(   T  )
3、实型常量一般不分float型和double型。 
(   F  )
4、main()函数也是c语言的关键字() 
(   F  )
5、c语言中不允许嵌套调用函数。 
(   F  )
6、文件包含命令中,只能包含扩展名为.h的文件。 
(   T  )
7、c 语言程序中 , 出现非法字符时会发出错误信息。 
(   F  )
8、c 语言的三种循环不可以互相嵌套。 
(   T  )
9、char c1[]={'1','2','3','4','5'};
是合法的数组定义语句。 
(   T  )
10、char s=“C Language”;表示s是一个指向字符串的指针变量,把字符串的首地址赋予s 

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

1、有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能与之完全相同 s=1.0;
k=1;
while([10] )
{
s=s+1.0/(k*(k+1));
[11] ;
}
printf("s=%f\n\n",s);
2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为________。
3、for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
程序的输出结果a的值为________ 。
4、全局的外部变量与函数体内定义的局部变量同名时,在函数体内,________变量起作用。
5、一个c语言源程序由若干函数组成,其中至少应含有一个 ()

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

1、以下程序运行后的输出结果是________。
main()
{
char s[ ]="gfedcba";
int p=6;
while(s[p]!=‘d’)
{
printf("%c ", p);
p=p-1;
}
}
2、以下程序运行结果是________。
void swap2(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
void main( )
{
int a=100,b=200;
swap2(&a,&b);
printf("%d,%d",a,b);
}
3、下面程序的运行结果是________。
main()
{
int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)printf("%5d",b[i][j]);
printf("\n");
}
}
4、以下程序的运行结果是_____________。
main( )
{
int k, s ,a[3][3]={1,2,3,4,5,6,7,8,9};
s=0;
for( k=0; k<3; k++)s=s+ a[k][k];
printf("%d,",s);
}

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

1、编写程序:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
2、题⽬描述
完成⼀个对候选⼈得票的统计程序。假设有3个候选⼈,名字分别为Li,Zhang和Fun。使⽤结构体存储每⼀个候选⼈的名字和得票数。记录每⼀张选票的得票⼈名,输出每个候选⼈最终的得票数。结构体可以定义成如下的格式:
struct person {
char name[20];
int count;
}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};
输⼊
第⼀⾏有⼀个整数n,表⽰以下有n张选票信息将会输⼊。保证n不⼤于100。
以后的n⾏中,每⼀⾏包含⼀个⼈名,为选票的得票⼈。保证每⼀个⼈名都是Li,Zhang和Fun中的某⼀个。
输出
有三⾏,分别为Li,Zhang和Fun每⼈的得票数。格式为⾸先输出⼈名,其后输出⼀个冒号,最后输出候选⼈的得票数。
请注意⾏尾输出换⾏。
样例输⼊
10
Li
Li
Fun
Zhang
Zhang
Fun
Li
Fun
Zhang
Li
样例输出
Li:4
Zhang:3
Fun:3
3、编程计算1*2*3+4*5*6+...+97*98*99的值。