版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中央美术学院历年计算机C语言考试试卷(-)
一、单项选择题(共20题,每小题2分,共40分)
1、如果将布•尔常量值true赋值给一个整型变量,则整型变量的值为o
A、0
B、-1
C、True
D、False
2、运行下述程序段后,i值为4的是o
A、inti=l,j=0;
B、inti=l,j=l;I=j=((i=3)++);i+=i+=2;
C、inti==0,j=0;
D、inti=0,j=l;15(i=2,i+(j=2));(j==l)?i+=3:i=2;
3、在嵌套使用if语句时,c语言规定else总是________。
A、和之前与其具有相同缩进位置的if配对
B、和之前与其最近的if配对
C、和之前与其最近的且不带else的if配对
D、和之前的第一人if配对
4、若i为整型变量,则以下循环语句的循环次数是—.for(i=2;i==0;)
printf(/z%d/z,i—);
A、无限次
B、0次
C、1次
D、2次
5、若已定义实参数组inta[3][4]={2,4,6,8,10};则在被调用函数f的
下述定义中,对形参数组b定义正确的选项是.
A>f(intb[][6])
B、f(b)intb[][4];
C、f(intb[3][]);
D、f(b)intb[4][5];
6、若有定义语句:inta[4][10],*p,*q[4];且0V=iV4,则错误的赋值是
A、p=a
B、q[i]=a[i]
C^p=a[i]
D、p=&a[2][l]
7、下列选项中,能正确定义数组的语句是。
A^intnum[O..2008];
B、intnum[];
C>intN=2008;intnum[N];
DsSdefineN2008;intnum[N];
8、以下叙述中错误的是o
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到〃见名知意〃
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中,大、小写字母代表大同标识
9、下面关于编译预处理命令,正确的是________。
A^^definecharCHAR
B、#DefineE0.0000034
C、##defineFALSE0
D、#defineDIM26
10、阅读下列程序段:chars[18]=〃abook!”;printf(〃%.4s\n〃,s);
其输出结果为________O
A、abook!
B、abook
C、abo
a
11、c语言中,若未说明函数的类型,则系统默认该函数的类型是
A、float型
B>long型
C、int型
D、double型
12、已知字符'a'的ascii码为97,执行下列语句的输出是—
A、98,b
B、语法不合法
C、98,99
D>98,c
13、int(*p)[6];它的含义为o
A、具有6个元素的一维数组
B、定义了一个指向具有6个元素的一维数组的行指针变量
C、指向整型指针变量
D、指向6个整数中的一个的地址
14、以下程序的输出结果是o
structhar
(
intx,y;
structhar*p;
)
h⑵;
main()
(
h[O].x=l;
h[0].y=2;
h[l].x=3;
h[l].y=4;
h[0].p=&h[l];
h[l].p=h;
printf("%d%d\n”,(h[0].p)->x,(h[l].p)->y);
}
A、12
B、23
C、14
D、32
15、下列程序的执行结果是
#include<stdio.h>
main()
(
inta,b,c;
a=b=2;
c=(a++)-1;
printf(z/%d,%d〃,a,c);
c+=-a+++(++b);
printf(^d,%d”,a,c);
)
A、3,14,1
B、3,14,2
C、2,04,1
D、2,14,1
16、下列语句哪些不属于循环语句?
A、for
B、while
C^dowhile
D、if
17、设有以下语句
typedefstructtt
(
charc;
inla[4];
}
cin;
则下面叙述中正确的是。
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是structTT类型的变量
18、下述程序的运行结果是o
#include<stdio.h>
voidfun(intx)
(
putchar0*+(x%10));
fun(x/10);
}
main()
(
printf(,,\n,,);
fun(1234);
)
A、4321
B、321
C、21
D、1
19、以下叙述中正确的是o
A、不能用字符串常量对字符数组名进行整体赋值操作
B、字符串常量〃Hello〃会被隐含处理成一个无名字符型数组,它有5个元
素
C^charstr[7]=〃string!〃;在语法上是合法的,运行也是安全的
D、char*str;st尸“Hello”;与charstr[];str="Hello”;效果是一样的
20、以下叙述中正确的是。
A、即使是同类型的结构体变量,也不能进行整体赋值
B、结构体变量的地址不能作为实参传给函数
C、结构体数组名无能作为实参传给函数
D、结构体中可以含有指向本结构体的指针成员
二、填空题(共10题,每小题2分,共20分)
1、已知charstr[]=〃happy!〃,则strlcn(str)的值为。
2、c程序中的变量按其定义位置及作用域可分为两种。
3、在c语言中,逻辑运算符中的〃&&〃称为________o
4、设a=3,b=2,c=l,则a>b>c的值为。
5、执行卜列的程序段后,止确的结果是。
inti=5;
while(i=1)i-;
printfi);
6、以下程序的运行结果是________。
inti=0;
main()
(
inti=5;
reset(i/2);
printf(〃i=%d\n〃,i);
reset(i=i/2);
,,,,
printf(i=%d\n>i);
reset(i/2);
printf(//i=%d\n,/,i);
workover(i);
printf(z,i=%d\nz,,i);
)
workover(inti)
i=(设i)*((i*i)/;2*i)+4);
printf(〃i=%d\n〃,i);
returni;
)
reset(inti)
(
i=iV=2?5:0;
returni;
)
7、若变量a,b已定义为int类型并赋值21和55,要求用printf函数以
a=21,b=55的形式输出,请写出完整的的输出语句o
8、在C语言中,以作为字符串结束标志。
9、程序运行结果是0
voidswap(inta[2])
(
intt;
t=a[0];
a[0]=a[l];
}
voidmain()
(
intx「21={5,81:
swap(x);
printf(〃x[0]=%d,x[l]=%d\n*,x[0],x[l]);
}
10、请补充函数proc(),该函数的功能是:把从主函数中输入的由数字字符组成
的字符串转换成一个无符号长整数,并且逆序输出。结果由函数返回。例如,输
入:1234567,结果输出:7654321。注意:部分源程序给出如下。请勿改动
main。函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的
若干表达式或语句。试题程序:
ttinclude<stdio.h>
unsignedlongproc(char*str)
(
unsignedlongt=0:intk:inti=0;
i=str|en(str);
for(;i>=0;i-)
}
returnt;
)
voidmain()
(
charstr[8];
system(^cls^);
printf(z,enterastringmadeupof'O'to'9'digitalcharacter:\
n);
gets(str);
printf("thestring,is:%s\n”,str);
if(strlen(str)>8)printf(,zthestringistootong!〃);
elseprintf(/ztheresult:%lu\nz,,procistr));
}
三、编程题(共3题,共40分)
1、在1—500中,找出能同时满足用3除余2,月5除余3,用7除余2的所有
整数。(本题10分)
2、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印
出来。(本题14分)
3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,
数据如下:201513135157张三90
1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上
2)将学生中不及格学生的姓名显示出来
3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
(本题16分)
参考答案
一、单项选择题
1、B
2、B
3、C
4、B
5、B
6、A
7、D
8、A
9、D
【解析】无参宏定义的一般格式:#define标识符语言符号字符串,其
中:“define”为宏定义命令;"标识符为所定义的宏名,通常用大写字母表示,
以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串(格式串
是用双引号括起来的字符串)等,选项ABC错误,选项D正确;本题答案为
Do
10、C
【解析】〃abook!〃在字符数组中是按单个字符存储的,包括空格,%.4s是输
出前四个字符。
11、C
12、D
13、B
14、D
15、A
【解析】本题主要考查自加运算符(++、一)的使用。①前缀变量“++i、-
i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与
运算:②后缀变量“,+、i-”,先使用此时的表达式的值参与运算,在使用
i之后,再使i的值加1或者减1。题中计算表达式c=(a++)T时先使用a的
值进行计算,结果为c=2-1=1,然后将a的值加:,即执行完此语句后a的值是
3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=l+(-3)+3=l,此时
a=4,b=3o
16、D
17、D
18、A
19、A
【解析】字符数组在定义时可以用字符串赋初值,其后就不可以再用字符串常
量进行赋值。答案选择A。
20、D
【解析】同类型的结构体变量可以进行整体赋值。结构体变量的地址可以作为
实参传递给函数。结构体数组ing可以作为实参传递给函数。结构体成员可以
包含指向本结构体的指针成员。本题答案为D选项。
二、填空题
1、6
2、['全局变量和局部变量']
3、逻辑与
4、1
5、无限循环#死循环
6、i=5i=2i=2i=0i=2
7、['printf(〃a=%d,b=%d〃,a,b);']
8、
9、x[0]=8,x[l]=5
10、-istr[i]-10,t*10+k
三、编程题
1、Sinclude<stdio.h>
voidmain()
(
inti,count=0;
for(i=l;i<=500;i++)
if((i%3==2)&&(i%5==3)&&(i%7==2))
(
printf("%8d〃,i);
count++;
)
printf("\n共有%d个!\n〃,count);
}
2、#include<stdio.h>
intmain()
inti=5;
voidpalin(intn);
printf(〃请输入5个字符\40:\40〃);
palin(i);
printf(〃\n");
)
voidpalin(n)
intn;
(
charnext;
if(n<=l){
next=getchar();
printf(〃相反顺序输出结果\40:\40〃);
putchar(next);
}else{
next=getchar();
palin(n-l);
putchar(next);
)
)
3、ftinclude<stdio.h>
ttdefineNUM3
structstudent
(
char*sno=newchar[20];
char*name=newchar[20];
intscore;
boolfail=false;
};
voidsLuSorL(sludenL*sLu)
(
studenttmp;
for(inti=0;i<NUM;i++)
(
for(intj=0;j<NUM;j++)
if(stu[j].score<stu[i].score)
tmp.name=stu[j].name;
tmp.sno=stu[j].sno;
tmp.score=stu[j].score;
stu[j].name=stu[i].name;
stu[j].sno=stu[i].sno;
stu[j].score=stu[i].score;
sLu[i].name-Imp.name;
stu[i].sno=tmp.sno;
stu[i].score=tmp.score;
)
}
}
for(inti=0;i<NUM;i++)
(
printfC%s%s%d\n,z,stu[i].sno,stu[i].name,stu[i].score);
)
)
voidstuFail(student*stu)
(
intnumOfStu=0:
for(inti=0;i<NUM;i++)
(
if(stu[i].fail二二true)
(
printfstu[i].name);
}
else
(
numOfStu++;
}
)
if(numOfStu=NUM)
printf("%s\n〃,〃nofail");
)
)
voidstuAvg(student^stu)
(
intstuScore=0;
doublestuAvg=0;
intent=0;
for(inLi-0;i<NUM;i++)
(
stuScore+=stu[i].score;
)
stuAvg=stuScore/NUM;
for(inti=0;i<NUM;i++)
(
if(stu[i].score<stuAvg)
(
ent++;
)
}
printf(〃/d\n〃,ent);
}
intmain()
(
student*stu=newstudent[NUM];
for(inti=0;i<NUM;++i)
(
printf(〃输入学号:〃);
scanf("%s〃,stu[i].sno);
prinlf(〃输入姓名:〃);
scanfstu[i].name);
printf(〃输入功课成绩:〃);
scanfscore);
}
stuSort(stu);
stuFail(stu);
stuAvg(stu);
delete[]stu;
stu=NULL;
return0;
)
中央美术学院历年计算机C语言考试试卷(二)
一、单项选择题(共20题,每小题2分,共40分)
1、计算机内部运算使用的数是O
A、十进制数
B、十六进制数
C、二进制数
D、八进制数
2、设inta=12,则执行完语句a+=a~=a*a后,a的值是,
A、552
B、264
C、144
D、-264
3、有以下程序
#include<stdio.h>
main()
(
inta=5,b=4,c=3,d=2;
if(a>b>c)
printf(绘d\n〃,d);
elseif((c-1>=d)==1)
printf(〃%d\n〃,d+1);
else
printf(〃%d\n”,d+2);
}
执行后输出的结果是O
A、2
B、3
C、4
D、编译时有错,无结果
4、有以下程序:
ttinclude<stdio.h>
main()
inta=l,b=2;
for(;a<12;a++)
b+=a*2;
a+=3;
}
printf(z,%d,%d\n”,b,a);
}
程序运行后的输出结果是o
A、32,13
B、46,10
C、72,13
D、72,10
5、c语言规定,函数返回值的类型是由。
A、return语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型决定
6、设有如下定义:
strucksk
(
inta;
floatb;
}data;
int*D:
若要使p指向data中的a域,正确的赋值语句是。
A、p=&a;
B、p=data.a;
C、p=&data.a;
D、*p=data.a;
7、定义如下变量和数组:intk,a[3][3]={1,2,3,4,5,6,7,8,9);
则下面语句的输出结果是ofor(k=0;k<3;k++)printf(,z%d
〃,社[k][2-k]);
A、357
B、369
C、159
D、147
8、以下是正确c语言标识符的是________o
A、_3
B、#3
C、&3
D、-3
9、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
10、有以下程序
#include<string.h>
voidf(charp[][10],intn)/*字符串从小到大排序*/
(
chart[10];
inti,j;
for(i=0;i<n-l;i++)
for(j=i+l;j<n;j++)
if(strcmp(p[i]>p[j])>0)
(
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
(
charp[5][10]={"abc〃,〃aabdfg〃,〃abbd〃,〃dcdbe〃,"cd"};
f(p,5);
printf(//%d\n/,,strlen(p[0]));
)
程序运行后的输出结果是O
A、2
B、4
C、6
D、3
11、以下叙述正确的是。
A、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B、在C程序中,main函数必须位于程序的最前面
C、C语言本身没有输入输出语句
D、C程序的每行中只能写一条语句
12、下列关于指针变量的描述,不正确的是o
A、在没有对指针变量赋值时,指针变量的值是不确定的
B、同类指针类型可以进行相减操作
C、在使用没有赋值的指针变量时,不会出现任何问题
D、可以通过指针变量来取得它指向的变量值
13、下面函数调用语句含有实参的个数为o
func((expl,exp2),(exp3,exp4,exp5));
A、1
B、2
C、3
D、5
14、设有如下说明
typedefstructst
(
longa;
intb;
charc[2];
)
new;
则下面叙述中正确的是_____o
A、以上的说明形式非法
B、ST是一个结构体类型
C、NEW是一个结构体类型
D、NEW是一个结构体变量
15、下面程序段的运行结果是.
intn=0;
while(n++<=2)printfn);
A、012
B、123
C、234
D、错误信息
16、下列程序的运行结果是。
voidmain()
(
ints=0,k;
for(k=7;k>1;k-)
switch(k)
case1:case4:case7:s++:break;
case2:case3:case6:break;
case0:case5:s+=2:break;
)
)
printf("s=%d〃,s);
)
A、s—3
B、s=4
C、s=5
D、无输出结果
17、以下scanf函数调用语句中不正确的是
structpupil
charname[20];
intage;
intsex;
}
pup[5],*p=pup;
A^scanfpup[0].name);
B、scanf&pup[0].age);
C、scanf(〃为d〃,p->age);
D、scanf&(p->sex));
18、有以下程序:
intf(intn);
main()
inta=3,s;
s=f(a);
s-s+f(a);
printf(〃%dkn〃,s);
)
intf(intn)
staticinta=l;
n+=a++;
returnn;
程序运行后的输出结果是。
A、7
B、8
C、9
D、10
19、有说明语句inta[4][5];则a[2]+3表示—。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
20、程序中有下面的说明和定义
structabc
(
intx;
chary;
}
structabcsi,s2;
则会发生的情况是o
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
二、填空题(共10题,每小题2分,共20分)
1、在c语言中,关系运算符中的〃小于等于〃表示为_____
2、设a=5,b=2,则表达式〃!a+b〃的值是。
3、执行下面程序段后,k值是o
k=l;
n=263;
do
k*=n%10;
n/=10;
)
while(n);
4、设y为int型变量,请写出描述“y是奇数”的表达式。
5、结构化程序设计的3种基本结构是:结构、选择结构、循环结构,这
三种基本结构构成了复杂的c语言程序。
6、下面程序的功能是用一辗转相除法II求两个正整数的最大公约数。请分析程
序填空。
ttinclude<stdio.h>
main()
(
intr,m,n;
scanf(,,%d%d,z,&n,&n);
if(m<n)1;
r=in%n;
while(r)
(
m=n;
n=r;
r=2___;
)
printf(/?%d\nz/,n);
)
7、字符串函数用于把一个字符串写入指定的磁盘文件中。
8、局部变量的作用域是从定义的位置起,到结束止。
9、以下程序的执行结果是—o
#include<stdio.h>
voidmain()
(
charc=,a+10;
printf(〃c=%c\n”,c);
)
10、以下程序的功能是调用函数fun计算:m=l-2-3-4+…+9-10,并输出结果。请
填空。
intfun(intn)
intm=0,f=l,i;
for(i=l;i<=n;i++)
(
m+=i*f;
f=;
}
returnm;
)
main()
(
z,,,
printf(m=%d\n,________);
)
三、编程题(共3题,共40分)
1、编程序求1+3+5+7+9+,,这样的数之和。如果累加数大于750时,则程序终止
并输出结果。(本题10分)
2、编写程序:计算字符串中子串出现的次数。请输入两个字符串,以回车隔
开,母先串在前,子串在后,比如:
abca
a
2(本题14分)
3、编写程序:利用结肉体类型,编程计算一名同学5门课的平均分。(本题
16分)
参考答案
一、单项选择题
1、C
2、D
3、B
【解析】第二个if语句中的表达式"cT>=d”的值为逻辑值1,所以该条件
成立。
4、A
【解析】在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执行
for循环语句后,变量a的值等于4,变量b的值等于4。第2次执行for循环
后,变量a等于8,变量b的值等于14。第3次执行for循环后,变量a等于
12,变量b的值等于32。第4次执行for循环后,变量a等于13,不满足循环
的条件,这时退出for循环,此时变量b的值依然等于32。因而程序输出变量
a,b的值分别为13,32。
5、D
6、D
7、A
8、A
9、B
【解析】宏定义用于将一个标识符定义为一个字符串
10、C
11、C
12、C
【解析】没有赋值的指针变量,可能指向任何地方,如果指向系统,那么使用
该指针可能导致系统崩溃。
13、B
【解析】本题考套函数调用时的实参形式。这里有一个逗号运算的考查,(a,
b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的
个数只有2个。
14、C
【解析】typedef关键字用于声明一个新的类型名代替已有的类型名。本题中
如果没有用typedef进行定义的话,则structST为结构体类型,现在用
typedef定义后,相当于用NEW代表了structST这一结构体类型,故NEW
为结构体类型。
15、B
16、B
17>C
18、C
19、A
20、A
二、填空题
1、<=
2、2
3、36
4、y%2!=0;
5、顺序
6^[1]r=m,m=n,n=r[2]m%n
7、fputsftfputs()
8、函数
9、c=ko
10、['-f或f*-l或T*f或或'fun(lO)']
三、编程题
1main()
(
inti=l,sum=0;
while(sum<=750)
(
sum=sum+i;
i=i+2;
}
printf(,,\n%d,\sum);
)
2、#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain()
(
inti,j,k,TLcn,PLcn,count=0;
charT[50],P[10];
printf(〃请输入两个字符串,以回车隔开,母串在前,子串在后:
gets(T);
gets(P);
TLen=strlen(T);
PLen=strlen(P);
for(i=0;i<=TLen-PLen;i++)
(
for(j=0,k=i:j<PLen&&P[j]==T[k];j+-,k++)
9
if(j==PLen)count++;
}
printf(〃%d\n〃,count);
system("pause");
return0;
)
3、structstudent{
charname[30]:
floatscore[5];
};
intmain(intargc,constchar*argv[])
(
structstudenta={“zhangsan”,20,30,40,50,60};
floatsum=0;〃定义一个5科分数之和变量
floatAverageScore=0;〃定义一个平均分变量
for(inti=0:i<5;i++){
sum=sun+a.score[i];
AverageScore=sum/5;
}
printfC姓名%s\n5科成绩平均分是:见If分
〃,a.name,AverageScore);
return0;
)
中央美术学院历年计算机C语言考试试卷(三)
一、单项选择题(共20题,每小题2分,共40分)
1、以下叙述中正确的是O
A、在C程序中,语句之间必须要用分号(;)分隔
B、在C程序中#include行和#define行不是C语句
C、程序中的注释部分可有可无,通常可以省略
D、当输入数值数据时,对于整型变量只能输入整型值:对于实型变量只能
输入实型值
2、下列正确的实型常量是。
A、E3.4
B、-12345
C、2.2e8
D、4
3、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信
息的是©
A、if(x++);
B、if(x>y&&y!=0);
C^if(x>0)x-elsey++;
D、if(y<0){;}elsex++;
4、以下叙述中正确的是0
A、continue语句使得整个循环终止
B、break语句不能用于提前结束for语句的本层循环
C、使用breakswitch语句可以使流程跳出语句体
D、在for语句中,continue与break的效果是一样的,可以互换
5、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):
main()
(
chara[10]=〃abc",b[10]="012〃,c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c-1));
}
程序运行后的输出结果是。
A、a12xyz
12yz
C、a2yz
D、bc2yz
6、表达式y=(13>12?15:6>7?8:9)的值为。
A、9
B、8
C、15
D、1
7、己知3个字符为:a、x和5,按它们的ascii码值升序排序,结果是
A、5<a<X
B、a<5<X
C、X<a<5
D、5<X<a
8、执行下面程序段,给x、y赋值时,不能作为数据分隔符的是。int
x,y;scanf&x,&y);
A、空格
B、Tab键
C、回车
D、逗号
9、判断两个字符串是否相等,正确的表达方式是
A、sl==s2
sl=s2
C、strcmp(sl,s2)==0
D、strcmp(sl,s2)=0
10、下列对字符数组进行初始化的语句中,是正确的。
A、chars1[]="abed”;
B、chars2[3]=,5xyz”;
C、chars3[][3]={'a','x','y'}
D、chars3[][3]={“xyz”,“mnp”};
H>以下()不是c语言中用于结构化程序设计的三种基本结构之一。
A、顺序结构
B、选择结构
C、递归结构
D、循环结构
12、在位运算中,操作数每左移一位,其结果相当于
A、操作数乘以2
B、操作数除以2
C、操作数除以4
D、操作数乘以4
13、设有语句:x=inputbox句输入数值”,〃0〃,〃示例〃)程序运行后,如果从键盘
上输人数值10并按回车键,则下列叙述中正确的足O
A、变量x的值是数值10
B、在InputBox对话框标题栏中显示的是“示例”
C、0是默认值
D、变量x的值是字符串“10”
14、以下程序的输出结果是
#include<sLdio.h>
structst
(
intx;
int*y;
)
*P;
intdt[4]={10,20,30,40);
structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
main()
(
P=aa;
printf(〃%d\n”,+-(p->x));
}
A、10
B、11
C、51
D、60
15、有以下程序
main()
(
inta,b,d=25;
a=d/10%9;
b-a&&(-1);
printf(/z%d,%d〃,a,b);
)
程序运行后的输出结果是________。
A、6,1
B、2,1
C、6,0
D、2,0
16、下列while循环,将执行
int1=4;
while(-i)printf(z,%d/z,i);
A、3次
B、4次
C、0次
D、无限次
17、当定义一个结构体变量时,系统为它分配的内存空间是.
A、结构中一个成员所需的内存容量
B、结构中第一个成员所需的内存容量
C、结构体中占内存容量最大者所需的容量
D、结构中各成员所需内存容量之和
18、有以下程序
main()
(
inta=l,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
〃短路问题printf("%d,%d\nz,,k,m);
)
程序运行后的输出结果是O
A、0,0
B、0,1
C、1,0
D、1,1
19、以下二维数组c的定义形式是o
A、intc[3]口
B、floatc[3,4]
C、doublec[3][4]
D、floatc3)4)
20、以下选项中,能定义m为合法的结构体变量的是
A、Lypedefstructabc{
doublea;charb;}m;
B、struct{
doublea;charb;}m;
C^structABC{
doublea;charb;}ABCm;
D、typedefABC{
doublea;charb;)ABCm;
二、填空题(共10题,每小题2分,共20分)
1、c语句分为_____大类。
2、若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值是
________o
3、c语言的源程序拓展名为()编译后生成()链接后生成。
4、C程序的运行需要经过_____和链接两步进行。
5、下列程序段的运行结果是________o
main()
(
intm=l,t=l;
for(;;)
(
rn=m+t;
t++;
if(m>9)break;
}
printf(〃%d\n〃,mJ;
}
6、以下程序的输出结果是o
#include<stdion.h>
#defineM5
ttdefineNM+M
main()
(
intk;
K=N*N*5;
printf("%d\n',k);
}
7、在c语言中,从参数的形式看,函数可以分为两类:无参函数和
函数。
8、使文件指针重新定位到文件读写的首地址的函数是o
9、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标
值。请填空。
#include<stdio.h>
main()
(
intaT101,*D,*s:
for(p=a;p-a<10:p++)scanf("%d",p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)s=;
printf("index=%d\nM,s-a);
)
10、下面程序段的运行结果是o
i=l;
a=0:
s=l;
do
(
a=a+s*i;
s二一s;
i++;
)
while(i<-10);
printf(,za=%d,/,a);
三、编程题(共3题,共40分)
1、编写程序:对10个数进行排序。(本题10分)
2、编写函数
voiddel(char*s,charc),其功能是在s所指字符串中删除与变量c相同的
字符,并设计主函数实现:(1)从键盘输入字符串和指定被删除的字符;
(2)调用del()函数实现删除操作;
⑶输出删除后的字符串。说明:不允许使用除gets和puts之外的任何字符
串处理库函数。(本题14分)
3、编写程序:从键盘输入n(nV10)个学生的学号(学号为4位的整数,从
1000开始)、成绩并存入结构数组中,查找并输匕成绩最高的学生信息。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3(n=3)
100085
100190
100275
输出样例:
100190(本题16分)
参考答案
一、单项选择题
1、B
2、B
【解析】实型常量有两种书写形式:①小数形式,它由符号、整数部分、小数
点及小数部分组成;②指数形式,由十进制小数形式加上指数部分组成,其形
式为十进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整
数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,
因此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是
实型常量。
3、C
【解析】C语言规定,在“if(表达式)语句l;else语句2;”这种形式的if
语句中,在每一个else前面有一个分号,整个语句结束处有一分号。在本题的
C)选项中,else前面少了一个分号,这样程序在编译时,会出现语法错误。
4、C
【解析】break语句通常用在循环语句和开关语句中。当break用于开关语句
switch中时可使程序跳出switchswitch而执行以后的语句;当break语句用
于do-whie.for、while循环语句中时可使程序终止循环而执行循环后面的
语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的
语句而强行执行下一次循环。A,B和D三个选项中均有错误。因此C选项正
确。
5、C
6、C
7、D
【解析】在ASCH码表中,根据码值由小到大的徘列顺序是:控制符、数字
符、大写英文字母、小写英文字母。
8、D
9、C
10、A
【解析】BCD选项都不合字符数组的定义。
11、C
12、A
【解析】左移运算符“VV”是双目运算符。其功能把“VV”左边的运算数
的各二进位全部左移若干位,由“VV”右边的数指定移动的位数,高位丢
弃,低位补0。左移1位,相当于该数乘以2。
13、D
【解析】InputBox函数返回的字符串值必须赋予一个变量才能被保留,它一次
只能输入一个值。变量x的值为“10”。
14、C
【解析】考查结构体成员数据的引用方法[解题要点]通过指针来引用结构体成
员的方法是(指针变量)->结构体成员名。[考点链接]结构体变量中的数据引
用。
15、B
16、D
17、D
18、C
19、C
20、B
二、填空题
1、5#五
2、1
3、.c|.obj|.exe
4、编译
5、11
6、['55']
7、有参
8、rewind
9、p
10、a=-5
三、编程题
1#include<stdio.h>
#defineN10
intmain()
(
inti,j,a[N],tenp;
printf(〃请输入10个数字:\n〃);
for(i=0;i<N;i+-)
scanf&a[i]);
for(i=0;i<N-l;i++)
{
intmin=i;
for(j=i+l;j<N;j++)
if(a[min]>a[j])min=j;
if(min!=i)
(
temp=a[nin];
a[min]=a[i];
a[i]=tenp;
}
}
printf("排序结果是:\n〃);
for(i=0;i<N;i+-)
printf(〃%d",a[i]);
printf(〃\n〃);
return0;
)
【解析】可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个
元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
2、^include<stdio.h>
voiddel(char*,char);
voidmain()
(
charstr[100],ch;
printf(〃请输入字符串:\n〃);
gets(str):
printf(〃请输入要删除的字符:\n〃);
scanf(〃%c〃,&ch;;
del(str,ch);
printf(z,\n删除后的字符串:\n");
puts(str);
}
voiddel(char*s,charc)
(
char*p=s;
while(*s)
(
if(*s!=cl*p++=*s;
13s++;
*P=,\o';
)
3、#include<stdio.h>
ttdefineN8
typedefstructstudent
(
inLno;
intscore;
}student;
intmain()
(
students[1000]:
intn,i;
intmax;
scanf(〃%d〃,&n);
for(i=0;i<n;i+-)
(
scanf("%d〃,&s[i].no);
scanf(〃%d〃,score);
max=s[0].score;
if(max<sfiLscore)
max=s[i].score;
)
for(i=0;i<n;i+-)
(
if(s[i].score~max)
printf('%d",s[i].no);
}
prinlriiiax);
return0;
中央美术学院历年计算机c语言考试试卷(四)
一、单项选择题(共20题,每小题2分,共40分)
1、c语言中,字符(char)型数据在微机内存中的存储形式是o
A、反码
B、补码
C、EBCDIC码
D、ASCH码
2、下面四个选项中,均是不正确的八进制数或十六进制数的选项是o
A、0160x8f018
B、Oabc017Oxa
C、010-0x110x16
I)、0al27ff-123
3、执行下面语句后的缩出为____
inti=-1;
if(i<=O)printf(〃****\n");
elseprintf;
A、****
B、%%%%
C、%%%%C
D、有语法错,不能执行
4、下面的代码inti=10;之后的for循环语句,语法正确,不会编译出错的是
A、for(i=0,i<10,i++)
B、for{
i=0;i<10;i++)
C^for(;i>5;i—)
D、for(i=0;i<10;i++;)
5、下面关于指针的说法中错误的是o
A、在指针定义的同时可以对其进行初始化
B、指针根据其所指向变量的类型的不同,所占用内存大小也不同
C、指针中存放的是内存单元的地址
D、相同类型的指针之间可以相互赋值
6、设有语句:〃inta=,b=2,*pl=&a,*p2=&b;〃,则使指针pl指向变量b的赋值
语句是o
A、pl=*p2
B、*pl=p2
C^pl=p2
D、*pl=*p2
7、下列数组说明中,正确的是()。
A、staticcharstr口二〃China”;
B、staticcharstr[];str=〃China〃;
C、staticcharstrl[5],str2[]={/,China//);strl=str2;
D、sLaLiccharslrl[],slr2[];sLr2-{,,China/,};slrcpy(sLrl,sLr2);
8、以下关于long、int和short类型数据占用内存大小的叙述中正确的是
A、均占4个字节
B、根据数据的大个来决定所占内存的字节数
C、由用户自己定义
D、由C语言编译系统决定
9、下面正确的字符串常量是o
A、
B、'376'
C、〃\n〃
D、376
10、若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元
素是O
intt[3][3],
*Dt⑶,k:
for(k=0;k<3;k++)pt[k]=&t[k][0];
A、t[2][0]
B、t[2][2]
C、t⑴⑵
D、
11、以下叙述中错误的是。
A、局部变量的定义可以在函数体和复合语句的内部
B、全局变星的定义可以在函数以外的任何部位
C、同一程序内局部变量和全局变量不允许同名
D、函数的形参属于局部变量
12、一个变量的指针就是o
A、变量的地址
B、变量的值
C、变量的名称
D、变量的类型
13、若要求从键盘读入含有空格字符的字符串,应使用函数
A^getc()
B、getsO
C>getchar()
Dsscanf()
14、下列描述说明正确的是o
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
15、有以下程序:
intf(intx);
main()
(
inta,b=0;
for(a=0;a<3:a++)
(
b=b+f(a);
putchar(,a-b);
}
}
intf(intx)
(
returnx*x;
}
程序运行后的输出结果是O
A、ABE
B、BDI
C、BCF
D、BCD
16、有以下程序:
main()
(
intc=0,k;
for(k=l;k<3;k+~)
switch(k)
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
)
printf(〃%d\n〃,c);
)
程序运行后的输出结果是_________O
A、3
B、5
C、7
D、9
17、有以下程序
structstu
(
intnum;
floattotalscore;
};
voidf(structstup;
(
structstus[2]={{20044,550),{20045,537}};
p.num=s[l].nun;
p.totalscore=sFll.totalscore;
)
main()
(
structstus[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n”,s[0].num,s[0].totalscore);
)
程序运行后的输出结果是O
A、20045537
B、20044550
C、20042580
D、20041703
18、下面程序输出的是o
main()
intt=l;
fun(fun(t));
}
fun(inth)
(
staticinta[3]={l,2,3};
intk;
for(k-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 33492-2024二手货交易市场经营管理规范》(2026年)深度解析
- 深度解析(2026)《GBT 33370-2016铜及铜合金软化温度的测定方法》
- 糖尿病科普指南
- 医疗数据安全标准对接:技术伦理考量
- 医疗数据安全成熟度评估:区块链驱动的信任机制
- 医疗数据安全应急:区块链零信任预案
- 医疗数据安全合规性风险应对策略
- 医疗数据安全区块链技术的应用价值与效益评估
- 医疗数据安全区块链保护的标准体系构建
- 文库发布:背影课件
- 沥青拌合站模块化设计与建设技术路线
- 出血性中风课件
- 2025年山东省政府采购评审专家考试题库附含答案
- 腹壁整形课件
- 冻土地区桩基工程应用-洞察及研究
- 移动传输管理办法
- 2025年中医经典考试题目及答案
- 自行缴纳社保的合同范本
- 水电站大坝安全现场检查技术规程 -DL-T 2204
- 2025至2030中国考试系统行业市场发展现状分析及发展趋势与投资前景报告
- 胶质瘤的围手术期护理
评论
0/150
提交评论