2018年电大C语言程序设计题库题库及答案_第1页
2018年电大C语言程序设计题库题库及答案_第2页
2018年电大C语言程序设计题库题库及答案_第3页
2018年电大C语言程序设计题库题库及答案_第4页
2018年电大C语言程序设计题库题库及答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

特别说明:题号后带有*的,该题有明显错误或疏漏,详细

说明见《形考册勘误》

C语言程序设计作业1

(知识点覆盖范围:第1章至第3章)

一、选择题

1.A2.D3.B4.D5.B6.A7.C8.A9.B10.C

11.C12.A13.B14.D15*,,B16*.D17.A

二、填空题

1./2.}3*.//4*,.7

5.#include6.用户7*.函数头8.printf

9*.void10.43-18=2511.warning12.error

13.0x19(或0X19)14.\n15.D16.72

17.418.119.420.4

21.int22.double23.const24.初始化

25.626.727.6.2528.4

29*.++X30.y=y+131.X32.x+y<=5

33.a<=b&&b!=534.假35.真36.10

37.DataType38.整型常量表达式39.switch40.不停止

41.1042.break43.return44*,.main

三、写出下列每个程序运行后的输出结果

i.*程序代码:

include<stdio.h>

voidmain(){

intx=5;

switch(2*x-3){

case4:printf("%d",x);

case7:printf("%d",2*x+l);

case10:printf("%d",3*x-1);break;

default^rintffW,"default\n");

)

printf("%s\n",“switchend.");

运行结果:

1114switchend.

2.程序代码:

#include<stdio.h>

voidmain(){

intizs=0;

for(i=1;i<=6;i++)

s+=i*i;

,,

printf(s=%d\n"/s);

}

运行结果:

s=91

3.程序代码:

#include<stdio.h>

voidmain(){

inti,si=0,s2=0;

for(i=0;i<10;i++)

if(i%2)si+=i;

elses2+=i;

printf("%d%d\n",si,s2);

)

运行结果:

2520

4.程序代码:

#include<stdio.h>

voidmain(){

intn=10,y=1;

while(n-){y++;y++;}

printf("y=%d\n"zy);

)

运行结果:

y=21

5.程序代码:

#include<stdio.h>

voidmain(){

intf,fl,f2,i;

f1=f2=1;

printf("%d%d",fl,f2);

for(i=3;i<=10;i++){

f=fl+f2;

printf("%d",f);

if(i%5==0)printf("\nu);

fl=f2;

f2=f;

)

printf("\n");

)

运行结果:

11235

813213455

6.*程序代码:

#include<stdio.h>

#include<math.h>

voidmain(){

inti,n;

for(n=2;n<=20;n++){

inttemp=(int)sqrt(n);〃sqrt(n)求出n的平方根。然后取整

for(i=2;i<=temp;i++)

if(n%i==0)break;

if(i>temp)printf("%d",n);

}

printf("\n");

)

运行结果:

235711131719

7.程序代码:

include<stdio.h>

constintM=20;

voidmain(){

inti,c2zc3,c5;

c2=c3=c5=0;

for(i=1;i<=M;i++){

if(i%2==0)c2++;

if(i%3==0)c3++;

if(i%5==0)c5++;

)

printf("%d%d%d\n",c2,c3,c5);

)

运行结果:

1064

8.程序代码:

#include<stdio.h>

constintM=20;

voidmain(){

inti,s;

for(i=1,s=0;i<15;i++){

if(i%2==0||i%3==0)continue;

printf("%d",i);

s+=i;

}

printf("%d\n"zs);

}

运行结果:

157111337

特别说明:题号后带有*的,该题有明显错误或疏漏,详细

说明见《形考册勘误》

C语言程序设计作业2

(知识点覆盖范围:第4章至第6章)

一、选择题

1.C2.C3.C4.A5.C

二、填空题

1.82.323.604.M*N

5.0〜M-l6.0〜N・17.BB8.1

9.010.111.1112.n+1

13.比较14.复制15.1016.19

三、写出下列每个程序运行后的输出结果

1.(练习题4.2第1小题)程序代码:

#include<stdio.h>

voidmain(){

inta[10]={12,39,26,41,55,63,72,40,83,95};

intizil=0,i2=0;

for(i=0;i<10;i++)

if(a[i]%2==1)il++;elsei2++;

printf(H%d%d\n",il,i2);

)

运行结果:

64

2.*程序代码:

#include<stdio.h>

#include<string.h>

voidmain(){

inti;

char*a[5]={"student","worker","cadre","soldier","peasant"};

char*pl,*p2;

pl=p2=a[0];

for(i=0;i<5;i++){

if(strcmp(a[i],pl)>0)pl=a[i];

if(strcmp(a[i],p2)<0)p2=a[i];

)

printf("%s%s\n",pl,p2);

)

运行结果:

workercadre

3.*程序代码:

include<stdio.h>

inta[10]={4,5,6,15,20,13,12,7,8,9};

voidmain(){

inti,s0zsi,s2;

sO=si=s2=0;

for(i=0;i<10;i++){

switch(a[i]%3){

case0:sO+=a[i];break;

case1:si+=a[i];break;

case2:s2+=a[i];break;

)

}

printf("%d%d%d\n",sO,si,s2);

)

运行结果:

422433

4.程序代码:

#include<stdio.h>

voidmain(){

chara[]="abcdbfbgacd";

intil=O/i2=0J=0;

while(a[i]){

if(a[i]==,a')il++;

elseif(a[i]=='b')i2++;

i++;

)

printf("%d%d%d\n",ilzi2,i);

)

运行结果:

2311

5.(在二维数组中找最大元素及其下标)程序代码:

#include<stdio.h>

voidmain(){

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;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(a[i][j]>m){m=a[i][j];ii=i;jj=j;}

printf("%d%d%d\n",ii,jj,a[ii][jj]);

)

运行结果:

2112

6.(又是斐波纳契数列!)程序代码:

#include<stdio.h>

voidmain(){

inta,b;

for(a=1,b=2;b<50;){

printf("%d%d",a,b);

a=a+b;

b=a+b;

}

printf("\n");

)

运行结果:

12358132134

四、写出下列每个函数的功能

1.程序代码:

#include<stdio.h>

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.程序代码:

intSC(inta,intb,intc){

if(a>=b&&a>=c)returna;

if(b>=a&&b>=c)returnb;

returnc;

函数功能:

返回a、b、c三个整数的最大值

3.(注意s初值为1,等于x°/(O+l))程序代码:

doubleSF(doublex,intn){//n为大于等于0的整数

doublep=1,s=1;

inti;

for(i=1;i<=n;i++){

p*=x;

s+=p/(i+l);

}

returns;

)

函数功能:

4.*程序代码:

#indude<math.h>

intSG(intx){//x为大于等于2的整数

inta=(int)sqrt(x);〃sqrt(x)取x的平方根

inti=2;

while(i<=a){

if(x%i==0)break;

i++;

)

if(i<=a)return0;elsereturn1;

}

函数功能:

判断整数x是否为素数,是则返回1,不是返回0

5.程序代码:

voidtransfintx)

{

chara[10];

inti=0,rem;

do{

rem=x%16;

x=x/16;

if(rem<10)a[i]=48+rem;//'O'字符的ASCII码为48

elsea[i]=55+rem;//TV字符的ASCII码为65

i++;

}while(x!=0);

while(i>0)printf("%c",a[-i]);

printf("\n");

}

函数功能:

以十六进制形式输出整数x

五、根据下列每个题目要求编写程序

1.

voidfun4(char*a,intb[]){

inti;

for(i=0;i<10;b[i++]=0);

while(*a){

if(*a>='O'&&*a<='9')

b[*a-'0']++;

a++;

)

)

2.

doubleMean(doublea[M][N],intm,intn){

doublev=0;

intizj;

for(i=0;i<m;i++)

for(j=0;j<n;v+=a[i][j++]);

returnv/m/n;

}

3.

intFF(inta[],intn)

{return(n<=0)?1:a[n-1]*FF(a,n-1);}

4*.(题目居然没有给出不等式!可能是l+V2+W+...+:l/n25)

#include<stdio.h>

voidmain()

(

inti=0;

doubles=0;

while(s<5)s+=1.0/++i;

,,,,

printf(n=%d\n/i);

5*.(不等式应当是22+42+...+(?<1000)

#include<stdio.h>

voidmain()

inti=0;〃用i作为依次取值偶数的变量

ints=0;〃用s作为累加变量

do{

i+=2;

s+=i*i;

}while(s<1000);

printf("n=%d\n",i-2);

6*.(应当是计算甘+22+...+/)

#include<stdio.h>

voidmain()

(

intn,i,sum;

printf(”请输入正整数n:**);

scanf("%d",&n);

if(n<=0){

printf("应输入正整数!\n");

return;

)

for(i=1,sum=0;i<=n;sum+=i*i,i++);

(“平方和为:,,

printf%d\n/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.ap14.*p15.0

三、写出下列每个程序运行后的输出结果

i.程序代码:

#include<stdio.h>

voidSB(charch){

switch(ch){

case'A':case'a':

printf("WWbreak;

caseB:case'b':

printf("GG");break;

case'C:case'c':

printfC'PP");break;

default:

printf("BB");break;

)

}

voidmain(){

charal='b',a2='C,a3='f';

SB(al);SB(a2);SB(a3);SB('A');

pnntf("\n");

运行结果:

GGPPBBWW

2.程序代码:

#include<stdio.h>

#include<stdlib.h>

doubleSD(inta,intb,charop){

doublex;

switch(op){

casex=a+b;break;

casex=a-b;break;

case'**:x=a*b;break;

caseif(b)x=(double)a/b;elseexit(l);break;

default:{printf(“运算符错I\n");exit(l);)

)

returnx;

}

voidmain(){

intx=20zy=8;

printf("%3.2lf",SD(xzy,

printf("%3.2lf",SD(x,y,'*'));

printf("%3.2lf\n",SD(x+y,y,'/'));

)

运行结果:

12.00160.003.50

3.程序代码:

include<stdio.h>

voidWF(intx,inty){

x=x+y;

Y=x+y;

printf("subs:x,y=%d,%d\n"zx,y);

)

voidmain(){

intx=18,y=23;

printf("main:x,y=%d,%d\n",x,y);

WF(x,y);

x=2*x;

printf("main:x,y=%d,%d\n”,x,y);

}

运行结果:

main:x,y=18,23

subs:x,y=41,64

main:x,y=36,23

4.(将字符串逆序。注意for循环只到一半长度就前后交换完了。如果循环整个长度则会

前后交换两次,最终顺序不变)程序代码:

include<stdio.h>

#include<string.h>

voidfun(charss[]);

voidmain(){

chars[15]="567891234";

fun(s);

printf("%s\n",s);

)

voidfun(charss[]){

inti,n=strlen(ss);

for(i=0;i<n/2;i++){

charc=ss[i];

ss[i]=ss[n-1-i];

ss[n-1-i]=c;

}

)

运行结果:

432198765

5.(插入排序法降序排序。模拟玩扑克时起牌的过程进行排序:手上拿的牌(a[0]-a[i-l])

已经排好序,拿起一张牌a[i],从a[i-1]开始一张张地找,如果比a[i]小则把这张牌a[j]

向右挪,直到当前的牌a[j]不比a[i]小了,则将a[i]放到a[j]的右边。注意在开始找之前要

先把a[i]保存起来,因为把向右挪的时候就会执行a[i]=a[i-l),从而改变a[i]的值。

插入排序法升序排序见练习题6.3第2小题。)程序代码:

#include<stdio.h>

voidlnsertSort(inta[],intn)

(

inti,j,x;

for(i=1;i<n;i++){//进行n-1次循环

x=a[i];

f°r(j=i-1;j>=0;j-)〃为x顺序向前寻找合适的插入位置

if(x>a[j])a[j+l]=a[j];

elsebreak;

a[j+1]=x;

)

)

voidmain(){

inti;

inta[6]={20,15,32,47,36,28);

lnsertSort(a,6);

for(i=0;i<6;i++)printf("%d",a[i]);

printf("\n");

)

运行结果:

473632282015

6.程序代码:

#include<stdio.h>

voidmain(){

inta[8]={3,5,7,9,11,13,15,17};

intiz*p=a;

for(i=0;i<8;i++){

printf(”%5d,*p++);

if((i+1)%4==0)printf("\n");

}

)

运行结果:

3579

11131517

7.程序代码:

#include<stdio.h>

intLA(int*a,intn){

inti,s=0;

for(i=0;i<n;i++)

s+=a[i];

returns;

}

voidmain(){

inta[]={5,10,15,20,25,30);

intb=LA(a,4);

intc=LA(a+2,3);

printf("%d%d\n"zbzc);

)

运行结果:

5060

8.程序代码:

#include<stdio.h>

intLB(int*a,intn){

intizs=1;

for(i=0;i<n;i++)s*=*a++;

returns;

voidmain(){

inta[]={1,2,3,4,2,4,5,2);

intb=LB(a,4)+LB(&a[3],4);

printf("b=%d\n",b);

)

运行结果:

b=184

四、写出下列每个函数的功能

1.*程序代码:

intWB(inta[],intn,intx){

inti;

for(i=0;i<n;i++)

if(a[i]==x)return1;

return0;

)

函数功能:

在整型数组a的前n个元素中查找值为x的元素,找到返回1,找不到返回0

2.*程序代码:

intWC(inta[],intn,intk){

intc=0,i;

for(i=0;i<n;i++)

if(a[i]>=k)c++;

returnc;

)

函数功能:

统计整型数组a的前n个元素中不小于k的元素个数并返回

3.程序代码:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

constintN=10;

intff(intx,inty){

intz;

printf(H%d+%d=",x,y);

scanf("%d",&z);

if(x+y==z)return1;elsereturn0;

)

voidmain(){

inti,a,b,c=0;

srand(time(0));//初始化随机数序列

for(i=0;i<N;i++){

a=rand()%20+1;〃rand()函数产生。〜32767之间的一个随机数

b=rand()%20+1;

c+=ff(a,b);

)

("得分:

printf%d\n"zc*10);

)

函数功能:

程序随机产生10道20以内整数加法题,请用户回答。并统计得分,每答对一题得10分

4.*程序代码:

intfun6(intm,intn,intb)

(

if(m<b&&n<b)returnm*n;

elseif(m%b==0&&n%b==0)returnb*fun6(m/b,n/b,b);

elsereturnfun6(m,n,++b);

)

函数功能:

调用fun6(m,n,2)求m和n的最小公倍数

5.程序代码:

#include<stdio.h>

#include<stdlib.h>

voidLl(intn){

int*a=malloc(n*sizeof(int));

inti;

for(i=0;i<n;i++)scanf("%d",a+i);

for(i=n-1;i>=0;i-)printf("%d",*(a+i));

printf("\nu);

free(a);

}

函数功能:

读入n个整数,然后逆序输出

6.程序代码:

intLK(doublea[]zintn){

doubles=0;

inti,m=0;

for(i=0;i<n;i++)s+=a[i];

s/=n;

for(i=0;i<n;i++)

if(a[i]>=s)m++;

returnm;

函数功能:

返回双精度数数组a的前n个元素中不小于平均值的元素个数

特别说明:题号后带有*的,该题有明显错误或疏漏,详细

说明见《形考册勘误》

C语言程序设计作业4

(知识点覆盖范围:第7章至第8章)

一、选择题

1*.A2.B3.C4.D5.B6.D

二、填空题

1*.122.243*.204.malloc(n*sizeof(structWorker))

5.*x.a6.*p->b7.fp->score

三、写出下列每个程序运行后的输出结果

1.程序代码:

#include<stdio.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

);

voidmain(){

structWorkerx={"wanghua",52,2350);

structWorkery,*p;

y=x;p=&x;

printf("%s%d%6.2f\n",,y.age,y.pay);

printf(M%s%d%6.2f\n",p->name,p->age+1,p->pay+20);

)

运行结果:

wanghua522350.00

wanghua532370.00

2.程序代码:

#include<stdio.h>

#include<string.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

voidmain(){

structWorkerx;

char*t="liouting";

intd=38;floatf=493;

strcpy(zt);

x.age=d;x,pay=f;

x.age++;x.pay*=2;

printf("%s%d%6.2f\n",,x.age,x.pay);

)

运行结果:

liouting39986.00

3.(输出年龄最大者的信息)程序代码:

include<stdio.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

);

intLess(structWorkerrl,structWorkerr2){

if(rl.age<r2.age)return1;

elsereturn0;

)

voidmain(){

structWorkera[4]={{"abc",25,420},{"def",58,638},

{"ghi",49,560},{,kl,36,375}};

structWorkerx=a[0];

inti;

for(i=1;i<4;i++)

if(Less(x,a[i]))x=a[i];

printf(H%s%d%6.2f\n",,x.age,x.pay);

)

运行结果:

def58638.00

四、写出下列每个函数的功能

1.程序代码:

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;〃工资

);

voidQA(structWorkera[],intn){

inti;

for(i=1;i<n;i++)

scanf("%s%d%f"z&a[i].name,&a[i].age,&a[i].pay);

)

函数功能:

从标准输入设备读入n-1个人员的信息,依次存到结构数组的a[l]至ij元素中

2.程序代码:

structStrNode{

charname[15];//字符串域

structStrNode*next;//指针域

};

structStrNode*QB(intn){

structStrNode*f,*p;

if(n==0)returnNULL;

f=malloc(sizeof(structStrNode));

scanf("%s",f->name);

P=f;

while(-n){

p=p->next=malloc(sizeof(structStrNode));

scanf("%s",p->name);

)

p->next=NULL;

returnf;

)

函数功能:

创建具有n个structStrNode结点的单向链表并返回其表头结点地址,n为0时返回NULL

3.程序代码:

structIntNode{

intdata;//结点值域

structIntNode*next;//结点指针域

);

structIntNode*FindMax(structIntNode*f)

(

structIntNode*p=f;

if(!f)returnNULL;

f=f->next;

while(f){

if(f->data<p->data)p=f;

f=f->next;

)

returnp;

)

函数功能:

查找表头指针为f的单向链表中结点data域最小的结点,并返回其地址。如链表为空则返

回NULL

4.*程序代码:

structIntNode{

intdata;//结点值域

structIntNode*next;//结点指针域

);

intCount(structIntNode*f)

(

intc=0;

while(f){

c++;

f=f->next;

)

returnc;

}

函数功能:

统计并返回表头指针为f的单向链表结点个数

5.*程序代码:

structIntNode{

intdata;//结点值域

structIntNode*next;//结点指针域

);

structIntNode*lnput(intn)

(

structIntNode*f,*p;

f=malloc(sizeof(structIntNode));

if(n==0)returnNULL;

f->next=NULL;

printf("从键盘输入%d个整数:",n);

while(n-){

scanf(”%d”,&(f->data));

P二f;

f=malloc(sizeof(structIntNode));

f->next=p;

)

returnf->next;

)

函数功能:

根据输入的n个整数,从表尾结点开始逆序创建具有n个structIntNode结点的单向链表。

返回其表头结点地址,n为0时返回NULL

6.(即练习题8.2第1小题)程序代码:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

voidJA(char*fname)

(

FILE*fout=fopen(fname,"w");

chara[20];

printf(“输入若干个字符串,每个字符串长度小于20,字符串end作为结束标志\n“);

while(l){

scanf("%s",a);

if(strcmp(a,"end")==0)break;

fputs(a,fout);

fputcCXn',fout);

)

fclose(fout);

}

voidmain()

(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论