北京交通大学C语言综合程序设计.docx

上传人:b****7 文档编号:10207283 上传时间:2023-02-09 格式:DOCX 页数:15 大小:103.81KB
下载 相关 举报
北京交通大学C语言综合程序设计.docx_第1页
第1页 / 共15页
北京交通大学C语言综合程序设计.docx_第2页
第2页 / 共15页
北京交通大学C语言综合程序设计.docx_第3页
第3页 / 共15页
北京交通大学C语言综合程序设计.docx_第4页
第4页 / 共15页
北京交通大学C语言综合程序设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

北京交通大学C语言综合程序设计.docx

《北京交通大学C语言综合程序设计.docx》由会员分享,可在线阅读,更多相关《北京交通大学C语言综合程序设计.docx(15页珍藏版)》请在冰豆网上搜索。

北京交通大学C语言综合程序设计.docx

北京交通大学C语言综合程序设计

综合程序设计

一、实验目的

(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。

(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。

(3)培养良好的C程序设计风格与代码规意识。

二、课程设计容

(一)设计一个菜单程序:

1、寻找肇事汽车车牌号

2、形成的新数

3、替换后的新字符串

4、狗熊吃包谷

5、学生的平均分

6、再见

(二)具体容如下:

1.寻找肇事汽车车牌号

一辆汽车撞人后逃跑,4个目击者提供如下线索:

甲:

牌照3、4位相同。

乙:

牌号为31XXXX。

丙:

牌照5、6位相同。

丁:

3~6位是一个整数的平方。

请根据4个目击者的话,找出肇事汽车车牌号。

Inta,b;

for

2.形成的新数

将长整型数s中各位上为偶数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如,当s中的数为87653129时,t中的数为862。

3.替换后的新字符串

将s所指字符串中出现的与t1所指字符串相同的子串,全部替换为t2所指字符串,所形成的新串放在w所指的数组中,要求t1和t2所指字符串的长度相同。

例如,当s所指字符串中的容为“abcdabfab”,t1所指子串中的容为“ab”,t2所指子串中的容为“99”时,在w所指的数组中的容应为“99cd99f99”

4.狗熊吃包谷

狗熊到玉米地吃包谷,第一天吃了一半又拿走一个回去喂小狗熊。

第二天又去吃了剩下的一半,走时仍然带一个回去。

以后每天都吃前一天剩下的一半,拿走一个。

到第十天时,狗熊到地里一看,只剩下一个包谷了。

求地里一共有多少包谷?

5.学生的平均分

链表也是一种结构,我们把它单独作为一个知识点学习,最后为检查一下同学们学习能力,请同学们在自己阅读完链表的相应知识点以后,做以下题目:

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是求出平均分,并由函数值返回。

请在{}中填写相应的程序。

例如,假定学生的成绩为85、76、69、85、91、72、64、87,则平均分应为78.625。

#include

#include

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

 

doubleaver=0.0;

while(h!

=NULL)

{

aver+=h->s;

h=h->next;

}

aver/=N;

returnaver;

 

}

STREC*creat(double*s)

{STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));p->s=0;

while(i

{q=(STREC*)malloc(sizeof(STREC));

q->s=s[i];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{STREC*p;

p=h->next;printf("head");

do

{printf("->%4.1f",p->s);p=p->next;

}

while(p!

=0);

printf("\n\n");

}

intmain()

{doubles[N]={85,76,69,85,91,72,64,87},ave;

STREC*h;

h=creat(s);outlist(h);

ave=fun(h);

printf("ave=%6.3lf\n",ave);

return0;

}

参考答案:

doubleaver=0.0;

while(h!

=NULL)

{

aver+=h->s;

h=h->next;

}

aver/=N;

returnaver;

程序:

#include

#include

#include

#include

#include

#defineN8

structslist

{

doubles;

structslist*next;

};

typedefstructslistSTREC;

voiddraw();

voidlink();

voidcorn();

voidaverage();

intmenu_select();

intmain()

{

for(;;)

{

switch(menu_select())

{

case1:

draw();break;

case2:

link();break;

case3:

bored();break;

case4:

corn();break;

case5:

average();break;

case6:

printf("Goodbye!

\n");

exit(0);

}

}

return0;

}

intmenu_select()

{

chars;

int;

printf("1、寻找肇事汽车车牌号\n");

printf("2、形成的新数\n");

printf("3、替换后的新字符串\n");

printf("4、狗熊吃包谷\n");

printf("5、求学生的平均分\n");

printf("6、Goodbye!

\n");

printf("\n\n请输入想要执行的程序编号:

");

do

{

s=getchar();

=(int)s-48;

}

while(<0||>6);

return;

}

voiddraw()

{

inti,j,x,y;

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

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

{x=i*1100+j*11;

for(y=31;y<99;y++)

{

if(x==y*y)

printf("车牌号为31%d\n",x);}

}

}

voidhayate(longg,long*h)

{intd;

longs1=1;

*h=0;

while(g>0)

{d=g%10;

if(d%2==0)

{*h=*h+d*s1;

s1*=10;

}

g/=10;}

}

voidlink()

{

longg,h;

printf("请输入一个数");

scanf("%ld",&g);

hayate(g,&h);

printf("结果是%ld\n",h);

}

voidreinforce(char*s,char*t1,char*t2,char*w)

{char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;r=t1;

while(*r)

if(*r==*p)

{r++;p++;}

else

break;

if(*r=='\0')

{a=w;r=t2;

while(*r)

{*a=*r;a++;r++;}

w+=strlen(t2);

}

elsew++;

}

}

intbored()

{chars[100],t1[100],t2[100],w[100];

printf("\n请输入字符串s:

");

scanf("%s",s);

printf("\n请输入字符串t1:

");

scanf("%s",t1);

printf("\n请输入与t1等长字符串t2:

");

scanf("%s",t2);

if(strlen(t1)==strlen(t2))

{reinforce(s,t1,t2,w);

printf("\n结果是:

%s\n",w);

}

else

printf("Error\n");

}

voidcorn()

{

intc=1,i,b,a,e=0;

printf("狗熊到玉米地吃包谷,第一天吃了一半又拿走一个回去喂小狗熊。

\n第二天又去吃了剩下的一半,走时仍然带一个回去。

\n以后每天都吃前一天剩下的一半,拿走一个。

\n到第十天时,狗熊到地里一看,只剩下一个包谷了。

\n求地里一共有多少包谷?

\n");

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

{

c=2*(c+1);b=c;

}

printf("\n");

printf("请输入你计算的结果:

");

scanf("%d",&a);

if(b!

=a)

printf("结果错误!

正确结果应该是%d\n\n\n",b);

else

printf("正确!

结果是:

%d\n\n\n",b);

}

doublefun(STREC*h)

{

intn=0;

doublesum=0;

doubleave;

STREC*p;

p=h->next;

while(p)

{

n++;

sum+=p->s;

p=p->next;

}

ave=sum/n;

returnave;

}

STREC*creat(double*s)

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));p->s=0;

while(i

{

q=(STREC*)malloc(sizeof(STREC));

q->s=s[i];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;printf("head");

do

{

printf("->%4.1f",p->s);p=p->next;

}

while(p!

=0);

printf("\n\n");

}

voidaverage()

{

doubles[N]={85,76,69,85,91,72,64,87},ave;

STREC*h;

h=creat(s);outlist(h);

ave=fun(h);

printf("ave=%6.3f\n\n",ave);

}

结果:

编号1

编号2

编号3

编号4

编号5

编号6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1