沈阳理工大学2022年C语言程序设计专升本考题

本试卷为沈阳理工大学2022年C语言程序设计专升本考题,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本考题

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

(  B  )
1、若有定义:"int*p,x=0,*p,p=&x;",则语句"printf("%d\n",*p);"的输出结果是________。
A、随机值
B、0
C、x的地址
D、P的地址
(  C  )
2、以下不能将s所指字符串正确复制到t所指存储空间的是________。
A、while(*t=*s){t++;s++;)
B、for(i=0;t[i]=s[i];i++);
C、do {*t++=*s++;)while(*s);
D、for(i=0,j=o;t[i++]=s[j++];);
(  C  )
3、下列程序执行后的输出结果是________。
main()
{
char x=0xffff;
printf("%d\n",x--);
}
A、-32767
B、FFFE
C、1
D、32768
(  D  )
4、以下程序的输出结果是
main( )
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if (b>=10) break;
if (b%5==1)
{
b+=5;
continue;
}
}
printf("%d\n",a);
}
A、101
B、6
C、4
D、3
(  B  )
5、以下数组定义中错误的是________。
A、int x[][3]={0};
B、int x[2][3]={{l,2},{3,4},{5,6}};
C、int x[][3]={{l,2,3},{4,5,6}};
D、int x[2][3]={l,2,3,4,5,6};
(  A  )
6、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  A  )
7、若有下面的说明和定义:
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
(  D  )
8、以下对一维数组a的正确说明是________。
A、char a(10);
B、int a[];
C、int k=5,a[k];
D、char a[3]={‘a’,’b’,’c’};
(  D  )
9、以下函数返回a所指数组中最小的值所在的下标值:
fun(int *a,int n)
{
int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]) ______,
return(p);
}
在横线处应填入的是______。
A、i=p
B、a[p]=a[i]
C、p=j
D、p=i
(  A  )
10、设函数中有整型变量a,为保证其在未赋初值的情况下初值为0,应选择的存储类别是________。
A、static
B、register
C、auto
D、auto或register
(  B  )
11、将十进制257转换成十六进制数是______。
A、11
B、101
C、F1
D、FF
(  A  )
12、下列描述中,符合结构化程序设计风格的是________。
A、使用顺序、选择和重复(循环) 三种基本控制结构表示程序的控制逻辑
B、模块只有一个入口,可以有多个出口
C、注重提高程序的存储效率
D、使用goto语句跳转
(  C  )
13、以下4个选项中,不能看作一条语句的是________。
A、;
B、a=5,b=2.5,c=3.6;
C、if(b!=5)x=2;y=6;
D、return j;
(  B  )
14、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是
struct node char data;
struct node*next;
a,b,*p=&a,*q=&b;
A、next=q;
B、next=&b;
C、p->next=&b;
D、(*p).next=q;
(  B  )
15、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是________。
A、INPUT x、v、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
(  C  )
16、能正确表示"当x的取值在[l,10]或[200,210]范围内为真,否则为假的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B、(x>=1)||(x<=10)||(x>=200)||(x<=210)
C、(x>=1)&&(x<=l0)||(x>=200)&&(x<=210)
D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)
(  A  )
17、下列对字符串的定义中,错误的是________。
A、char str[7] = "FORTRAN";
B、char str[] = "FORTRAN";
C、char *str = "FORTRAN";
D、char str[] = {'F','O','R','T','R','A','N',0};
(  B  )
18、判断式5>4>3 的结果为
A、1
B、0
C、true
D、false
(  D  )
19、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的 表达式是________。
A、x || y
B、x | y
C、x & y
D、x ^ y
(  A  )
20、c 语言中逻辑表达式的值为________。
A、0 或1
B、非零值或零值
C、true 或false
D、'true'或'false'

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

(   T  )
1、c程序是由函数构成的,其中有且只有一个主函数main( )。 
(   T  )
2、c语言中的main()函数是程序的入口。 
(   T  )
3、c语言中switch语句可以用if语句完全代替.( ) 
(   T  )
4、宏定义用宏名代替一个字符串,在替换时,只是作简单的替换,不作语法检查。 
(   F  )
5、c语言中非标准输入输出设备指的是键盘和显示器。 
(   F  )
6、函数若无返回值, 则它一定无形参。 
(   T  )
7、静态外部变量只在本文件内可用. 
(   T  )
8、表达式!( x>0||y>0 )等价于!(x>0)&&!(y>0) .() 
(   T  )
9、数组 int a55; 共定义了 25 个数组元素。( ) 
(   F  )
10、while 语句构成的循环至少执行一次 

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

1、表达式a=3*5,a*4的值是________。
2、c语言中基本的数据类型有:整型、________、________ 。
3、在c语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是________。 我的答案: break
4、将arr传参到子函数,接受处()内函数定义该怎么写?
5、一个c语言源程序由若干函数组成,其中至少应含有一个 ()

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

1、以下程序段的定义语句中,x[1]的初值是 ________,程序运行后输出的内容是 ________。
#include<stdio.h>
main()
{
int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{
p[i]=&x[2*i+1];
printf("%d ",p[i][0]);
}
printf("\n");
}
2、下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。请分析程序填空。
#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);
}
3、下面函数func 的功能是________。
#include<math.h>
long func(long num)
{
long k=1;
num=labs(num);
do
{
k*=num%10;
num/=10;
}
while(num);
return k;
}
main()
{
long n;
printf("\nplease enter a number:");
scanf("%ld",&n);
printf("\nthe product of its digits is %ld.",func(n));
}
4、下面的程序是用do while 语句求1 至1000 之间满足―用3 除余2;
用5 除余3;
用7 除余2" 的数,且一行只打印五个数。请分析程序填空。
#include<stdio.h>
main()
{
int i=1,j=0;
do
{
if( 【1】________)
{
printf("%4d",i);
j=j+1;
if( 【2】________) printf("\n");
}
i=i+1;
}
while(i<1000);
}

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

1、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
2、定义一个结构体变量(包括年、月、日)。编写一个函数days,计算该日期在本年中是第几天(注意闰年问题)。由主函数将年月日传递给days函数,计算之后,将结果传回到主函数输出。
3、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数。