山东工商学院2022年计算机C语言预测卷

本试卷为山东工商学院2022年计算机C语言预测卷,题目包括:单项选择题,填空题,编程题。

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

计算机C语言预测卷

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

(  C  )
1、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  C  )
2、若 x=0 , y=3 , z=3, 以下表达式值为 0 的是________。
A、!x
B、x<y? 1:0
C、x%2&&y==z
D、y=x||z/3
(  D  )
3、下列函数原型声明中错误的是________。
A、void Fun(int x=0,int y=0);
B、void Fun(int x,int y);
C、void Fun(int x,int y=0);
D、void Fun(int x=0,int y);
(  D  )
4、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。
A、int
B、int*
C、(*int)
D、(int*)
(  B  )
5、对以下说明语句的正确理解是________。 int a[10]= {6,7,8,9,10 };
A、将5个初值依次赋给a[1]至a[5]
B、将5个初值依次赋给a[0]至a[4]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确
(  C  )
6、以下关于c语言数据类型的叙述中正确的是________。
A、C基本数据类型包括:分为整型、实型、浮点型、字符型四种
B、实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式
C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(  D  )
7、下列4种不同数制表示的数中,数值最小的一个是________。
A、八进制数52
B、十进制数44
C、十六进制数2B
D、二进制数101001
(  B  )
8、设矩阵a是一个n×n对称矩阵.即a[i,j]=a[i,j],为了节省存储空间,将其下三角部分按行序为主序存放在一维数b[1...n(n+1)/2]中,对任一下三角元素aij(i≥j),在一维数组b的下标位置k的值是______。
A、(i+(i-1))/2+j-1
B、i(i-1)/2+j
C、i(i+1)/2+j-1
D、i(i+1)/2+j
(  D  )
9、以下选项中,能用作数据常量的是________。
A、018
B、011
C、0.8e2.5
D、25L
(  D  )
10、有以下程序
#include <stdio.h>
void fun(int a[],int n) {
int i,t;
for(i=0;i<n/2;i++) t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
main() {
int k[10]=1,2,3,4,5,6,7,8,9,10,i;
fun(k,5);
for(i=2;i<8;i++) printf("%d",k[i]);
printf("\n");
}
程序的运行结果是______。
A、345678
B、876543
C、1098765
D、321678
(  A  )
11、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
(  D  )
12、有以下程序:
#include <stdio.h>
struct s
{
int a, b;
}
data[2]= {10, 100, 20, 200 };
main()
{
struct s p=data[1];
printf("%d\n", ++(p.a));
}
程序运行后的输出结果是______。
A、10
B、11
C、20
D、21
(  C  )
13、关于二进制,下列描述错误的是________。
A、二进制数由数字0和1表示
B、一个二进制数字0和1表示一位,八位为一个字节
C、由于二进制由数值较小的0和1表示,所以只能表示一部分数据
D、二进制与十进制相互转换,不改变值的大小
(  C  )
14、有如下程序
main( )
{
int m=2,n=-1,d=6;
if(m<n)if(n<0) d=0;
else d++;
printf("%d\n",d);
}
该程序的输出结果是______。
A、0
B、1
C、6
D、7
(  B  )
15、有如下程序
main( )
{
int n=8;
while(n>6)
{
n--;
printf("%d",n);
}
}
该程序段的输出结果是______。
A、98
B、76
C、87
D、78
(  C  )
16、若有定义:
struct keyword
{
char key[20];
int id;
}
kw[] = {"void", 1, "char", 2, "int", 3, "float", 4, "double", 5 };
则printf("%c,%d\n", kw[3].key[0], kw[3].id);
语句的输出结果为________。
A、i 3
B、n 3
C、f 4
D、l 4
(  C  )
17、下面正确的字符串常量是________。
A、'a'
B、'376'
C、"\n"
D、376
(  D  )
18、以下叙述中正确的是________。
A、数组下标的下限是 1
B、数组下标的下限由数组中第一个非零元素的位置决定
C、数组下标的下限由数组中第一个被赋值元素的位置决定
D、char c1,c2,*c3,c4[40]是合法的变量定义语句
(  B  )
19、设有声明语句:int a=1,b=0;
则执行以下语句后输出()
switch (a)
{
case 1:switch (b)
{
case 0: printf(""**0**"");
break;
case 1: printf(""**1**"");
break;
}
case 2: printf(""**2**"");
break;
}
A、**0**
B、**0****2**
C、**0****1****2**
D、有语法错误
(  D  )
20、以下程序段的输出结果为()。
char c[]="abc";
int i=0;
do ;while(c[i++]!='\0');printf("%d",i-1);
A、abc
B、ab
C、2
D、3

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

1、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 ________ ( double,double);
main()
{
double x,y;
scanf("%lf%lf",&x,&y);
printf("%lf\n",max(x,y));
}
double max(double a,double b)
{
return(a>b ? a:b);
}
2、在c语言中,按函数在程序中出现的位置可分为以下三种调用方式:函数语句、函数表达式和函数________。
3、输入一个3*3的实数矩阵,求主对角线元素中的最大值。
main()
{
float s[3][3],max1,max2,x;
int i,j;
for(i=0;i<3 ;i++) for(j=0;j<3;j++)
{
scanf("%f", &x);
s[i][j]=x;
}
max=s[0][0];
for(i=1;i<3;i++) if(max<________) max=________;
printf("max1=%f\n",max);
}
4、访问变量的方式有 ______ 和 _______
5、c语言的源程序拓展名为()编译后生成() 链接后生成()
6、结构化程序三种结构为________。
7、函数yahui 能够按以下形式构成一个杨辉三角形,请填空。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1⋯⋯⋯ ..
#define N 11
Yahui(int [][N])
{
int i,j;
for(i=1;i<N;i++)
{
a[i][1]=1;
a[i][i]=1;
}
for(【1】________;i<N;i++)
for(j=2; 【2】________;j++)
a[i][j]= 【3】________+a[i-1][j];
}
8、数学表达式a<b<=c改写为c语言表达式是__________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
9、C语言源程序经过编译后,生成文件的后缀名是 ___。
10、有如下函数头: int max(int i,int j),则此函数有______个参数。

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

1、题⽬描述
万⾥⼗佳歌⼿⽐赛终于开始了,评委席坐了N(N⼤于等于3,并且N⼩于80)个评委,他们商量了很久,终于找出⼀个公正合理的评分⽅法。每次歌⼿唱完后,每个评委⾃⼰打⼀个分,然后在N个评委的打分中,去掉⼀个最⾼分,⼀个最低分。然后再把剩下的评委的打分求平均值~ 。
但是问题是他们嫌每次拿计算器按实在太烦。作为⼀名计算机专业学⽣~你⽤个程序帮帮他们搞定吧。
输⼊
输⼊有多组数据。每组2⾏,第⼀⾏是⼀个N,代表有N个评委。然后第⼆⾏有N个数,每个数⽤空格隔开,代表每个评委的打分。
当输⼊的N为0的时候结束输⼊。
输出
对于每组输⼊,输⼊最终这个选⼿的得分(⼩数点后⾯保留2位有效数字)。
样例输⼊
3
74 36 34
7
16 97 27 26 74 96 88
样例输出
36.00
62.20
2、用*号输出字母C的图案。
3、任意输入一行字符串保存在一维字符数组中,判断里面数字字符的个数。