南昌航空大学2023年C语言程序设计专升本冲刺卷

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

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

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

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

(  B  )
1、有以下程序:
#define S(x) (x)*x*2
int main()
{
int k=5, j=2;
printf("%d",S(k+j));
printf("%d\n",S(k-j));
}
程序运行后的输出结果是________。
A、98,18
B、39,11
C、39,18
D、98,11
(  C  )
2、定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9
};则下面语句for(i=0;i<3;i++) printf("%d",x[i][2-i]);的输出结果是________。
A、1 5 9
B、1 4 7
C、3 5 7
D、3 6 9
(  B  )
3、以下能正确定义一维数组的选项是________。
A、int a[5]={
0,1,2,3,4,5};
B、char a[]={
1,2,3,4,5,6};
C、char a={'s','d','k'};
D、int a[5]="0123";
(  C  )
4、已定义c为字符型变量,则下列语句中正确的是________。
A、c='97';
B、c="97";
C、c=97;
D、c="a";
(  A  )
5、以下不能正确赋值的是______。
A、char s1[10];s1="test";
B、char s2[]={ ’ t ’ , ’ e ’ , ’ s ’ , ’ t ’ }
C、char s3[20]= "test";
D、char s4[4]={ ’ t ’ , ’ e ’ , ’ s ’ , ’ t ’ }
(  B  )
6、下列运算符中,属于关系运算符的是________。
A、<<
B、>=
C、=
D、!
(  A  )
7、对以下定义的表述中,正确的是________
struct node
{
int num;
char name[10];
}
stud;
A、stud是一个结构体变量
B、stud是一个结构体类型
C、node是一个结构体数据
D、node是一个结构体变量
(  A  )
8、for循环的循环次数________。
A、通常是确定的,但也可以不确定
B、通常不确定,但也可以确定
C、是不确定的
D、是确定的
(  B  )
9、有以下结构体说明和变量的定义,且指针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  )
10、有以下程序:
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},ij;
for(i=0;i<4;i++)
{
for(j=0;j<=i;j++) printf("%4c",’);
for(j=______;j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是 ______ 。
A、i-1
B、i
C、i+1
D、4-i
(  B  )
11、下列选项中c语言中不合法的字符串常量的是________。
A、"\121"
B、'y'
C、"\n\n"
D、"ABCD\x6d\
(  B  )
12、c语言中下面哪个不是循环语句?
A、do while
B、if
C、while
D、for
(  A  )
13、下面程序的输出结果是______。
main( )
{
int a[]={1,2,3,4,5,6,7,8,9,0},*t;
t=a;
printf("%d\n",*(t+3));
}
A、4
B、5
C、6
D、3
(  C  )
14、有以下程序
#include <string.h>
void f(char p[][10],int n) /* 字符串从小到大排序 */
{
char t[10];
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
A、2
B、4
C、6
D、3
(  C  )
15、使下列程序段输出"123,456,78",键盘输入数据,正确的输入是________ 。 int i,j,k scanf("%d,%3d%d",&i,&j,&k);
printf("%d,%d,%d\n",i,j,k);
A、12345678
B、123,456,78
C、123,45678
D、123,*45678
(  D  )
16、在下面的条件语句中(其中s1个s2表示c语言语句),只有()在功能上与其他三个语句不等价。
A、if (a)
S1
else
S2
B、if (a==0)
S2
else
 S1
C、if (a!=0)
S1
else
S2
D、if (a==0)
S1
 else
 S2
(  A  )
17、若有定义语句:char c='\101'; 则变量 c 在内存中占()
A、1 个字节
B、2 个字节
C、3 个字节
D、4 个字节
(  D  )
18、有字符数组a[80]和b[80],则正确的输出语句是________。
A、puts(a,b);
B、printf("%s,%s",a[],b[]);
C、putchar(a, b);
D、puts(a),puts(b);
(  C  )
19、以下与库函数strcmp(char*s,char*t) 的功能相等的程序段是________。
A、strcmp1(char *s,char *t){
for (;*s++==*t++;)
If (*s=='\0')
return 0;
return (*s-*t);
}
B、strcmp2(char *s,char *t){
for (;*s++==*t++;)
If (!*s) return 0;
return (*s-*t);
}
C、strcmp3(char *s,char *t){
for (;*t==*s;){
if (!*t)
return 0;
t++;
s++;
}
return (*s-*t);
}
D、strcmp4(char *s,char *t){
for (;*s==*t;s++,t++)
If (!*s) return 0;
return (*t-*s);
}
(  A  )
20、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
A、****
B、%%%%
C、%%%%C
D、有语法错,不能执行

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

(   F  )
1、c语言本身有输入、输出语句。 
(   F  )
2、c程序是由函数构成的,其中可以有一个或多个主函数main( )。 
(   T  )
3、break语句不能跳出多层循环。 
(   T  )
4、宏定义的作用域为从宏定义命令起到源程序结束。 
(   T  )
5、编写c语言程序的流程是:新建项目、添加源文件、编写代码、运行程序。() 
(   F  )
6、switch语句的各个case和default的出现次序不影响执行结果 
(   F  )
7、c语言函数返回类型的默认定义类型是
void。 
(   F  )
8、c 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。 
(   F  )
9、在标准c语言中, main 函数必须出现的所有其他函数之前 
(   F  )
10、构成数组的各个元素可以有不同的数据类型。( ) 

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

1、函数的返回值是通过函数的________语句获得的。
2、int a = 3; a+=a-=a*a; 求a的最后结果
3、静态存储的变量是在( )时分配存储单元并赋初值,在程序整个运行期间都不被释放。
4、字符读写函数( )是用于把一个字符写入磁盘文件。
5、以下程序的输出结果是 ________ 。
#include <stdio.h>
main()
{
int k=1,s=0;
do
{
if((k%2)!=0) continue;
s+=k;
k++;
}
while(k>10);
printf("s=%d\n",s);
}

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

1、有以下程序
#include <stdio.h>
main()
{
char a[20]="how are you?",b[20];
scanf("%s",b);
printf("%s %s\n",a,b);
}
程序运行时从键盘输入: how are you?<回车> 则输出结果为 ________。
2、有以下程序
#include <string.h>
main()
{
char a[]={'a','b','c','d','e','f','\0'};
int j;
j=strlen(a);
printf("%d\n",j);
}
程序运行后的输出结果是______。
3、函数f 的形参a 为一个10×10 的二维数组, n 的值为5,以下程序段的运行结果为________。f(int a[][20], int n)
{
int i,j,k;
j=n/2+1;
a[1][j]=1;
i=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if(i<1&&j>n)
{
i=i+2;
j=j-1;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
}
main()
{
int a[20][20]={0},n,i,j;
scanf("%d",&n);
f(a,n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)printf("%3d",a[i][j]);
printf("\n");
}
}
4、以下的程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出。
#include<stdio.h>
void main()
{
int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
int b[3][4]={{-2,0,1,4} ,{5,-1,7,6},{6,8,0,2}};
int i,j,c[3][4];
for (i=0;i<3;i++)
for (j=0;j<4;j++) c[i][j]= _________;
for (i=0;i<3;i++)
{
for (j=0;j<4;j++) printf("%3d",c[i][j]);
________________;
}
}

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

1、编写程序: 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
2、输入某班30位学生的姓名及数学、英语成绩,计算每位学生的平均分然后输出平均分最高的学生的姓名及其数学和英语成绩,使用结构体实现.
3、任意输入一行字符串保存在一维字符数组中,判断里面数字字符的个数。