云南师范大学C语言期末试题B.docx
《云南师范大学C语言期末试题B.docx》由会员分享,可在线阅读,更多相关《云南师范大学C语言期末试题B.docx(11页珍藏版)》请在冰豆网上搜索。
![云南师范大学C语言期末试题B.docx](https://file1.bdocx.com/fileroot1/2023-2/25/b6450e37-0cd1-46a2-8741-862928df116a/b6450e37-0cd1-46a2-8741-862928df116a1.gif)
云南师范大学C语言期末试题B
云南师范大学2009-2010学年C语言期末考试试卷
考试方式(闭卷)考试时量:
90分钟试卷编号(B卷)
一、判断题:
(每题1分,共10分)
1.C语言中表达式3/2得到的结果是1.5。
A.对 B.错
2.语句是C程序的基本构成单位。
A.对B.错
3.在C程序中,函数既可以嵌套定义,也可以嵌套调用。
A.对 B.错
4.数组名代表数组的首地址。
A.对 B.错
5.循环结构中的break语句是使整个循环终止执行。
A.对B.错
6.字符数组可以存放字符串,因此字符数组就是字符串。
B
A.对B.错
7.在if语句中,不可以没有else子句。
A.对B.错
8.在程序中凡是以“#”号开始的语句行都是预处理命令行。
A
A.对B.错
9.设有数组定义:
chara[]="hi!
";则数组a所占的空间为3。
A.对B.错
10.宏定义中的宏名必须是大写字母。
b
A.对 B.错
二、单选题(每一小题的被选答案中只有一个正确答案,每题1分,共30分)
1.C语言规定,必须用作为主函数名。
B
A.FunctionB.mainC.includeD.stdio
2.以下叙述中正确的是____。
C
A.C程序的基本组成单位是语句
B.C程序中的每一行只能写一条语句
C.简单C语句必须以分号结束
D.C语句必须在一行内写完
3.下列正确的标识符是____。
C
A.%yB.6aC._doD.a+b
4.在下面几组数据类型中,全为最常用的基本数据类型的是哪一组:
。
A
A.整型实型字符型B.整型数组指针
C.数组结构体共用体D.指针逻辑型空类型
5.C语言中不能用来表示整常数的进制是。
D)
A.十进制B.十六进制C.八进制D.二进制
6.表达式:
(int)((double)9/2)-(9)%2的值是。
B
A.0B.3C.4D.5
7.C语言中,运算对象必须是整型数的运算符是。
D
A.**B.\C.%和\D.%
8.设x=1,y=2,m=4,n=3,则表达式x>y?
x:
my:
n的值为:
。
C
A.1 B.2 C.3 D.4
9.若有说明语句:
charc=‘\64’;则变量C包含:
。
A
A.1个字符B.2个字符
C.3个字符D.说明不合法,C值不确定
10.以下不能正确表示代数式
的C语言表达式是()。
D
A.2*a*b/c/dB.a*b/c/d*2
C.a/c/d*b*2D.2*a*b/c*d
11.任何一个C语言的可执行程序都是从___开始执行的。
B
A.程序中的第一个函数B.main()函数的入口处
C.程序中的第一条语句D.编译预处理语句
12.能正确表示x的取值范围在[0,100]或[-10,-5]内的表达式是。
B
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)
C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)
D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
13.C语言函数的隐含存储类别是____。
D
A.staticB.autoC.registerD.extern
14.将字符串str2连接到字符串str1中应使用。
B
A.strcpy(str1,str2)B.strcat(str1,str2)
C.strcmp(str1,str2)D.strcat(str2,str1)
15.有以下程序
#include
main()
{ int a=1,b=0;
printf("%d,",b=a+b);
printf("%d",a=2*b);
}
程序运行后的输出结果是。
D
A.0,0B.1,0C.3,2D.1,2
16.设变量定义为“inta,b;”,执行语句scanf("a=%d,b=%d",&a,&b);时,输入_____,则a和b的值都是10。
D
A.1010B.10,10C.a=10b=10D.a=10,b=10
17.不是给数组的第一个元素赋值的语句是。
D
A.inta[2]={1};B.inta[2]={1*2};
C.inta[2];scanf(“%d”,a);D.a[1]=1;
18.若用数组名作为函数调用的实参,传递给形参的是。
A
A.数组的首地址 B.数组第一个元素的值
C.数组中全部元素的值 D.数组元素的个数
19.循环语句中的for语句,其一般形式如下:
for(表达式1;表达式2;表达式3)语句
其中表示循环条件的是。
B
A.表达式1B.表达式2C.表达式3D.语句
20.已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。
执行语句printf("%d,%d",c1,c2-2);后,输出结果是__。
C
A.A,BB.A,68C.65,66D.65,68
21.下面叙述中正确的是___B_。
A.全局变量在定义它的文件中的任何地方都是有效的
B.全局变量在程序的全部执行过程中一直占用内存单元
C.同一文件中的变量不能重名
D.使用全局变量有利于程序的模块化和可读性的提高
22.以下叙述中错误的是___。
A
A.可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
23.假定所有变量均已正确说明,下列程序段运行后x的值是。
B
a=b=c=0;x=35;
if(!
a)x=-1;
elseif(b);
if(c)x=3;
elsex=4;
A.34B.4C.35D.3
24.以下程序的执行结果是______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,
25.以下程序的输出结果是________。
a
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",z,y,x);}
A.30,20,10
B.10,20,30
C.456,567,678
D.678,567,456
26.14.下面函数调用语句中实参的个数为:
。
B
func((exp1,exp2),(exp3,exp4,exp5))
A.1B.2C.4D.5
27.有宏定义:
#defineE2.718则编译预处理时将E替换成一个__D__。
A.单精度常量
B.单精度变量
C.双精度变量
D.字符串
28.变量的指针,其含义是指该变量的。
A
A.地址B.值C.名D.一个标志
29.若有定义inta[10],*p=a;,则*(p+5)表示___。
B
A.元素a[5]的地址B.元素a[5]的值
C.元素a[6]的地址D.元素a[6]的值
30.有如下程序段
int*p,a=10,b=1
p=&a;a=*p+b;
执行该程序段后,a的值为。
C
A.12B.10C.11D.编译出错
三、填空题:
(每空2分,共20分)。
1.在C语言中,程序运行期间,其值可以被改变的量叫【1】。
2.表示条件:
x≥0或x<100的C语言表达式是【1】。
3.已知:
inti=3,j=4,m,n;m=++i;n=j++;问语句执行后m=【1】,n=【2】。
4.有定义floaty=1.23456;若希望在屏幕上输出"1.23",则相应的C语言语句应写为printf("【1】",y);。
(2分)
5.下面程序的输出是【1】。
main()
{intarr[10],i,k=O:
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
6.下面程序的输出结果是【1】。
main()
{ints=0,k;
for(k=5;k>=0;k--)
{swich(k)
{case1:
case5:
s++;break;
case3:
case4:
break;
case0:
case2:
s+=2;break;
}
}
printf("s=%d\n",s);
}
7.以下程序可计算10名学生1门课程的平均分,请填空。
floataverage(floatarray[10])
{inti;floataver,sum=array[0];
for(i=1;i<10;i++)
【1】;
aver=sum/10;
returnaver;
}
main()
{floatscore[10],aver;inti;
for(i=0;i<10;i++)
scanf("%f",___【2】____);
aver=___【3】___;
printf("averagescoreis%5.2f\n",aver);}
四、编程题:
(共40分)。
1.从键盘输入1个3位整数n,请判断其是否是“水仙花数”,是则输出n,否则输出“不是”.。
(“水仙花数”是一个其各个位数的立方和等于该整数的三位数,如:
371=33+73+13)(12分)
2.从键盘输入2个整数x和n,用for循环求出xn并输出。
(13分)
3.利用自定义函数voidfun(charc[]),由实参传来一个字符串,实现以下功能:
将字符串中的大写字母转换为小写字母,其他字符不变,要求在主函数中输入字符串str并输出处理后的字符串。
(15分)
答案
一、判断题:
1~5BBBAA6~10BBABB
二、单选题
1~5BCCAD6~10BDCAD
11~15BBDBD16~20DDABC
21~25BABCA26~30BDABC
三、填空题:
1.变量
2.x>=0||x<100或x<100||x>=0
3.[1]4[2]4
4.%4.2f
5.12
6.s=6
7.[1]sum+=array[i]或sum=sum+array[i]或sum=array[i]+sum[2]&score[i][3]average(score)
四、编程题:
1.参考程序:
#include
voidmain()
{
inta,b,c,n;//a为百位,b为十位,c为个位
printf("请输入1个3位整数:
");
scanf("%d",&n);
a=n/100;
b=n%100/10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
printf("%d是水仙花数\n",n);
elseprintf("不是\n");
}
2.参考程序:
#include
voidmain()
{
intx,n,i,s=1;
printf("请输入2个整数:
");
scanf("%d%d",&x,&n);
for(i=1;i<=n;i++)
s=s*x;
printf("x的n次方为:
%d\n",s);
}
3.参考程序:
#include
voidmain()
{
voidfun(charc[]);
charstr[20];
printf("请输入字符串:
");
gets(str);
fun(str);
printf("转换后的字符串为:
");
puts(str);
}
voidfun(charc[])
{
inti;
for(i=0;c[i]!
='\0';i++)
if(c[i]>='A'&&c[i]<='Z')c[i]=c[i]+32;
}