河南工业大学2022年C语言程序设计

本试卷为河南工业大学2022年C语言程序设计,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计

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

(  D  )
1、有以下程序
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d ",i,j,k);
}
程序运行后的输出结果是________。
A、1 2 3
B、2 3 4
C、2 2 3
D、2 3 3
(  A  )
2、c 源程序中不能表示的数制是________。
A、二进制
B、八进制
C、十进制
D、十六进制
(  C  )
3、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
A、两个语句都是将变量a的值赋予变量P
B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D、两个语句都是使P指向变量a
(  B  )
4、下列程序的输出结果是________。
main()
{
struct st
{
int y,x,z;
}
;
union
{
long i;
int j;
char k;
}
un;
printf("%d,%d\n",sizeof(struct st),sizeof(un))
}
A、6,2
B、6,4
C、8,4
D、8,6
(  B  )
5、有以下程序
main()
{
int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是________。
A、7 5 3
B、3 5 7
C、3 6 9
D、7 5 1
(  C  )
6、有以下程序
main()
{
int k=4,n=0;
for( ; n<k ; )
{
n++;
if(n%3!=0) continue;
k--;
}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是________。
A、1,1
B、2,2
C、3,3
D、4,4
(  D  )
7、以下能正确定义数组并正确赋初值的语句是______。
A、int n=5,b[n][n];
B、int a[1][2]={{1},{3}};
C、int c[2][]={{1,2},{3,4}}
D、int a[3][2]={{1,2},{3,4}}
(  C  )
8、设有如下枚举类型定义: enum language
{
basic=3 , assembly , ada=100 , cobol , fortran
};
枚举量 fortran 的值为 。
A、4
B、7
C、102
D、103
(  D  )
9、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
A、1
B、2
C、7
D、11
(  A  )
10、以下叙述中错误的是______。
A、函数形参的值也可以传回给对应的实参
B、函数调用可以作为一个独立的语句存在
C、若函数有返回值,必须通过return语句返回
D、C程序必须由一个或一个以上的函数组成
(  C  )
11、对于ascii 码在机器中的表示,下列说法正确的是________。
A、使用8位二进制代码,最右边一位是0
B、使用8位二进制代码,最右边一位是1
C、使用8位二进制代码,最左边一位是0
D、使用8位二进制代码,最左边一位是1
(  B  )
12、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c); 给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是______。(ц代表一个空格符)
A、ЦЦЦ1,2,3<回车>
B、1Ц2Ц3<回车>
C、1,ЦЦЦ2,ЦЦЦ3<回车>
D、1,2,3<回车>
(  C  )
13、以下关于链式存储结构的叙述中哪一条是错误的?
A、结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B、逻辑上相邻的结点物理上不必邻接
C、可以通过计算直接确定第i个结点的存储地址
D、插入、删除运算操作方便,不必移动结点
(  D  )
14、以下能正确定义数组并正确赋初值的选项是______。
A、int N=5,a[N][N];
B、int b[1][2]={{1},{2}};
C、int c[2][]={{1,2},{3,4}};
D、int d[3][2]={{1,2},{3,4}};
(  B  )
15、下列各语句序列中,能够将变量u.s 中最大值赋值到变量t 中的是________。
A、if(u>s)t=u; t=s;
B、t=s; if(u>s)t=u;
C、if(u>s)t=s; else t=u;
D、t=u; if(u>s)t=s;
(  D  )
16、以下叙述中正确的是________。
A、数组下标的下限是 1
B、数组下标的下限由数组中第一个非零元素的位置决定
C、数组下标的下限由数组中第一个被赋值元素的位置决定
D、char c1,c2,*c3,c4[40]是合法的变量定义语句
(  B  )
17、假定所有变量均已正确定义,下列程序段运行后x的值是________。
k1=1;
k2=2;
k3=3;
x=15;
if(!k1) x--;
else if(k2) x=4;
else x=3;
A、14
B、4
C、15
D、3
(  D  )
18、下面说法中错误的是________。
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数可以返回一个共用体变量
(  A  )
19、执行以下循环语句时,下列说法正确的是________。x = -1;
do
{
x = x * x;
}
while (x == 0);
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误
(  A  )
20、从键盘上输入某字符串时,不可使用的函数是()。
A、getchar()
B、gets()
C、scanf()
D、fread()

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

1、在c语言中除了使用c提供的标准类型名(如int、char等)外,还可以用_________声明新的类型名来代替已有的类型名。
2、以下程序的输出结果是_____________。
main()
{
int a;
printf("%d\n",(a=3*4,a*5,a+5));
}
3、一个3位的二进制数能表示几个数?
4、已知char str[]="student",则strlen(str)的值为________。
5、开发一个c程序要经过编辑、编译、()和运行4个步骤、
6、局部变量又称内部变量,是在函数( )定义的变量。
7、循环语句for(i=0;i<3;i++) printf("*");
表达式i=0 执行【1】________次,表达式i++执行【2】________次。
8、若有定义: int a[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2] 得到的初值是【1】, a[2][1] 得到的初值是【2】。
9、以下程序的运行结果是【1】________,其算法是【2】________。
main()
{
int a[5]={9,6,8,3,-1},i,j,t,p;
sort(a);
for (i=0;i<=4;i++)printf("%3d",a[i]);
}
sort(int a[])
{
int i,j,t,p;
for (j=0;j<4;j++)
{
p=j;
for (i=j;i<=4;i++)if(a[i]<a[p]) p=i;
t=a[p];
a[p]=a[j];
a[j]=t;
}
}
10、以下程序在输入5,2之后的执行结果是________。
#include<stdio.h>
void main()
{
int s,t,a,b;
scanf("%d,%d",&a,&b);
s=1;
t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
else if(a==b) t=5;
else t=2*s;
printf("s=%d,t=%d\n",s,t);
}

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

1、编写程序:输出 200 ~ 300 之间的所有素数,要求每行输出 8 个素数。
2、定义⼀个结构体student,存储学⽣的学号、名字、性别和年龄,读⼊每个学⽣的所有信息,保存在结构体中,并输出。结构体student的定义如下:
struct student {
int num;
char name[20];
char sex;
int age;
};
本题要求使⽤指向结构体数组进⾏输⼊和输出。
输⼊:
第⼀⾏有⼀个整数n,表⽰以下有n个学⽣的信息将会输⼊。保证n不⼤于20。
以后的n⾏中,每⼀⾏包含对应学⽣的学号、名字、性别和年龄,⽤空格隔开。保证每⼀个⼈名都不包含空格且长度不超过15,性别⽤M和F两个字符来表⽰。
输出:
有n⾏,每⾏输出⼀个学⽣的学号、名字、性别和年龄,⽤空格隔开。
请注意⾏尾输出换⾏。
样例输⼊:
3
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20
样例输出:
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20
3、任意输入一行字符串保存在一维字符数组中,判断里面数字字符的个数。