云南师范大学C语言期末试题1.docx
《云南师范大学C语言期末试题1.docx》由会员分享,可在线阅读,更多相关《云南师范大学C语言期末试题1.docx(12页珍藏版)》请在冰豆网上搜索。
云南师范大学C语言期末试题1
云南师范大学2009-2010学年下学期统一考试
《计算机技术基础》(C语言)期末考试试卷
考试方式(闭卷)考试时量:
90分钟试卷编号(A卷)
一、判断题:
(每题1分,共10分)
1.C语言中表达式3/2得到的结果是1.5。
b
A.对 B.错
2.在C程序中,APH和aph代表不同的变量。
a
A.对 B.错
3.c程序总是从程序的第一条语句开始执行。
b
A.对B.错
4.选择结构(if语句)和循环结构都可以使用嵌套形式。
a
A.对 B.错
5. 构成数组的各个元素可以有不同的数据类型。
b
A.对 B.错
6.对于用户自己定义的函数,在使用前必须加函数声明。
A.对 B.错
7.C语言中数据类型只有整型、实型和字符型。
A.对 B.错
8.有如下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是*(P+8)。
a
A.对 B.错
9.typedef可以定义生成新的数据类型。
b
A.对B.错
10.函数调用语句:
func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是3。
A.对B.错
二、单选题(在本题的每一小题的被选答案中只有一个正确答案,多选不给分,每题1分,共30分)
1.C语言源程序文件经过C编译后生成的目标文件的后缀名为_____B
A..c
B..obj
C..exe
D..cpp
2.下列不合法的用户标识符是________。
A
A.4dB.j2_KEY
C.DoubleD._8_
3.以下选项中正确的定义语句是____。
c
A.doublea;b;B.doublea=b=7;
C.doublea=7,b=7;D.double,a,b;
4.任何一个C语言的可执行程序都是从____开始执行的。
b
A.程序中的第一个函数
B.main()函数的入口处
C.程序中的第一条语句
D.编译预处理语句
5.若有定义语句:
int x=10;,则表达式x-=x+x的值为____。
A.-20 B.10 C.0 D.-10
6.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_C_。
A.算术运算、赋值运算、关系运算
B.系运算、赋值运算、算术运算
C.算术运算、关系运算、赋值运算
D.关系运算、算术运算、赋值运算
7.在C语言中,多分支选择结构语句为:
switch(c)
{case常量表达式1:
语句1;
……
case常量表达式n-1:
语句n-1;
default语句n;}
其中括号内表达式c的类型:
。
c
A.可以是任意类型B.只能为整型
C.可以是整型或字符型D.可以为整型或实型
8.C语言函数内定义的局部变量的隐含存储类别是____。
b
A.static
B.auto
C.register
D.extern
9.有定义:
char*p1,*p2;则下列表达式中正确合理的是____。
c
A.p1/=5
B.p1*=p2
C.p1=&p2
D.p1+=5
10.设变量定义为“intx,*p=&x;”,则p相当于_____。
a
A.&xB.*pC.xD.*(&x)
11.以下程序的执行结果是_______。
c
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A.0,1,2
B.1,2
C.1,2,3
D.1,2,3,4
12.以下程序的执行结果是________。
d
main()
{intw=1,x=2,y=3,z=4;
w=(wx:
w;
w=(wy:
w;
w=(wz:
w;
printf("%d",w);}
A.1
B.2
C.3
D.4
13.C语言中while和do—while循环的主要区别是_____c
A.While的循环控制条件比do—while的循环控制条件严格
B.do—while允许从外部转到循环体内
C.do—while的循环体至少无条件执行一次
D.do—while循环体不能是复合语句
14.下列说法中错误的是____。
b
A.一个数组只允许存储同种类型的变量
B.如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值
C.数组的名称其实是数组在内存中的首地址
D.当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改
15.若有定义语句:
intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是____。
C
A.m[--i]B.m[2*2]C.m[m[i]]D.m[m[0]]
16.下列语句定义pf为指向float类型变量f的指针,_____是正确的。
b
A.floatf,*pf=f;
B.floatf,*pf=&f;
C.float*pf=&f,f;
D.floatf,pf;
17.以下关于long、int和short类型数据占用内存大小的叙述中正确的是____。
d
A.均占4个字节
B.根据数据的大小来决定所占内存的字节数
C.由用户自己定义
D.由C语言编译系统决定
18.以下正确的字符常量是___。
a
A.'A'B.'cd'C."\a"D.''
19.如果inta=2,b=3,c=0,下列描述正确的是____。
b
A.a>b!
=c和a>(b!
=c)的执行顺序是一样的
B.!
a!
=(b!
=c)表达式的值为1
C.a||(b=c)执行后b的值为0
D.a&&b>c的结果为假
20.判断char型变量ch是否为大写字母的正确表达式是____。
A.’A’<=ch<=’Z’ B.(ch>=’A’)&(ch<=’Z’)
C.(ch>=’A’)&&(ch<=’Z’) D.(‘A’<=ch)AND(‘Z’>=ch)
21.下面说法中错误的是____。
d
A.共用体变量的地址和它各成员的地址都是同一地址
B.共用体内的成员可以是结构变量,反之亦然
C.在任一时刻,共用体变量的各成员只有一个有效
D.函数可以返回一个共用体变量
22.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是。
C
A.chars[10]="abcdefg";
B.chart[]="abcdefg",*s=t;
C.chars[10];s="abcdefg";
D.chars[10];strcpy(s,"abcdefg");
23.下面叙述中正确的是___B_。
A.全局变量在定义它的文件中的任何地方都是有效的
B.全局变量在程序的全部执行过程中一直占用内存单元
C.同一文件中的变量不能重名
D.使用全局变量有利于程序的模块化和可读性的提高
24.若变量已正确定义,执行语句scanf("%d,%d,%d",&k1,&k2,&k3);时,___是正确的输入d
A.2030,40
B.203040
C.20,3040
D.20,30,40
25.若函数的形参为一维数组,则下列说法中正确的是____。
d
A.调用函数时的对应实参必为数组名
B.形参数组可以不指定大小
C.形参数组的元素个数必须等于实参数组的元素个数
D.形参数组的元素个数必须多于实参数组的元素个数
26.main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;}printf(“a=%d,b=%d”,a,b);
}该程序的输出结果是_____c
A.1,0
B.1,1
C.2,1
D.2,2
27.定义共用体的关键字是_____a
A.union
B.enum
C.struct
D.typedef
28.下列关于指针定义的描述,___________是错误的。
b
A.指针是一种变量,该变量用来存放某个变量的地址值的
B.指针是一种变量,该变量用来存放某个变量的值
C.指针变量的类型与它所指向的变量类型一致
D.指针变量的命名规则与标识符相同
29.以下结构体类型说明和变量定义中正确的是。
A
A.typedefstructB.structREC;
{intn;charc;}REC;{intn;charc;};
RECt1,t2;RECt1,t2;
C.typedefstructRECD.struct
{intn=0;{intn;charc;}REC;
charc='A';}t1,t2;RECt1,t2;
30.使用fseek函数可以实现的操作是。
A
A.改变文件的位置指针的当前位置
B.文件的顺序读写
C.文件的随机读写
D.以上都不对
三、填空题:
(每空2分,共20分)。
1.若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值是【1】1
2.C语言中一个函数由函数首部和【1】两部分组成。
3.设变量定义为“intx=3,*p=&x;”,设变量x的地址为2000,则*p=【1】,&(*p)=【2】(填数字)
4.以下是对fun函数的正确调用:
fun(a+b,fun(a+b,(a,b)));
则fun函数有【1】个形参。
2
5.有以下程序段,且变量已正确定义和赋值
for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能为完全相同
【1】;k=1;
while(【2】)
{s=s+1.0/(k*(k+1));【3】;}
printf("s=%f\n\n",s);
6.有以下程序功能是:
输入一个正整数,判断其是否为素数。
请填空
#include
voidmain()
{
intn,i
printf("请输入一个正整数:
");
scanf("%d",&n);
for(【1】;iif(【2】)break;
if(iprintf("%d不是素数\n",n);
elseprintf("%d是素数\n",n);
}
四、编程题:
(共40分)。
1.从键盘输入3个整数a,b,c,要求从小到大输出。
(12分)
2.请用while循环把1~100之间所有的偶数相加,结果存放到变量sum中。
(13分)
3.有一个数组score[8],内放8个学生的英语成绩,写一个函数floataverage(floata[],intn)(其中n表示学生的人数)求出平均分aver,并在主函数中输出平均分和高于平均分的英语成绩。
(要求输出保留2位小数)(15分)
答案
一、判断题:
1~5BABAB6~10BBABA
二、单选题
1~5BACBD6~10CCBCA
11~15CDCBD16~20BDABC
21~25DCBDD26~30CABAA
三、填空题:
1.12.函数体
3.[1]3[2]2000
4.2
5.[1]s=1.0[2]k<=n[3]k++
6.[1]i=2[2]n%i==0
四、编程题:
1.参考程序:
#include
voidmain()
{
inta,b,c,t;
printf("请输入3个整数:
");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("从小到大的数为%d,%d,%d",a,b,c);
}
2.参考程序:
#include
voidmain()
{
inti=2,sum=0;
while(i<=100)
{sum=sum+i;
i=i+2;
}
printf("sum=%d\n",sum);
}
3.参考程序:
#include
floataverage(floata[],intn)
{inti;floataver=0;
for(i=0;iaver=aver+a[i];
aver=aver/n;
returnaver;
}
voidmain()
{
inti,s,c;
floatscore[8],s_aver;
printf("输入学生的成绩:
");
for(i=0;i<8;i++)
scanf("%f",&score[i]);
for(i=0;i<8;i++)
printf("%.2f\n",score[i]);
printf("\n");
s_aver=average(score,8);
printf("学生的平均成绩是:
%.2f\n",s_aver);
for(i=0;i<8;i++)
{if(score[i]>s_aver)
printf("高于平均成绩有:
%.2f\n",score[i]);
}
}