长春师范大学2023年C语言程序设计专升本复习题

本试卷为长春师范大学2023年C语言程序设计专升本复习题,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计专升本复习题

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

(  B  )
1、在下列给出的表达式中,与while(e)中的(e)不等价的表达式是________。
A、(!E==0)
B、(E>0||E<0)
C、(E==0)
D、(E!=0)
(  A  )
2、有下列程序:
main()
{
int x=0;
int y=0;
while(x<7 &&++v)
{
y--;
x++;
}
printf("%d,%d",y,x);
}
程序的输出结果是________。
A、0,7
B、7,7
C、0,6
D、1,6
(  C  )
3、以下不能对二维数组a进行正确初始化的语句是________。
A、int a[2][3]={0};
B、int a[][3]={{1,2},{0}};
C、int a[2][3]={{1,2},{3,4},{5,6}};
D、int a[][3] = {1,2,3,4,5,6}
(  B  )
4、阅读以下程序:
main( )
{
int x;
for(x=5;x>0;x--) if (x--<5) printf("%d,",x);
else printf("%d,",x++);
}
程序运行后的输出结果是________。
A、4,3,2
B、4,3,1,
C、5,4,2
D、5,3,1,
(  C  )
5、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
A、2,0
B、5,0
C、5,5
D、2,5
(  D  )
6、下面程序段的运行结果是 _____________.
for(i=1;i<=5;)
printf("%d",i);
i++;
A、12345
B、1234
C、15
D、无限循环
(  C  )
7、若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10 },*p=a; 则值为6的表达式是_______。
A、*p+6
B、*(p+6)
C、*p+=5
D、p+5
(  A  )
8、以下选项中,不合法的整型常数是________。
A、32768
B、-56
C、03
D、0Xaf
(  A  )
9、下列描述说明正确的是________。
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
(  D  )
10、下列字符串中不能作为c标识符使用的是________。
A、WHILE
B、user
C、_lvar
D、9stars
(  C  )
11、下面表达式为假的是________。
A、(4>3)
B、((4 Or(3>2))=1)
C、((4 And(3<2))=1)
D、(Not(3>=4))
(  B  )
12、int a[5],*p=a; 对a数组元素地址的正确引用是________。
A、p+5
B、&a[0]
C、&a+1
D、*a+1
(  B  )
13、有以下程序:
void ss(char *s,char t)
{
while(*s)
{
if(*s==t)
*s=t-''a''+''a'';
s++;
}
}
main()
{
char strl[100]="abcddfefdbd",c=''d'';
ss(strl,c);
printf("%s\n",strl);
}
程序运行后的输出结果是________。
A、ABCDDEFEDBD
B、abcDDfefDbD
C、abcAAfefAbA
D、Abcddfefdbd
(  D  )
14、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
A、-2
B、-1
C、0
D、-3
(  A  )
15、设有以下语句,其中不是对a数组元素的正确引用的是:______(其中0≤i<6)int a[6]= {11,22,33,44,55,66 },*m=a;
A、&(*(a+i) )
B、*(&a[i])
C、m[i]
D、a[i]
(  D  )
16、逻辑运算符两侧运算对象的数据类型
A、只能是0或者1
B、只能是0或者非0正数
C、只能是整型或者字符型数据
D、可以是任何类型的数据
(  C  )
17、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
A、a 数组和b 数组的长度相同
B、a 数组长度小于b 数组长度
C、a 数组长度大于b 数组长度
D、a 数组等价于b 数组
(  B  )
18、定义file *fp; 则文件指针fp 指向的是________。
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体
(  A  )
19、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
A、可以是任意合法的表达式
B、只能是整数 0 或非 0 整数
C、可以是结构体类型的数据
D、只能是整数 0 或 1
(  D  )
20、在c语言中,一维数组的定义方式为:类型说明符 数组名____
A、[常量表达式]
B、[整型表达式]
C、[整型常量]或[整型表达式]
D、[整型常量]

二、填空题 (共10题,每题2分,共计20分)

1、求主次对角线之和。
main()
{
static int a[ ][3]={9,7,5,1,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3;i++) for(j=0;j<3;j++)
{
if( ________ ) s1=s1+a[i][j];
if( ________ ) s2=s2+a[i][j];
}
printf("%d\n%d\n",s1,s2);
}
2、c语言变量按其作用域分为 全局变量和局部变量。按其生存期分为________存储 和________存储 。
3、c语言规定,不能使用c语言中的________做标识符。
4、结构化程序设计的3种基本结构是:顺序结构、_______结构、循环结构,这三种基本结构构成了复杂的c语言程序。
5、执行下列程序段后,输出的a的值是_____________。
main( )
{
int a = 2;
switch(a)
{
case 0: a--;
break;
case 1: a++;
break;
case 2: a=a+5;
break
}
printf("%d",a);
}
6、在c语言中,以______开头的常量代表的是八进制数。
7、数字'0'的ascii码值为多少()
8、局部变量的作用域是从定义的位置起,到( )结束止。
9、下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。请分析程序填空。
#include<stdio.h>
main()
{
int n,count,max,t;
count=max=0;
scanf("%d",&n);
do
{
t= 【1】________;
if(t==0) ++count;
else if(max<t) 【2】________;
n/=10;
}
while(n);
printf("count=%d,max=%d",count,max);
}
10、函数体用{开始,用____结束。

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

1、计算n名学⽣成绩的平均分并通过函数返回。要求:
结构体代码如下:
struct StudentScore{
double score;
};
2、编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。
3、输入一行字符,将所有的小写字母转换成大写字母,