中央广播电视大学C程序设计.docx
《中央广播电视大学C程序设计.docx》由会员分享,可在线阅读,更多相关《中央广播电视大学C程序设计.docx(18页珍藏版)》请在冰点文库上搜索。
中央广播电视大学C程序设计
中央广播电视大学2008-2009学年度第二学期“开放本科”期末考试
一、单选题(每小题2分,共20分}
1.由C语言源程序文件编译而成的目标文件的缺省扩展名为(D)。
A.cppB.cC.exeD.obj
2.设x和y均为逻辑值,则x││y为假的条件是(C)。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
3.枚举类型中的每个枚举常量的值都是一个(A)。
A.整数B.浮点数C.字符D.记录
4.循环语句“for(i=0;1<-n;i++)S;”中循环体S被执行的次数为(D
A.1B.n–1C.nD.n+1
5.假定有定义为”inta[4][5]={{1,3,5},{2,8}};",则a[1][1]的值为(D)
A.3B.5C.2D.8
6.在下面的选项中,不能作为函数的返回类型的是(C)。
A.voidB.intC.newD.long
7.假定x的值为5,y的值为6,则表达式x++*--y的值为(A)。
A.25B.30C.36D.42
8.用calloc函数创建具有10个整型元素的动态存储空间正确调用是(C)
A.calloc(10,sizeof(char))B.calloc(10)
C.calloc(10,sizeof(int))D.calloc(20,sizeof(int))
9.假定有定义“intb[10],*pb;",则不正确的赋值为(B)。
A.pb=bB.pb=b[5]C.pb=b+2D.pb=&b[0]
10.标准输人设备的文件流标识符是(B)。
A.stderrB.stdinC.stdoutD.stdio
二、填空题(每小题2分,共26分)
1.执行“printf("%c",'A’十2);”语句后得到的输出结果为C。
2.shortint类型的长度为2
3.用类型关键字表示十进制常数3.26f的类型为_float。
4.假定y=10,则表达式++y*3的值为33
5.逻辑表达式(x==0&&y>5)的相反表达式为(x!
=0’IIY<=5)或:
(xIIY<=5)
6.若x=5,Y=10,则x!
=y的逻辑值为_1。
7.假定二维数组的定义为“inta[3][5];",则该数组所占存储空间的字节数为60
8.使用“typedefcharBB[10][50];”语句定义BB为含有10行50列的二维字符数组类型。
9.字符串“a:
\\xxk\\数据”的长度为11
16.假定p所指对象的值为25,p+1所指对象的值为46,则,*++p的值为46。
11.假定一个数据对象为int*,类型,则指向该对象的指针类型为int**
12.假定一个结构类型的定义为“structA{inta,b;A*c;};”,则该类型的长度为12
13.假定要访问一个结构对象x中的数据成员a,则表示方式为_x.a。
三、写出下列每个程序运行后的输出结果(每小题6分,共30
1.#include
voidmain(){
inti,s=0
for(i=1;;i++){
if(s>30)break;
if(i%2==0)s+=i;
}
printf("s=%d\n",s)
解:
s=42
2.#include
voidmain()
inta[9]={36,25,48,24,55,40,18,66,20};
inti,bl,b2;
bl=b2=a[0]
for(i=1;i<9;i++){
if(a[i]>bl)bl=a[i];
if(a[i]}
printf("%d%d\n",bl,b2)
}
解:
6618
3.#include
voidSB(charch){
switch(ch){
case'A':
case,a':
printf("WW”);break
case'B':
case'b':
printf("GG“);break
default:
printf("BB“);break;
)
}
voidmain(){
charal“'a',a2='B',a3二,f'
SB(al);SB(a2);SB(a3);
printf("\n");
}
解:
WWGGBB
4.#include
#defineM6
voidmain()
inti,x;
inta[M]={10,15,22,37,46,58);
for=(i=O;ifor(i=0;i<6;i++)print("%d",a[i]);
printf("\n");
}
解:
584637221510
5.#include
structWorker
charname[15];intage;floatpay;
}
voidmain()
structWorkerx={"wanghua',52,2350};
structWorkery,*p
y=x;P=&x
printf("%d%7.2f\n",y.age+p->age,p->pay+20)
}
解:
1042370.00
四、写出下列每个函数的功能(每小题6分,共12分)
1.intFH()
intx,y=0;
scanf("%d",&x);
while(x!
=-1){y+=x;scanf("%d",&x);
returny;
函数功能:
求出从键盘上输入的一批整数的总和,以-1作为结束输人的标志。
2.intFF(structIntNode*f)//f为指向一个单链表的表头指针
{
intn=0
if(!
f)return0;
while(f){
n++
f=f->next;
}
returnn
}
假定structIntNode的类型定义为:
structIntNode{intdata;structIntNode*next;
函数功能:
求出并返回由f所指向的单链表中所有结点的个数。
五、按题目要求编写程序或函数(每小题6分,共12分)
1、编写一个程序,利用whil·循环,计算并打印输出1十音+合十⋯+告的值,其中正整数n值由键盘输入。
假定求和变量用sum表示,计数变量用i表示,sum,i和n均定义为全局变量,sum和i的初值分别被赋予0和1,
1.#include
Intn,i=1;
doublesum=0;
voidmain()
{
scanf("%d",&.n);
while(i<=n)sum+=(double)1/i++;
printf("sum=%1f\n",sum);
}
2.根据函数原型"voidDD(inta[],intn,intMM)”编写函数定义,利用双重循环查找并、打印输出数组a[n〕中任何两个元素的值等于mm值的元素值。
假定a[司十a[j〕等于mm,则输出格式为:
(a[i],a[J])
voidDD(inta[],intn,intMM)
{
inti,j;
fore=0;1for(j=i+l;jif(a[i]+a[j]==MM)printf("%d,%d\n",a[i],a[j]);
}
中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试
一、单选题(每小题2分。
共20分)
l.C语言源程序文件的缺省扩展名为(D)。
A.cppB.exeC.objD.C
2.设x和Y均为逻辑值,则x&&Y为真的条件是(A)。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
3.在下列的符号常量定义中,正确的定义格式为(C)。
A.#defineMlB.constintM220C.#defineM310D.constcharmark
4.for循环语句能够被改写为(D)语句。
A,复合B.ifC.switchD.while
5.在下面的一维数组定义中,错误的定义格式为(C)。
A.inta[]={1,2,3}B.inta[10]={0}C.inta[]D.inta[5]
6.下面的函数原型声明中存在语法错误的是(C)。
A.AA(inta,intb)C.AA(inta;intb;)B.AA(int,int)D.AA(inta,int)
7.假定a为一个数组名,则下面存在错误的表达式为的(B)。
A.a[i]B.*a++C.*aD.*(a+1)
8.假定有定义为“inta[10],x,*pa=a;",若要把数组a中下标为3的元素值赋给x,则不正确的赋值为(D)。
A.x=pa[3]B.x=*(a+3)C.x=a[3]D.x=*pa+3
9.char类型的长度为(A)个字节。
A.1B.2C.3D.4
10.向一个二进制文件中写人信息的函数为(D)。
A.fgets()B.fputs()C.fread()D.fwrite()
二、填空题(每小题2分,共26分)
1.C语言中的每条复合语句以}(或右花括号)作为结束符。
2.在#include命令中所包含的文件,可以是头文件,也可以是程序文件。
3.十进制数35对应的八进制数为043。
4.假定x=5,则表达式2+x++的值为7。
5.增量表达式++y表示成赋值表达式为y=y+1
6.若x=5,y=10,则X>y的值为0。
7.假定二维数组的定义为“inta[3][5];",则该数组所含元素的个数为15。
8.执行“typedefintABC[10];”语句把ABC定义为具有10个整型元素的数组类型。
9.strcat()函数用于连接两个字符串。
10.假定p所指对象的值为25,p+1所指对象的值为46,则‘p++的值为25。
11.若要把一个整型指针P转换为字符指针,则采用的强制转换表达式为(char*)p
12.NULL是一个符号常量,通常作为空指针值,它对应的值为0。
13.假定要动态分配一个类型为structWorker的对象,并由r指针指向这个对象,则使用的表达式为structWorker*r=malloc(sizeof(structWorker))
三、写出下列每个程序运行后的输出结果(每小题6分.共30分)
1.#include
voidmain(){
inti,s=0;
for(i=1;i<6;i++)s+=i*i;
printf("s=%d\n",s);
}
解:
s=55
2.#include
#defineN6
voidmain()
{
inti,a[N]={2,5,8,10,15,21};
for(i=0;iif(a[i]%5)printf("%d",a[i]);
printf("\n");
}
解:
2821
3.#include
#include
voidmain(){
inti;
unsignedintlen;
char*a[5]=("student","worker,"cadre',"soldier',"zzeasan123"}
len=strlen(a[0]);
for(i=1;i<5;i++)
if(strlen(a[i])>len)len=strlen(a[i]);
printf("%d\n",len);
解:
10
4.#include
voidmain()
{
inta,b;
for(a=2,b=3;b<20;){
printf("%d%d",a,b);
a=a+b;
b=a+b;
}
printf("%d%d\n",a,b);
}
解:
23581321
5.#include
voidLE(int*a,int*b){
intx=*a;
*a=*b;*b=x;
}
voidmain(){
intx=15,y=26;
printf("%d%d\n",x,y);
LE(&x,&y);
printf("%d%d\n",x,y);
}
解:
1526
2615
四、写出下列每个函数的功能【每小题6分.共12分)
1.#include
intSG(intx){//x为大于等于2的整数
inta=(int)sqrt(x);//sqrt(x)取x的平方根
inti=2;
while(i<=a){
if(x%i==0)break;
1++;
}
if(i<=a)return0;elsereturn1;
}
函数功能:
判断x是否为一个素数,若是则返回1,否则返回。
2.intFindMax(structIntNode*f)//f为一个单链表的表头指针
{
intx;
if(!
f){printf("单链表为空\n"),exit(l);}
x=f->data;
f=f一>next;
while(f){
if(f->data>x)x=f->data;
f=f->next;
}
returnx;
}
假定structIntNode的类型定义为:
structIntNode(intdata;structIntNode=next;};
函数功能:
求出由f所指向的单链表中所有结点的最大值。
五、按题目要求编写程序或函数(每小题6分,共12分!
1.编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。
#include
voidmain()
{
inti;
for(i=3;i<=50;i++)
if(i%3==0││i%5==0)printf("%d",i);
printf("\n");
}
2.编写一个递归函数"intMinta[],intn)",求出数组a中所有n个元素之积并返回。
intFF(inta[],intn)
{
if(n<=0){printf("n值非法\n"),exit
(1);}
if(n==1)returna[n-1];
elsereturna[n-1]*FF(a,n-1);
}
中央广播电视大学2008-2009学年度第一学期“开放本科”期末考试
一、单选题(每小题2分.共20分)
1.由C语言目标文件连接而成的可执行文件的缺省扩展名为(D)。
A.cppB.exeC.obiD.c
2.设有两条语句为“inta=12;a+=a*a;",则执行结束后,a的值为(C)。
A.12B.144C.156D.288
3.带有随机函数调用的表达式rand()%20的值在(C)区间内。
A.1~19B.1~20C.0~19D.0~20
4.for循环语句“for(i=0;iA.(n十1)/2B.n/2+1C.n/2一1D.n-1
5.在下列的字符数组定义中,存在语法错误的是(D)。
A.chara[20]="abcdefg";B.chara[]="x+y=55.“;
C.chara[15]={’1’,’2’};D.chara[10]=5’;
6.若有一个函数原型为“double*function()",则它的返回值类型为(B)。
A.实数型B.实数指针型C.函数指针型D.数组型
7.在C语言中,所有预处理命令都是以(B)符号开头的。
A.*B.#C.&.D.@
8.假定整数指针p所指数据单元的值为30,p+1所指数据单元的位为40,则执行
*p++后,p所指数据单元的值为(A)。
A.40B.30C.70D.10
9.若要使p指向二维整型数组a[10][20],则p的类型为(D)。
A.intB.int**C.int*[20]D.int(*)[20]
10.表示文件结束符的符号常量为(C)
A.eofB.EofC.EOFD.feof
二、填空题(每小题2分,共26分)
1一个函数定义由函数头和函数体两部分组成。
2.执行“printf("%c",'F'-2);”语句后得到的输出结果为D
3.int类型的长度为4
4.表达式(float)25/4的值为6.25
5.若x=5,y=10,则x<=y的逻辑值为1
6.作为语句标号使用的case和default只能用于switch或开关或分情况语句的定义体中。
7.在程序中执行到return或返回语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
8.假定二维数组的定义为“chara[M][N]”,则该数组所含元素的个数为M*N
9.存储字符’a’需要占用存储器的1个字节空间。
10.用于存储一个长度为n的字符串的字符数组的长度至少为n+l
11.假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式(*p)++后,P
所指对象的值为26
12.假定P是一个指向整数对象的指针,则用*P表示该整数对象。
13.假定一个结构类型的定义为“structB{inta[5];char*b;};",则该类型的理论长度为24
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
1.#include
voidmain(){
inti,sl=0,s2=0
for(i=0;i<10;i++)
if(i%2)sl+=i;
elses2+=i;
printf("%d%d\n",sl,s2)
}
解:
2520
2.#include
constintM=20
voidmain()
{
inti=2;
while
(1){
if(i>M/2)break;
if(M%i==0)printf("%d“,i);
1++;
}
Printf("\n");
}
解:
24510
3.#include
inta[6]={4,5,6,15,20,42};
voidmain()
{
Sl=s2=0;
for(i=0;i<6;i++){
switch(a[i]%2){
case0:
s2+=a[i];break;
case1:
sl+=a[i];break;
}
}
printf("%d%d\n",sl,s2);
}
解:
2042
4.#include
Voidmain(){
inta[3][3]={{3,5,7},(9,11,13},{6,8,20)};
inti,*p=&a[0][0];
for(i=0;i<9;i++){
if(*p>10)printf("%d",*P);
P++;
}
Printf("\n");
}
解:
111320
5.#include
#include
StructWorker{charname[15];intage;floatpay;};
voidmain(){
structWorkerx;
char*t="liouting";
intd=38;floatf=400;
strcpy(x.Name,t);
x.age=d;x.pay=f;
x.age++;x.pay*=2;
printf("%s%d%6.2f\n",xName,xage,xpay);
}
解:
liouting39800.00
四、写出下列每个函数的功能
1.#include
intSA(inta,intb){
if(a>b)return1;
elseif(a==b)return0
elsereturn一1;
}
函数功能:
比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a
2.voidOutput(structIntNode*f)//f为单链表的表头指针
{
if(!
f)return;
while(f);
print{("%d",f一>data)
f=f一>next;
}
print("\n");
}
假定structIntNode的类型定义为:
structIntNode{intdata;structIntNode*next;};
函数功能:
遍历并输出由f所指向的单链表中每个结点的值。
五、按题目要求编写程序或函数
1.编写一个程序,计算1+3+3²+…+3¹º的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
#include
voidmain()
{
inti;
intp=1;
ints=1;
for(i=1;i<=10;i++){p*=3;s+=p;}
printf("%d\n",s);
}
2.根据函数原型I'intMinta[]intn)",编写函数定义,计算并返回数组a[n」中所有元素之和。
intFF(inta[],intn)
{
inti,sum=0
for(i=0;ireturnsum;
}