延安大学2022年计算机C语言

本试卷为延安大学2022年计算机C语言,题目包括:单项选择题,填空题,编程题。

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

计算机C语言

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

(  C  )
1、下列能正确进行字符串赋值的是________。
A、char s[5]={¨ABCDE”);
B、char s[5]={'A','B','C','D','E'};
C、char*s;s=”ABCDE”;
D、char*s;printf(”%S”,s);
(  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
(  C  )
3、下列关于定点数与浮点数的叙述中错误的是________。
A、在实数的浮点表示中,阶码是一个整数
B、整数是实数的特例,也可以用浮点数表示
C、实数的补码是其对应的反码在最后一位加1
D、相同长度的浮点数和定点数,前者可表示数的范围要大于后者
(  B  )
4、以下对二维数组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  )
5、执行下面的程序后,a的值为________。
main()
{
int a,b;
for(a=1,b=1;a<=10;a++)
{
if(b%3==l)
{
b+=3;
continue;
}
b-=5;
}
}
A、7
B、8
C、9
D、10
(  D  )
6、s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s; 则以下选项中正确的是________。
A、if(s1>s2)S;
B、if(strcmp(s1,s2))S;
C、if(strcmp(s2,sl)>O)S;
D、if(stremp(s1,s2)>O)S;
(  C  )
7、有以下程序
#include <string.h>
main()
{
char str[][20]={"hello","beijing"},*p=str;
printf("%d\n",strlen(p+20));
}
程序运行后的输出结果是________。
A、0
B、5
C、7
D、20
(  C  )
8、若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是________。
A、ps+1
B、*(ps+3)
C、ps[0][2]
D、*(ps+1)+3
(  C  )
9、设有如下枚举类型定义: enum language
{
basic=3 , assembly , ada=100 , cobol , fortran
};
枚举量 fortran 的值为 。
A、4
B、7
C、102
D、103
(  A  )
10、执行完语句int [] x= new int [25]; 后,则下列哪项说法是正确的
A、x[24]值为0
B、x[24]值未定义
C、x[25]值为0
D、x[0]值为空
(  A  )
11、有如下语句: s=int(100*rnd) 执行完毕后,s的值是________。
A、[0,99]的随机整数
B、[0,100]的随机整数
C、[1,99]的随机整数
D、[1,100]的随机整数
(  B  )
12、有以下程序:
struct stu
{
char num[10];
float score[3];
};
main()
{
struct stu s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}},*p=s;
int i;
float sum=0;
for(i=0;i<3;i++ ){
sum=sum+p->score[i];
}
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、260
B、270
C、280
D、285
(  B  )
13、设有定义:long x= -123456l; 则以下能够正确输出变量x值的语句是________。
A、printf("x=%d\n",x);
B、printf("x=%1d\n",x);
C、printf("x=%8dL\n",x);
D、printf("x=%LD\n",x);
(  D  )
14、设x,y均为int型变量,且x=10,y=3,则printf("%d,%d\n",x-,-y);
语句的输出结果是______。
A、10,3
B、9,3
C、9,2
D、10,2
(  D  )
15、已有定义int a= -2; 和输出语句 printf("%8x",a); 以下正确的叙述是________。
A、整型变量的输出形式只有%d一种
B、%x是格式符的一种,它可以适用于任何一种类型的数据
C、%x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的
D、%8x不是错误的格式符,其中数字8规定了输出字段的宽度
(  D  )
16、下面有关for循环的正确描述是________。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,三个表达式都不能省略
D、for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来
(  C  )
17、在c语言中,只有在使用时才占用内存单元的变量,其存储类型是________。
A、auto和static
B、extern和register
C、auto和register
D、static和register
(  B  )
18、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
A、270
B、270.00
C、285.00
D、285
(  C  )
19、c语言规定,在一个源程序中,main函数的位置________。
A、必须在最开始
B、必须在其他函数的后面
C、可以任意
D、必须在最后
(  D  )
20、以下不正确的说法是____
A、在不同的函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效

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

1、c语言三个循环语句分别while语句、________语句和________语句。
2、下面程序的运行结果是: ________
int f( int a[], int n)
{
if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];
}
main ( )
{
int aa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
}
3、已知t=5,则表达式"t-=t+=3"的值是______。
4、以下程序运行后的输出结果是________。
main()
{
char s[ ]="gfedcba";
int p=6;
while(s[p]!=‘d’)
{
printf("%c ", p);
p=p-1;
}
}
5、%d怎么实现(两位数)左右对齐
6、循环语句for(i=0;i<3;i++) printf("*");
表达式i=0 执行【1】________次,表达式i++执行【2】________次。
7、float f=3.1415927;
printf("%f,%5.4f,%3.3f",f,f,f);
则程序的输出结果是________。
8、数学表达式10<y或者y<-10改写为c语言表达式是________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
9、函数的形参在未被调用前不分配空间,函数形参的____要和实参相同。
10、在C语言中,以______作为字符串结束标志。

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

1、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()
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*2*3+3*4*5+5*6*7+...+99*100*101的值。