中央广播电视大学C程序设计Word文件下载.docx
《中央广播电视大学C程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《中央广播电视大学C程序设计Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。
,则该数组所占存储空间的字节数为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<
stdio.h>
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]
i<
9;
if(a[i]>
bl)bl=a[i];
if(a[i]<
b2)b2=a[i];
%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:
BB“);
break;
)
voidmain(){
charal“'
a'
a2='
B'
,a3二,f'
SB(al);
SB(a2);
SB(a3);
\n"
);
WWGGBB
4.#include<
#defineM6
voidmain()
inti,x;
inta[M]={10,15,22,37,46,58);
for=(i=O;
M/2i++){x=a[i];
a[i]=a[M一1一1〕;
a[M-1一i]=x;
for(i=0;
6;
i++)print("
%d"
a[i]);
584637221510
5.#include<
structWorker
charname[15];
intage;
floatpay;
structWorkerx={"
wanghua'
52,2350};
structWorkery,*p
y=x;
P=&
x
%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("
&
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<
stdio.h>
Intn,i=1;
doublesum=0;
voidmain()
.n);
while(i<
=n)sum+=(double)1/i++;
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;
1<
n;
i++)
for(j=i+l;
j<
j++)
if(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()
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。
,则该数组所含元素的个数为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分)
voidmain(){
inti,s=0;
i++)s+=i*i;
s=%d\n"
s);
s=55
#defineN6
voidmain()
inti,a[N]={2,5,8,10,15,21};
N;
if(a[i]%5)printf("
2821
#include<
string.h>
inti;
unsignedintlen;
char*a[5]=("
student"
"
worker,"
cadre'
soldier'
zzeasan123"
len=strlen(a[0]);
5;
i++)
if(strlen(a[i])>
len)len=strlen(a[i]);
%d\n"
,len);
10
inta,b;
for(a=2,b=3;
b<
20;
){
%d%d"
a,b);
a=a+b;
b=a+b;
%d%d\n"
a,b);
23581321
voidLE(int*a,int*b){
intx=*a;
*a=*b;
*b=x;
intx=15,y=26;
x,y);
LE(&
x,&
y);
x,y);
1526
2615
四、写出下列每个函数的功能【每小题6分.共12分)
math.h>
intSG(intx){//x为大于等于2的整数
inta=(int)sqrt(x);
//sqrt(x)取x的平方根
inti=2;
=a){
if(x%i==0)break;
1++;
}
if(i<
=a)return0;
elsereturn1;
判断x是否为一个素数,若是则返回1,否则返回。
2.intFindMax(structIntNode*f)//f为一个单链表的表头指针
{
intx;
f){printf("
单链表为空\n"
),exit(l);
x=f->
data;
f=f一>
if(f->
data>
x)x=f->
returnx;
structIntNode(intdata;
structIntNode=next;
求出由f所指向的单链表中所有结点的最大值。
五、按题目要求编写程序或函数(每小题6分,共12分!
1.编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。
#include<
voidmain()
for(i=3;
=50;
i++)
if(i%3==0││i%5==0)printf("
i);
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;
i<
i+=2)S;
”中循环体S语句被执行的次数为(A)
A.(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
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<
inti,sl=0,s2=0
10;
if(i%2)sl+=i;
elses2+=i;
sl,s2)
2520
2.#include<
stdio.h>
constintM=20
inti=2;
while
(1){
if(i>
M/2)break;
if(M%i==0)printf("
%d“,i);
1++;
Printf("
24510
inta[6]={4,5,6,15,20,42};
Sl=s2=0;
switch(a[i]%2){
case0:
s2+=a[i];
case1:
sl+=a[i];
,sl,s2);
2042
Voidmain(){
inta[3][3]={{3,5,7},(9,11,13},{6,8,20)};
inti,*p=&
a[0][0];
for(i=0;
9;
i++){
if(*p>
10)printf("
,*P);
P++;
\n"
);
111320
5.#include<
stdio.h>
#include<
string.h>
StructWorker{charname[15];
floatpay;
structWorkerx;
char*t="
liouting"
intd=38;
floatf=400;
strcpy(x.Name,t);
x.age=d;
x.pay=f;
x.age++;
x.pay*=2;
%s%d%6.2f\n"
,xName,xage,xpay);
liouting39800.00
四、写出下列每个函数的功能
intSA(inta,intb){
if(a>
b)return1;
elseif(a==b)return0
elsereturn一1;
比较两个整数a和b的大小,若a>
b则返回1,若a==b则返回0,若a<
b则返回-1
2.voidOutput(structIntNode*f)//f为单链表的表头指针
f)return;
while(f);
print{("
,f一>
data)
f=f一>
next;
print("
structIntNode*next;
};
遍历并输出由f所指向的单链表中每个结点的值。
五、按题目要求编写程序或函数
1.编写一个程序,计算1+3+3²
+…+3¹
º
的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
#include<
intp=1;
ints=1;
=10;
i++){p*=3;
s+=p;
%d\n"
s);
2.根据函数原型I'
intMinta[]intn)"
,编写函数定义,计算并返回数组a[n」中所有元素之和。
intFF(inta[],intn)
inti,sum=0
i++)sum+=a[i];
returnsum;