吉首大学往年C语言程序设计专升本冲刺卷

本试卷为吉首大学往年C语言程序设计专升本冲刺卷,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本冲刺卷

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

(  D  )
1、设有定义:int x=2; ,以下表达式中,值不为6的是________。
A、x*=x+1
B、x++,2*x
C、x*=(1+x)
D、2*x,x+=2
(  A  )
2、以下程序段给数组所有元素输入数据:
main()
{
int a[10],i=0;
while(i<10)scanf("%d",);
}
应在下划线处填入的是________。
A、a+(i++)
B、&a[i+1]
C、a+i
D、&a[++i]
(  B  )
3、语句 for(k=0;k<5;++k)
{
if(k== 3) continue;
printf("%d",k);
}
的输出结果为______
A、012
B、0124
C、01234
D、没有输出结果
(  A  )
4、下列c语言用户标识符中合法的是________。
A、_x
B、union
C、case
D、-e2
(  C  )
5、c 语言的程序一行写不下时,可以 。
A、用逗号换行
B、用分号换行
C、在任意一空格处换行
D、用回车符换行
(  A  )
6、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  C  )
7、设有如下定义: struck sk
{
int a;
float b;
} data;
int *p;
若要使 p 指向 data 中的 a 域,正确的赋值语句是______。
A、p=&a;
B、p=data.a;
C、p=&data.a;
D、*p=data.a;
(  D  )
8、以下叙述中不正确的是________。
A、在C程序中,逗号运算符的优先级最低
B、在C程序中,APH和aph是两个不同的变量
C、若a和b类型相同,在计算赋值表达式a=b后,b中的值将放入a中,而b中的值不变
D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
(  B  )
9、有如下定义语句:int a[]= {1,2,3,4,5 },则对语句int * p=a; 正确的描述是________。
A、语句int * p=a;定义不正确
B、语句int * p=a;初始化变量p,使其指向数组对象a的第一个元素
C、语句int * p=a;是把a[0]的值赋给变量p
D、语句int * p=a;是把a[1]的值赋给变量p
(  A  )
10、表示关系x<=y<=z的c语言表达式为______。
A、(x<=y)&&(y<=z)
B、(x<=y)and(y<=z)
C、(x<=y<=z)
D、(x<=y)&(y<=z)
(  B  )
11、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  D  )
12、请阅读程序:
#include<math.h>
#include<stdio.h>
main()
{
float a,b,c;
scanf("%f%f",&a,&b);
c=a/b;
while(1) {
if(fabs(c)>1.6) {
a=b;
b=c;
c=a/b;
}
else break;
}
printf("%f\n",b);
}
若运行时从键盘上输入3.6 2.4<回车>,则输出结果是______。
A、1.500000
B、1.600000
C、2.000000
D、2.400000
(  B  )
13、下面关于主程序的说法,错误的是________。
A、a.next=q;
B、p.next=&b;
C、p->next=&b;
D、(*p).next=q;
(  A  )
14、选择出合法的if语句(设int x,a,b,c;)________。
A、if(a=b) x++;
B、if(a=<b) x++;
C、if(a<>b) x++;
D、if(a=>b) x++;
(  A  )
15、下列程序段的输出结果是______。
void fun(int *x,int *y)
{
printf("%d %d",*x,*y);
*x=3;
*y=4;
}
main()
{
int x=1,y=2;
fun(&y,&x);
printf(" %d %d",x,y);
}
A、2 1 4 3
B、1 2 1 2
C、1 2 3 4
D、2 1 1 2
(  C  )
16、若有定义语句:int m[ ]= {5,4,3,2,1},i=4; 则下面对m数组元素的引用中错误的是______。
A、m[--i]
B、m[2*2]
C、m[m[0]]
D、m[m[i]]
(  A  )
17、设有循环语句"for(i=1;i>0;i++) i++; ",其循环执行的次数是________。
A、无限
B、0
C、3
D、4
(  A  )
18、下面不能正确进行字符串赋值操作的语句是________。
A、char s[5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s;s="ABCDEF";
D、char *s; scanf("%s",s);
(  A  )
19、下面程序段的运行结果是________。char c[]="\t\v\\\0will\n";
printf("%d",strlen(c));
A、3
B、6
C、9
D、14
(  B  )
20、若有下列定义和语句,则对 a 数组元素的非法引用是()。
int a[2][3], (*pt)[3]; pt=a;
A、pt[0][0]
B、*(pt+1)[2]
C、*(pt[1]+2)
D、*(a[0]+2)

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

(   T  )
1、用strcat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间必须足够大。 
(   T  )
2、用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。 
(   T  )
3、c 语言允许用字符串的方式对数组作初始化赋值。 
(   T  )
4、当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址。 
(   T  )
5、在同一源文件中,使用extern可将全局变量的作用域向上扩展。 
(   F  )
6、一元运算符"*"和"&"的运算优先级低于自增自减预算。 
(   T  )
7、在switch 语句中, case 后可不加" {}"。 
(   T  )
8、在c程序中,用整数0 表示逻辑"假"。 
(   F  )
9、main函数必须写在一个c程序的最前面。( ) 
(   T  )
10、fseek函数一般用于二进制文件。 

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

1、c语言本身不提供输入输出语句,输入和输出操作是由________来实现的。
2、c语言三个循环语句分别while语句、________语句和________语句。
3、若有语句double x=17; int y; ,当执行y=(int)(x/5)%2;之后y的值是 ________。
4、如果一个变量要在一个程序中的所有函数都能共享,则应该定义成为________。
5、若a 是int 型变量, 则表达式( a=4*5,a*2 ),a+6 的值为【】。

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

1、从键盘上输入10个数,求其平均值,填空_______。
main()
{
int i;
float f,sum;
for(i=1,sum=0.0;i<11;i++)
{
________ ;
________ ;
}
printf("average=%f\n",sum/10);
}
2、若从键盘输入58,则以下程序输出的结果是 ________ 。
main()
{
int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
3、以下程序运行后的输出结果是 ________ int a=5;
fun(int b)
{
static int a=10;
a+=b++;
printf("%d ",a);
}
main()
{
int c=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
4、请阅读并分析以下程序,该程序的输出结果是:
#include <stdio.h>
main( )
{
int n[3][3], i, j;
for(i=0;i<3;i++ )
for(j=0;j<3;j++ )n[i][j]=i+j;
for(i=0;i<2;i++ )
for(j=0;j<2;j++ )n[i+1][j+1]+=n[i][j];
printf("%d\n", n[i][j]);
}

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

1、编写程序:利用指针方法, 输入3个数a,b,c,按大小顺序输出。
2、计算n名学⽣成绩的平均分并通过函数返回。要求:
结构体代码如下:
struct StudentScore{
double score;
};
3、任意输入两行字符串,把第二行字符串连接到第一行字符串末尾(不用strcat函数)。