长春大学2023年C语言程序设计专升本模拟

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

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

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

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

(  A  )
1、运算符________的优先级最高。
A、[ ]
B、+=
C、?:
D、++
(  C  )
2、下面的变量说明中________是正确的。
A、char:a, b, c;
B、char a; b; c;
C、char a, b, c;
D、char a, b, c
(  D  )
3、若有定义"double a; ",则正确的输入语句是________。
A、seaM("%1f",a);
B、scanf("%f",&a);
C、scanf("%1f",&a)
D、scanf("%1e",&a);
(  D  )
4、下面哪一个不是字符常量________。
A、'a'
B、'?'
C、'9'
D、"a"
(  D  )
5、有以下程序
#include<stdio.h>
main() {
short c=124;
c=c________;
printf("%d\n"、c);
}
若要使程序的运行结果为248,应在下划线处填入的是________。
A、>>2
B、|248
C、&0248
D、<<I
(  A  )
6、若有下面的说明和定义:
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  )
7、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
(  C  )
8、以下描述中正确的是________。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C、在do-while循环体中,是先执行一次循环,再进行判断
D、do-while循环中,根据情况可以省略while
(  C  )
9、若有以下定义:int t[3][2]; 能正确表示t数组元素地址的表达式是______。
A、&t[3][2]
B、t[3]
C、t[1]
D、*t[2]
(  D  )
10、设a、b和、c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为 0的表达式为 ( )
A、'a'& &'b'
B、a<=b
C、a‖b + c & & b-c
D、!(a-b)& &(! c‖1)
(  D  )
11、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  D  )
12、有以下程序:
# include <stdio.h>
main()
{
char a='h';
a=(a>='a' && a<='z') ? (a-'a'+'a'): a;
printf("%c\n",a);
}
程序运行后的输出结果是________。
A、A
B、a
C、H
D、h
(  D  )
13、对两个数组a和b进行如下初始化: char a[]="abcdef"; char b[]= {'a','b','c','d','e','f' } 则以下叙述正确的是________。
A、数组a与数组b完全相同
B、数组a与数组b长度相同
C、数组a与数组b中都存放字符串
D、数组a比数组b长度长
(  C  )
14、有以下函数: int fun(char *x, char *y)
{
int n=0;
while((*x==*y)&&*x!=’\0’)
{
x++;
y++;
n++;
}
return n;
}
函数的功能是________。
A、将y所指字符串赋给x所指存储空间
B、查找x和y所指字符串中是否有’\0’
C、统计x和y所指字符串中最前面连续相同的字符个数
D、统计x和y所指字符串中相同的字符个数
(  C  )
15、结构化程序设计主要强调程序的()
A、效率
B、速度
C、可读性
D、大小
(  C  )
16、有以下程序:
main()
{
char str[]="xyz", *ps=str;
while(*ps) ps++;
for(ps--;ps-str>=o;ps--) puts(ps);
}
执行后的输出结果是________。
A、yz
xyz
B、z
yz
C、z
yz
xyz
D、x
xy
xyz
(  C  )
17、以下说法错误的是________。
A、C语言没有输入输出语句
B、运算符%的作用是求余
C、printf()是输入函数
D、保留字又称关键字,是指被赋予特定含义和有专门用途的标识符
(  C  )
18、c语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为________。
A、void
B、double
C、int
D、char
(  A  )
19、以下不是无限循环的语句为________。
A、for(y=0,x=1;x>++y;x=i++) i=x;
B、for(;;x++=i);
C、while1){x++;}
D、for(i=10;;i--) sum+=i;
(  D  )
20、在c 的if 语句中,可用作条件的表达式是________。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式

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

(   F  )
1、c程序的执行是从程序文件的第一个函数开始,到最后一个函数结束。( ) 
(   T  )
2、putchar函数可以向终端输出一个字符或字符型变量值。 
(   T  )
3、c语言约定'\0'不计入字符串的长度。 
(   T  )
4、如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 
(   F  )
5、指向数组元素的指针只可指向数组的首元素 
(   T  )
6、if语句中的表达式不限于逻辑表达式,可以是任意的数值类型 
(   T  )
7、模运算符%,仅用于整型变量或整型常量。 
(   F  )
8、for 语句只能用于循环次数已经确定的情况 
(   T  )
9、一个函数利用return 不可能同时返回多个值 
(   T  )
10、表达式都有运算结果 

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

1、在c语言数据类型中,一个无符号基本整型变量所代表的数据范围是__________到4294967295。
2、局部变量的作用域是从______的位置起,到函数结束止。
3、下列程序段的运行结果是________。
main()
{
int n,s=0 ;
for(n=1; n<=5; n++)
{
if(n%2==0) continue;
s=s+n;
}
printf("%d\n", s);
}
4、c 语言规定,可执行程序的开始执行点是________。
5、函数的形参在未被调用前不分配空间,函数形参的____要和实参相同。

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

1、有以下程序
#include <stdio.h>
#include <string.h>
void fun(char*str)
{
char temp;
int n,i;
n=strlen(str);
temp=str[n-1];
for(i=n-1;i>0;i--) str[i]=str[i-1];
str[0]=temp;
}
main()
{
char s[50];
scanf("%s",s);
fun(s);
printf("%s\n",s);
}
程序运行后输入:abcdef<回车>,则输出结果是________。
2、以下程序的执行结果是____。
#include<stdio.h>
void main()
{
char c='a'+10;
printf("c=%c\n",c);
}
3、程序结果是________
#include<stdio.h>
void swap(int *,int);
void main( )
{
int a=3,b=5;
swap(&a,b);
printf("a=%d,b=%d",a,b);
}
void swap(int *x,int y)
{
int temp ;
temp=*x ;
*x=y ;
y=temp ;
}
4、下面程序的运行结果是________。
main()
{
int i=1,n=3,j,k=3, a[5]={1,4,5};
while(i<=n&&k>a[i]) i++;
for(j=n-1;j>=i;j--)a[j+1]=a[j];
a[i]=k;
for(i=0;i<=n;i++)printf("%3d",a[i]);
}

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

1、编写程序:输入三角形的边长,求三角形面积(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)。
2、编写程序:计算字符串中子串出现的次数 。请输入两个字符串,以回车隔开,母先串在前,子串在后,比如:
abca
a
2
3、计算n名学⽣成绩的平均分并通过函数返回。要求:
结构体代码如下:
struct StudentScore{
double score;
};