北京交通大学C语言综合程序设计(黄宇班)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合程序设计
一、实验目的
(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。
(3)培养良好的C程序设计风格与代码规范意识。
二、课程设计内容
(一)设计一个菜单程序:1、寻找肇事汽车车牌号
2、形成的新数
3、替换后的新字符串
4、狗熊吃包谷
5、学生的平均分
6、再见
(二)具体内容如下:
1.寻找肇事汽车车牌号
一辆汽车撞人后逃跑,4个目击者提供如下线索:
甲:牌照3、4位相同。乙:牌号为31XXXX。
丙:牌照5、6位相同。丁:3~6位是一个整数的平方。
请根据4个目击者的话,找出肇事汽车车牌号。
Int a,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
#define N 8
struct slist
{ double s;
struct slist *next;
};
typedef struct slist STREC;
double fun(STREC *h)
{
double aver=0.0;
while(h!=NULL)
{
aver+=h->s;
h=h->next;
}
aver/=N;
return aver;
}
STREC *creat(double *s)
{ STREC *h,*p,*q;
int i=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; return h; } 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"); } int main() { double s[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); return 0; } 参考答案: double aver=0.0; while(h!=NULL) { aver+=h->s; h=h->next; } aver/=N; return aver; 程序: #include #include #include #include #include #define N 8 struct slist { double s; struct slist *next; }; typedef struct slist STREC; void draw(); void link(); void corn(); void average(); int menu_select(); int main() { for(;;) { switch(menu_select()) { case 1: draw();break; case 2: link();break; case 3: bored();break; case 4: corn();break; case 5: average();break; case 6: printf("Goodbye!\n"); exit(0); } } return 0; } int menu_select() { char s; int cn; printf("1、寻找肇事汽车车牌号\n"); printf("2、形成的新数\n"); printf("3、替换后的新字符串\n"); printf("4、狗熊吃包谷\n"); printf("5、求学生的平均分\n");