惠州学院2023年C语言程序设计专升本

本试卷为惠州学院2023年C语言程序设计专升本,题目包括:单项选择题,判断题,编程题。

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

C语言程序设计专升本

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

(  C  )
1、有一函数, ,以下程序段中不能根据x值正确计算出y值的是________。
A、if(x>0) y=1;
else if(x==0) y=0;
else y=-1;
B、y=0;
if(x>0) y=1;
else if(x<0) y=-1;
C、y=0;
if(x>=0);
if(x>0) y=1 ;
else y=-1;
D、if(x>=0)
if(x>0) y=1;
else y=0;
else y=-1;
(  B  )
2、已知有如下结构体:
struct sk
{
int a;
float b;
}
data,*p;
若有p = &data,则对data的成员a引用正确的是________。
A、(*p).data.a
B、(*p).a;
C、p->data.a
D、P.data.a
(  C  )
3、若有以下程序段: int r=8; print("%d\n",r>>1); 输出结果是________。
A、16
B、8
C、4
D、2
(  B  )
4、设有字符串a="he has 钱!",则该字符串的长度为( )。
A、9
B、10
C、11
D、8
(  C  )
5、以下不合法的用户标识符是________。
A、j2_KEY
B、Double
C、4d
D、_8_
(  A  )
6、按照标识符的要求,下列选项中,( )符号不能组成标识符。
A、连接符
B、下划线
C、大小写字母
D、数字字符
(  A  )
7、假设有语句sizeof(double),则它是________。
A、一个整型表达式
B、一个双精度浮点型表达式
C、一种函数调用
D、一种函数定义
(  D  )
8、合法的用户标识符是________。
A、default
B、#define
C、a+b
D、book
(  A  )
9、若有函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b,))); 那么在此函数调用语句中实参的个数是________。
A、3
B、4
C、5
D、6
(  A  )
10、下列是用户自定义标识符的是________。
A、_w1
B、3_xy
C、int
D、LINE-3
(  B  )
11、下列形式的常数中,不符合c语言语法规范的是______。
A、.45
B、±123
C、25.6e-2
D、4e3
(  C  )
12、下述语句中,_____中的if语句语法是错误的。 ( )
A、if(x>y);
B、if(x==y)x+=y;
C、if(x!=y)seanf("%d",&x)else scanf("%d",&y);
D、if(x<y)x++;y++;
(  A  )
13、已知有数组定义 char a[3][4]; 下列表达式中错误的是________。
A、a[2]="WIN"
B、strcpy(a[2],"WIN")
C、a[2][3]='W'
D、a[0][1]=a[0][1]
(  C  )
14、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12
(  A  )
15、下列程序的输出结果是______。
#include <stdio.h>
main()
{
union
{
int k;
char i[2];
}
*s,a;
s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",s->k);
}
A、3839
B、3938
C、380039
D、390038
(  A  )
16、下面程序的运行结果是________。
#include <stdio.h>
void main()
{
int y=10;
do
{
y--;
}
while(--y);
printf("%d\n",y--);
}
A、-1
B、1
C、8
D、0
(  A  )
17、定义变量 int a; ,则表达式 a = 3, 5;  执行过后,a的值和表达式的值分别是________。
A、3 , 5
B、5 , 3
C、3 , 3
D、5 , 5
(  B  )
18、若有定义:int *p[3];
,则以下叙述中正确的是______。
A、定义了一个类型为int的指针变量p,该变量具有三个指针
B、定义了一个指针数组p,该数组含有三个元素,每个元素都是类型为int的指针
C、定义了一个名为*p的整型数组,该数组含有三个int类型元素
D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(  D  )
19、int i,j,a[2][3]; 按照数组a的元素在内存的排列次序,不能将数 1,2,3,4,5,6存入a数组的是________。
A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C、for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D、for(i=1;i<=6;i++)a[i][i]=i;
(  C  )
20、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s+2;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、250.00
B、250
C、285.00
D、285

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

(   F  )
1、在c程序中,注释说明只能位于一条语句的后面。 
(   T  )
2、printf("格式控制字符串",输出项表列) 中,格式控制字符串中的输出项格式说明与输出项表列中的输出项按顺序一一对应,且输出项的数据类型要与格式字符相容,否则会导致执行错误。 
(   T  )
3、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用
{
}
括起来组成一个复合语句。 
(   T  )
4、c程序中定义的变量,代表内存中的一个存储单元。 
(   T  )
5、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。 
(   F  )
6、在c程序中,若链接过程没有发现任何错误则表示链接成功,会生成一个".obj"文件。 
(   F  )
7、对字符数组元素进行引用时,可以一次引用整个数组。 
(   F  )
8、若有 int k = 1;
while(k=1) k++ ;
则while 循环执行的次数是1 次 
(   T  )
9、c语言函数默认的返回值类型是 int 。( ) 
(   T  )
10、c程序是从函数开始执行的。 

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7的第40项。
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、任意输入两行字符串,把第二行字符串连接到第一行字符串末尾(不用strcat函数)。