国家开放大学春季学期电大考试C语言程序设计题库题库及答案文档格式.docx
《国家开放大学春季学期电大考试C语言程序设计题库题库及答案文档格式.docx》由会员分享,可在线阅读,更多相关《国家开放大学春季学期电大考试C语言程序设计题库题库及答案文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
default\n"
);
}
%s\n"
switchend."
}
运行结果:
1114switchend.
2.程序代码:
inti,s=0;
for(i=1;
i<
=6;
i++)
s+=i*i;
s=%d\n"
s);
s=91
3.程序代码:
inti,s1=0,s2=0;
for(i=0;
10;
if(i%2)s1+=i;
elses2+=i;
%d%d\n"
s1,s2);
2520
4.程序代码:
intn=10,y=1;
while(n--){y++;
y++;
y=%d\n"
y);
y=21
5.程序代码:
intf,f1,f2,i;
f1=f2=1;
%d%d"
f1,f2);
for(i=3;
=10;
i++){
f=f1+f2;
printf("
f);
if(i%5==0)printf("
\n"
f1=f2;
f2=f;
11235
813213455
6.*程序代码:
math.h>
inti,n;
for(n=2;
n<
=20;
n++){
inttemp=(int)sqrt(n);
//sqrt(n)求出n的平方根。
然后取整
for(i=2;
=temp;
if(n%i==0)break;
if(i>
temp)printf("
n);
235711131719
7.程序代码:
constintM=20;
inti,c2,c3,c5;
c2=c3=c5=0;
=M;
if(i%2==0)c2++;
if(i%3==0)c3++;
if(i%5==0)c5++;
%d%d%d\n"
c2,c3,c5);
1064
8.程序代码:
inti,s;
for(i=1,s=0;
15;
if(i%2==0||i%3==0)continue;
i);
s+=i;
%d\n"
157111337
C语言程序设计作业2
第4章至第6章)
1.C2.C3.C4.A5.C
1.82.323.604.M*N
5.0~M-16.0~N-17.BB8.1
9.010.111.1112.n+1
13.比较14.复制15.1016.19
1.(练习题4.2第1小题)程序代码:
inta[10]={12,39,26,41,55,63,72,40,83,95};
inti,i1=0,i2=0;
if(a[i]%2==1)i1++;
elsei2++;
i1,i2);
64
2.*程序代码:
string.h>
inti;
char*a[5]={"
student"
worker"
cadre"
soldier"
peasant"
};
char*p1,*p2;
p1=p2=a[0];
5;
if(strcmp(a[i],p1)>
0)p1=a[i];
if(strcmp(a[i],p2)<
0)p2=a[i];
%s%s\n"
p1,p2);
workercadre
3.*程序代码:
inta[10]={4,5,6,15,20,13,12,7,8,9};
inti,s0,s1,s2;
s0=s1=s2=0;
switch(a[i]%3){
case0:
s0+=a[i];
case1:
s1+=a[i];
case2:
s2+=a[i];
}
s0,s1,s2);
422433
chara[]="
abcdbfbgacd"
;
inti1=0,i2=0,i=0;
while(a[i]){
if(a[i]=='
a'
)i1++;
elseif(a[i]=='
b'
)i2++;
i++;
i1,i2,i);
2311
5.(在二维数组中找最大元素及其下标)程序代码:
inta[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}};
intm=a[0][0];
intii=0,jj=0;
inti,j;
3;
for(j=0;
j<
4;
j++)
if(a[i][j]>
m){m=a[i][j];
ii=i;
jj=j;
ii,jj,a[ii][jj]);
2112
6.(又是斐波纳契数列!
)程序代码:
inta,b;
for(a=1,b=2;
b<
50;
){
a,b);
a=a+b;
b=a+b;
12358132134
四、写出下列每个函数的功能
1.程序代码:
intSA(inta,intb){
if(a>
b)return1;
elseif(a==b)return0;
elsereturn-1;
函数功能:
比较两个整数a和b的大小。
如果a大于b则结果为1,a与b相等则结果为0,a小于b则结果为-1
intSC(inta,intb,intc){
=b&
a>
=c)returna;
if(b>
=a&
b>
=c)returnb;
returnc;
返回a、b、c三个整数的最大值
3.(注意s初值为1,等于x0/(0+1))程序代码:
doubleSF(doublex,intn){//n为大于等于0的整数
doublep=1,s=1;
=n;
p*=x;
s+=p/(i+1);
returns;
计算
4.*程序代码:
intSG(intx){//x为大于等于2的整数
inta=(int)sqrt(x);
//sqrt(x)取x的平方根
inti=2;
while(i<
=a){
if(x%i==0)break;
if(i<
=a)return0;
elsereturn1;
判断整数x是否为素数,是则返回1,不是返回0
voidtrans(intx)
{
chara[10];
inti=0,rem;
do{
rem=x%16;
x=x/16;
if(rem<
10)a[i]=48+rem;
//'
0'
字符的ASCII码为48
elsea[i]=55+rem;
A'
字符的ASCII码为65
}while(x!
=0);
while(i>
0)printf("
%c"
a[--i]);
以十六进制形式输出整数x
五、根据下列每个题目要求编写程序
1.
voidfun4(char*a,intb[]){
b[i++]=0);
while(*a){
if(*a>
='
&
*a<
9'
)
b[*a-'
]++;
a++;
2.
doubleMean(doublea[M][N],intm,intn){
doublev=0;
m;
n;
v+=a[i][j++]);
returnv/m/n;
3.
intFF(inta[],intn)
{return(n<
=0)?
1:
a[n-1]*FF(a,n-1);
4*.(题目居然没有给出不等式!
可能是1+1/2+1/3+...+1/n≥5)
voidmain()
inti=0;
doubles=0;
while(s<
5)s+=1.0/++i;
n=%d\n"
5*.(不等式应当是22+42+...+n2<
1000)
//用i作为依次取值偶数的变量
ints=0;
//用s作为累加变量
i+=2;
s+=i*i;
}while(s<
1000);
i-2);
6*.(应当是计算12+22+...+n2)
intn,i,sum;
请输入正整数n:
"
scanf("
%d"
&
n);
if(n<
=0){
应输入正整数!
return;
for(i=1,sum=0;
sum+=i*i,i++);
平方和为:
sum);
C语言程序设计作业3
第6章)
1*.C2*.C3.B4.B5.C6.B7.C8.B9.B10.C
11.B12.D13.D14.D15*.A16.D
1.函数体2.03.static4.递归
5.头6.函数体7.258.46
9.4610.4*i11.(char*)p12.int**
13.&
p14.*p15.0
voidSB(charch){
switch(ch){
case'
:
WW"
B'
GG"
C'
c'
PP"
BB"
chara1='
a2='
a3='
f'
SB(a1);
SB(a2);
SB(a3);
SB('
GGPPBBWW
stdlib.h>
doubleSD(inta,intb,charop){
doublex;
switch(op){
+'
x=a+b;
-'
x=a-b;
*'
x=a*b;
/'
if(b)x=(double)a/b;
elseexit
(1);
{printf("
运算符错!
exit
(1);
returnx;
intx=20,y=8;
%3.2lf"
SD(x,y,'
));
%3.2lf\n"
SD(x+y,y,'
12.00160.003.50
voidWF(intx,inty){
x=x+y;
y=x+y;
subs:
x,y=%d,%d\n"
x,y);
intx=18,y=23;
main:
WF(x,y);
x=2*x;
x,y=18,23
x,y=41,64
x,y=36,23
4.(将字符串逆序。
注意for循环只到一半长度就前后交换完了。
如果循环整个长度则会前后交换两次,最终顺序不变)程序代码:
voidfun(charss[]);
chars[15]="
567891234"
fun(s);
voidfun(charss[]){
inti,n=strlen(ss);
n/2;
charc=ss[i];
ss[i]=ss[n-1-i];
ss[n-1-i]=c;
432198765
5.(插入排序法降序排序。
模拟玩扑克时起牌的过程进行排序:
手上拿的牌(a[0]~a[i-1])已经排好序,拿起一张牌a[i],从a[i-1]开始一张张地找,如果比a[i]小则把这张牌a[j]向右挪,直到当前的牌a[j]不比a[i]小了,则将a[i]放到a[j]的右边。
注意在开始找之前要先把a[i]保存起来,因为把a[i-1]向右挪的时候就会执行a[i]=a[i-1],从而改变a[i]的值。
插入排序法升序排序见练习题6.3第2小题。
voidInsertSort(inta[],intn)
inti,j,x;
i++){//进行n-1次循环
x=a[i];
for(j=i-1;
j>
=0;
j--)//为x顺序向前寻找合适的插入位置
if(x>
a[j])a[j+1]=a[j];
elsebreak;
a[j+1]=x;
inta[6]={20,15,32,47,36,28};
InsertSort(a,6);
6;
i++)printf("
a[i]);
473632282015
6.程序代码:
inta[8]={3,5,7,9,11,13,15,17};
inti,*p=a;
8;
%5d"
*p++);
if((i+1)%4==0)printf("
3579
11131517
intLA(int*a,intn){
s+=a[i];
inta[]={5,10,15,20,25,30};
intb=LA(a,4);
intc=LA(a+2,3);
b,c);
5060
intLB(int*a,intn){
inti,s=1;
i++)s*=*a++;
inta[]={1,2,3,4,2,4,5,2};
intb=LB(a,4)+LB(&
a[3],4);
b=%d\n"
b);
b=184
intWB(inta[],intn,intx){
int