河南工业大学2023年计算机C语言期末冲刺卷

本试卷为河南工业大学2023年计算机C语言期末冲刺卷,题目包括:单项选择题,填空题,编程题。

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

计算机C语言期末冲刺卷

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

(  C  )
1、能正确表示"当x的取值在[1,10]和[100,11o]范围内为真,否则为假"的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)
B、(x>=1)&&(x<=10)||(x>=100)||(x<=110)
C、(x>=1)&&(x<=10)||(x>=100)&&(x<=110)
D、(x>=1)||(x<=10)&&(x>=100)||(x<=110)
(  C  )
2、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
C、y=0,a
D、y=0,a
y=1,a<B且C≠D y="1,c≠d
(  B  )
3、以下对二维数组a进行正确初始化的是________。
A、int a[2][3]={{1,2},{3,4},{5,6}};
B、int a[ ][3]={1,2,3,4,5,6};
C、int a[2][ ]={1,2,3,4,5,6};
D、int a[2][ ]={{1,2},{3,4}};
(  D  )
4、c语言语句一行写不下时,可以( )。
A、用逗号换行
B、用分号换行
C、用回车换行
D、在任意一空格处换行
(  A  )
5、有以下程序
#include <studio.h>
#include <string.h>
struct a
{
int a;
char b[10];
double c;
};
void f(struct a t);
main()
{
struct a a={1001,"zhangda",1098.0};
f(a);
pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct a t)
{
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
}
程序运行后的输出结果是________。
A、1001,ZhangDa,1098.0
B、1002,ChangRong,1202.0
C、1001,ChangRong,1098.0
D、1002,ZhangDa,1202.0
(  B  )
6、设有以下说明语句
typedef struct
{
int n;
char ch[8];
}
per;
则下面叙述中正确的是________。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
(  D  )
7、程序段如下:则以下说法中不正确的是: 。
#include <stdio.h>
main()
{
int k=2,;
while(k<7)
{
if(k%2)
{
k=k+3;
printf( " k=%d\n " ,k);
continue;
}
k=k+1;
printf( " k=%d\n " ,k);
}
}
A、k=k+3; 执行一次
B、k=k+1; 执行 2 次
C、执行后 k 值为 7
D、循环体只执行一次
(  A  )
8、若定义static int a[2][2]={1,2,3,4 },则a数组的各数组元素分别为______。
A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4
B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4
C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1
D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1
(  B  )
9、c语言中,int型数据在内存中的存储形式是________。
A、ASCⅡ码
B、补码
C、反码
D、原码
(  D  )
10、在c 语言程序中,在函数内部定义的变量称为________。
A、全局变量
B、外部变量
C、全程变量
D、内部变量
(  D  )
11、以下叙述不正确的是_____。
A、分号是C语言的必要组成部分
B、C程序的注释可以写在句的后面
C、函数是C程序的基本单位
D、主函数的名字不一定用main表示
(  A  )
12、设有以下语句
typedef struct s
{
int g;
char h;
}
t;
则下面叙述中正确的是________。
A、可用S定义结构体变量
B、可以用T定义结构体变量
C、S是struct类型的变量
D、T是struct S类型的变量
(  C  )
13、下面程序的输出结果是
#include<stdio.h>
main()
{
int a[]=1,2,3,4,5,6,7,8,9,0,*p;
p=a;
printf("%d\n",*p+9);
}
A、0
B、1
C、10
D、9
(  A  )
14、以下不能将s所指字符串正确复制到t所指存储空间的是______。
A、do*t++=*s++;while(*s);
B、for(i=0;t[i]=s[i];i++);
C、while(*t=*s)t++;s++;
D、for(i=0,j=0;t[i++]=s[j++];);
(  A  )
15、当输入为"quert"时,下面程序的执行结果是
#include<stdio.h>
main()
{
char c;
c=getchar();
while(c!='') {
putchar(c);
c=getchar();
}
}
A、quert
B、Rvfsu
C、quert''
D、rvfsu
(  B  )
16、有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++) printf("%d\n"i)
}
该程序中的for循环执行的次数是______。
A、5
B、6
C、7
D、8
(  D  )
17、下列关于sizeof说法错误的是________。
A、sizeof运算符可以获取某个类型所占字节数
B、sizeof运算符可以获取某个变量所占的字节数
C、sizeof运算符获取某个变量的字节数与该变量的类型有关
D、sizeof运算符获取某个变量的字节数与该变量的类型无关
(  B  )
18、以下程序的运行结果是________。
main( )
{
int a=5 ,p;
if(p=a!=0)printf( "n%"d,p);
elseprintf("%d\n",p+2);
}
A、5
B、1
C、0
D、编译有错,无结果。
(  D  )
19、若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);
时,___是正确的输入
A、2030,40
B、20 30 40
C、20, 30 40
D、20,30,40
(  A  )
20、以下程序的输出结果为________。
#include  <stdio.h>
int main( )
{
int i=1,j=1;
printf("%d  %d\n",i,j++);
}
A、1 1
B、1 2
C、2 1
D、2 2

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

1、表达式 2.8 + 3/4 =________。
2、c语言程序的基本单位是________。
3、有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main() {
int m=1,n=2,*r=&m;
r=f(r,&n);
printf("%d\n",*r);
}
int*f(int *p, int*q) {
return(*p>*q) ? p : q;
}
程序运行后的输出结果是________。
4、字符读写函数( )是用于把一个字符写入磁盘文件。
5、在c语言中,可以用/*…*/对c程序中的任何部分作______。
6、执行下列的程序段后,正确的结果是_____________。
int i=5;
while( i = 1)i -- ;
printf("%d", i );
7、写一个表达式表示n既能被3整除又能被5整除
8、下面的程序是用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);
}
9、改正下列程序中不正确的语句。
main( )
{
int a;
scanf("%d", a);
if (a = 1) printf("one\n") ;
}
10、关系表达式x+y>5的相反表达式为______。

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

1、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:
char*proc(char(*a)[81],int num)
{
}
void main()
{
char ss[l0][81],*max;
int n,i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
{
i++;
gets(ssei]);
puts(ss[i]);
}
n=i;
max=proe(ss,n);
printf("\nmax=%s\n",max);
}
2、题⽬描述
有10个学⽣,每个学⽣的数据包括学号、姓名、3门课程的成绩。读⼊这10个学⽣的数据,要求输出3门课程的总平均成绩,以及个⼈平均分最⾼的学⽣的数据(包括学号、姓名、3门课程成绩、平均分数)。
输⼊
共有10⾏,每⾏包含了⼀个学⽣的学号(整数)、名字(长度不超过19的⽆空格字符串)和3门课程的成绩(0⾄100之间的整数),⽤空格隔开。
输出
第⼀⾏包含了3个实数,分别表⽰3门课程的总平均成绩,保留2位⼩数,每个数之后输出⼀个空格。
第⼆⾏输出个⼈平均分最⾼的学⽣的数据,与输⼊数据格式相同。如果有多位个⼈平均分最⾼的学⽣,输出按照输⼊顺序第⼀个最⾼分的学⽣数据。
请注意⾏尾输出换⾏。
样例输⼊
样例输出
85.60 87.90 90.40
105 EEE 92 93 94
3、某班综合考评,根据参加集体活动的次数加分,规则如下:参加1次及以下:加1分;参加2至3次:加2分;参加4至7次:参加几次加几分;参加8至10次:加8分;参加10次以上:加10分。程序运行时输入某人参加活动的次数,则输出其应该加的分数;如果输入为负值,则给出相应提示。