




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计报告 姓名:张林 班级:计算111班 学号:1106010124(1、)A类基本题1、围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。你从号洞找,下次隔个洞(即3号洞)找,第三次隔个洞(即6号洞)找,再隔3个以后在这个圆圈中如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?#includeint main()int i,m=0,k=1;int a10;for(i=0;i10;i+)ai=i+1;for(i=0;i10)m=m%10;if(m=am-1)am-1=0;for(i=0;i10;i+)if(ai!=0)printf(兔子在第%d个洞内n,ai);return 0;2、编写名为strdup的函数,此函数使用动态存储分配来产生字符串的副本。例如调用 p= strdup(str);将为和str相同的字符串分配空间,并且把字符串str的内容复制给新字符串,然后返回指向新字符串的指针,如果非配失败则返回空指针。#include#includechar * strdup(char t) char *p; int i; p=(char *)malloc(6*sizeof(char); for(i=0;i6*sizeof(char) return 0; else for(i=0;i6;i+) *(p+i)=ti; return p;/是其长度和原来的相同 void jiancha(char *p) int i; if(p=0) printf(failuren); else printf(copy:); for(i=0;i6;i+) printf(%c,pi);/输出 3、 已知一个链表中存储了若干名学生的信息,每名学生的信息包括:学号、英语成绩、数学成绩、计算机成绩。现编写一个函数search(),要求根据输入的学生学号,输出他的各科成绩。#includestruct student int num; float English,math,Computer; struct student *next;int search(struct student *head,int num) struct student *p1; if(head=NULL) printf(nlist null!n); return 0; p1=head; while(num!=p1-num & p1-next!=NULL) p1=p1-next; if(num=p1-num) printf(nnum:%dnEglish:%fnmath:%fnComputer:%fn,p1-num,p1-English,p1-math,p1-Computer); else printf(n%d not been found!n,num); return 0;void main()int num; struct student a,b,c,d,*head,*p; a.num=01;a.English=79;a.math=79;a.Computer=77; b.num=02;b.English=97;b.math=89;b.Computer=68; c.num=03;c.English=52;c.math=99;c.Computer=54;/输入三个学生信息 head=&a; a.next=&b; b.next=&c; c.next=NULL; p=head;/连接 do printf(%d %f %f %fn,p-num,p-English,p-math,p-Computer); p=p-next; while(p!=NULL); printf(please input the number:n);/输出 scanf(%d,&num); search(head,num);/查找学生 4、设计一个学生类(CStudent),它具有私有数据成员是:学号、姓名、数学、外语和计算机课程的成绩。要求能实现求三门课总成绩和平均成绩,并能设置和显示学生信息 (类声明和成员函数定义分离)。设计一个友元函数,按照成绩从高到低的顺序输出姓名、学号和成绩信息。#includeusing namespace std;class lei;class studentprivate:int num;char name20;int math;int english;int computer;int pingjun;int chengji;public: void paixu();/友元函数void input();void average();void zongchengji();void display();a8;/student类建立void student:paixu()int i,j;for(j=4;j8;j+) aj+4=aj; for(i=j-4;i4;i+) if(aj.chengjiai.chengji) bj=ai.; ai=aj; aj=bj; /将所有学生按总成绩由大到小排序void student:input()cout姓名:name;coutnum;cout数学成绩:math;cout英语成绩:english;cout计算机:computer;/输入成绩void student:average()pingjun=chengji/3;/平均成绩void student:zongchengji()chengji=computer+english+math;/总成绩void student:display()coutnameendl;coutnumendl;coutmathendl;coutenglishendl;coutcomputerendl;cout总成绩chengjiendl;cout平均成绩pingjunendl;/输出成绩int main()int i,j;for(i=0;i4;i+)cout第i+1个学生的信息;coutendl; ai.input(); ai.zongchengji(); ai.average(); ai.display(); for(i=0;i4;i+) ai+4=ai;return 0;/主程序5、 定义了一个基类Animal, 它包含两个数据成员动物名称(string类型)和重量,还包含一个公共的虚拟成员函数who() 和一个纯虚函数sound(),公共的虚拟成员函数who(),返回一个string对象,在派生类中sound()应返回一个string对象,表示该动物发出的声音。把Animal类作为一个公共基类,派生三个子类Sheep,Dog和Cow,在每个类中实现sound()函数。定义一个类Zoo,它至多可以在一个数组中存储50种不同类型的动物(使用指针数组)。编写一个main()函数,创建给定数量的派生类对象的随机序列,在Zoo对象中存储这些对象的指针。使用Zoo对象的一个成员函数,输出Zoo中每个动物的信息,以及每个动物发出的声音。(注意使用多文件结构)#include#includeusing namespace std;class Animal private: string name; float m; public: Animal(string str,float d) name=str;m=d; virtual string who()constreturn name; virtual float weight()constreturn m; virtual string sound() const=0; ;/ 基类ANIMALclass Sheep:public Animal public: Sheep(string str,float d):Animal(str,d) virtual string sound() constreturn mei;/SHEEP派生类class Dog:public Animal public: Dog(string str,float d):Animal(str,d) virtual string sound() constreturn wan;/DOG派生类class Cow:public Animal public: Cow(string str,float d):Animal(str,d)virtual string sound() constreturn mo;/COW派生类class Zoopublic:Animal *p50; void out(int n);void Zoo:out (int n) int i; for(i=0;in;i+) cout(*pi).who()nweight:(*pi).weight()kg sound:(*pi).sound()endl;int main() Zoo zoo; Sheep sheep(sheep,50); Dog dog(dog,20); Cow cow(cow,250); zoo.p0=&sheep; zoo.p1=&dog; zoo.p2=&cow; zoo.out(3); return 0;6通讯录管理系统编程实现通讯录管理系统,要求该系统能够完成通讯信息的建立、查询、插入、删除等基本功能。程序运行后至少给出下面7个菜单项的选择并分别实现其功能: 0、 通讯录的建立 1、通讯录信息输出2、 通讯者结点信息的删除 3、通讯者结点信息的查询4、 通讯者结点信息的插入 5、通讯录信息更改 6、 退出通讯录管理系统设计的任务要求,通讯录中每个学生的基本信息应包括姓名、地址、电话等基本信息,采用链表存储结构。(复习c语言结构体和链表知识)#include#include#define LEN sizeof(struct student)struct student long num; char name10; char ad20; long tel; struct student *next;int n;struct student *creat(void) struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); scanf(%ld,%s,%s,%ld,&p1-num,&p1-name,&p1-ad,&p1-tel); head=NULL; while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf(%ld,%s,%s,%ld,&p1-num,&p1-name,&p1-ad,&p1-tel); p2-next=NULL; return (head);void print(struct student *head) struct student *p; printf(nNow,These %d records are:n,n); p=head; if(head!=NULL) do printf(%-10ld %-10s %-20s %-20ldn,p-num,p-name,p-ad,p-tel); p=p-next; while(p!=NULL);struct student *del(struct student * head,long num) struct student *p1,*p2; if(head=NULL) printf(nlist null!); return head; p1=head; while(num!=p1-num & p1-next!=NULL) p2=p1; p1=p1-next; if(num=p1-num ) if(p1=head) head=p1-next; else p2-next=p1-next; printf(delete:%ldn,num); n=n-1; else printf(%ld not been found! n,num); return head;int search(struct student *head,long num) struct student *p1; if(head=NULL) printf(nlist null!n); return 0; p1=head; while(num!=p1-num & p1-next!=NULL) p1=p1-next; if(num=p1-num) printf(%-10ld %-10s %-20s %-20ldn,p1-num,p1-name,p1-ad,p1-tel); else printf(n%d not been found!n,num); return 0;struct student *insert(struct student *head,struct student *stud) struct student *p0,*p1,*p2; p1=head; p0=stud; if(head=NULL) head=p0; p0-next=NULL; else while(p0-nump1-num)&(p1-next !=NULL) p2=p1;p1=p1-next; if(p0-numnum) if(head=p1) head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0;p0-next=NULL; n=n+1; return head;int change(struct student *head,long t) struct student *p1; if(head=NULL) printf(nlist null!n); return 0; p1=head; while(t!=p1-num & p1-next!=NULL) p1=p1-next; if(t=p1-num) printf(%-10ld %-10s %-20s %-20ldn,p1-num,p1-name,p1-ad,p1-tel); printf(改为:n); scanf(%ld,%s,%s,%ld,&p1-num,&p1-name,&p1-ad,&p1-tel); else printf(n%d not been found!n,t); return 0;void main() long dn,num,ch; struct student *head,*stu; printf(请输入学生数据,按0结束输入:n); head=creat(); print(head); printf(请输入要删除的学生学号,按0结束删除:n); scanf(%ld,&dn); while(dn!=0) head=del(head,dn); print(head); printf(请输入要删除的学生学号,按0结束删除:n); scanf(%ld,&dn); printf(请输入要找的学生学号,按0结束寻找:n); scanf(%ld,&num); while(num!=0) search(head,num); printf(请输入要找的学生学号,按0结束寻找:n); scanf(%ld,&num); printf(请输入要插入的学生数据,按0结束插入:n); stu=(struct student *)malloc(LEN); scanf(%ld,%s,%s,%ld,&stu-num,&stu-name,&stu-ad,&stu-tel); while(stu-num!=0) head=insert(head,stu); print(head); printf(请输入要插入的学生数据,按0结束插入:n); stu=(struct student *)malloc(LEN); scanf(%ld,%s,%s,%ld,&stu-num,&stu-name,&stu-ad,&stu-tel); printf(请输入要更改的学生学号,按0结束更改:n); scanf(%ld,&ch); while(ch!=0) change(head,ch); printf(更改结果:n); print(head); printf(请输入要更改的学生学号,按0结束更改:n); scanf(%ld,&ch); 7 职工信息表设计要求实现如下功能:1)建立职工的基本资料有工号、姓名、性别、出生日期、工资、参加工作时间和年龄(必须计算得到)2)根据职工信息表,建立只含有姓名和年龄的职工信息简表3)使用继承的方法构造3个类,(即雇员类虚基类,教师类和工人类派生类)使用相应的对象放置10个职工信息。4)编写同名display()成员函数,用来输出数组的内容5)要求对“”运算符进行重载。考虑到输入职工编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“”运算符时,需要满足这个要求。参考界面如下:* 职工信息管理*增加一位教师记录*增加一位工人记录*显示全部职工信息*删除一个教师*删除一个工人*按姓名检索所以信息*结束程序运行#include#include#includeusing namespace std;istream&operator(istream&ip,string&s)char a12;gets(a);s=a;return ip;class Timepublic:void display();void set();void age();int getage();/private:int year;int month;int day;void Time:display()coutyear-month-day;void Time:set() coutyear; coutmonth; coutday;void Time:age()cout2010-year;int Time:getage() return (2010-year);class Laborpublic:void creat();void display();/protected:string num;string name;string sex;float wage;Time birthday;string workp;Time workt;int age;void Labor:creat()cout请按照提示操作,请输入endl;coutnum;coutname;coutsex;coutworkp;coutwage;cout出生日期:;coutendl;birthday.set();cout工作时间:;coutendl;workt.set();getchar();void Labor:display()cout工 号:numendl;cout姓 名:nameendl;cout性 别:sexendl;cout工作部门:workpendl;cout月 工 资:wage 元endl;cout出生日期:;birthday.display();coutendl;cout工作时间:;workt.display();coutendl;cout年 龄:;birthday.age();coutendl;cout=10)cout已满endl;elsecout请输入相关信息endl;L+num.creat();void Employee:display() /显示所有职工信息if(num=0)cout无信息,无法显示endl; else for(int i=1;i=num;i+) Li.display();void Employee:dele() /按工号删除信息if(num=0)cout无信息,无法删除endl;elsestring n; cout请输入要删除的员工工号n;for(int i=1;i=num;i+)if(Li.num=n) for(int k=i;knum)cout无此工号的员工!endl;void Employee:search() /按姓名查询信息if(num=0)cout无信息,无法查询endl;elsestring nam; cout请输入要查询的员工姓名nam;for(int i=1;i=num;i+)if(L=nam)cout查询到此员工的信息num)cout无此姓名的员工!endl;void Employee:show() /按部门显示信息 if(num=0)cout无信息,无法显示endl;elsestring wp; cout请输入工作部门wp;cout在此工作部门工作的员工信息如下endl;int b=0;for(int i=1;i=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout无在此部门工作的员工!endl; void Employee:averageage() /计算平均年龄if(num1)cout无信息无法计算平均年龄endl;elseint all=0,i;float av; for(i=1;i=num;i+) all=all+Li.birthday.getage(); av=(all/num); cout平均年龄为av岁endl; class Teacher:virtual public Employeepublic:void set()num=0;void addin();void display();void dele();void search();void show();void averageage();void SET();void Teacher: SET()set(); ifstream ss(d:/1.txt); for(int j=1;jLnum.num; ssL; ssLnum.sex; ssLnum.workp; ssLnum.wage; ssLnum.birthday.year; ssLnum.birthday.month; ssLnum.birthday.day; ssLnum.workt.year; ssLnum.workt.month; ssLnum.workt.day; void Teacher :addin()if(num=10)cout教师信息存储已满endl;elsecout请输入相关教师信息endl;/getchar();L+num.creat();void Teacher:display() /显示所有职工信息if(num=0)cout无教师信息,无法显示endl; elsecout教师信息如下:endl; for(int i=1;i=num;i+) Li.display();void Teacher:dele() /按工号删除信息if(num=0)cout无教师信息,无法删除endl;elsestring n; cout请输入要删除教师的工号n;int b=0;for(int i=1;i=num;i+)if(Li.num=n) b=1; cout删除的教师信息是:endl; Li.display(); for(int k=i;knum;k+) Lk=Lk+1; num-; if(b=0)cout无此工号的教师!endl;void Teacher:search() /按姓名查询信息if(num=0)cout无教师信息,无法查询endl;elsestring nam; cout请输入要查询的教师姓名nam;int b=0;for(int i=1;i=num;i+)if(L=nam)b=1;cout查询到此教师的信息endl; Li.display();if(b=0)cout无此姓名的教师!endl;void Teacher:show() /按部门显示信息 if(num=0)cout无教师信息,无法显示endl;elsestring wp; cout请输入教师工作部门wp;cout在此工作部门工作的教师信息如下endl;int b=0;for(int i=1;i=num;i+)if(Li.workp=wp)b=1; Li.display();if(b=0)cout无在此部门工作的教师!endl; void Teacher:averageage() /计算平均年龄if(num1)cout无信息,无法计算平均年龄endl;elseint all=0,i;float av; for(i=1;i=num;i+) all=all+Li.birthday.getage(); av=(all/num); cout教师的平均年龄为av岁endl; class Worker:virtual public Employeepublic:void set()num=0;void addin();void display();void dele();void search();void show();void averageage();void SET();void Worker: SET()set(); ifstream ss(d:/2.txt); for(int j=1;jLnum.num; ssL; ssLnum.sex; ssLnum.workp; ssLnum.wage; ssLnum.birthday.year; ssLnum.birthday.month; ssLnum.birthday.day; ssLnum.workt.year; ssLnum.workt.month; ssLnum.workt.day; void Worker:addin()if(num=10)cout工人信息存储已满endl;elsecout请输入相关工人信息endl;L+num.creat();void Worker:display() /显示所有职工信息if(num=0)cout无工人信息,无法显示endl; elsecout工人信息如下:endl; for(int i=1;i=num;i+) Li.display();void Worker:dele() /按工号删除信息if(num=0)cout无工人信息,无法删除endl;elsestring n; cout请输入要删除工人的工号n;for(int i=1;i=num;i+)if(Li.num=n) cout删除的工人的信息是:endl; Li.display(); for(int k=i;knum;k+) Lk=Lk+1; num-; if(i=(num+1)cout无此工号的工人!endl;void Worker:search() /按姓名查询信息if(num=0)cout无工人信息,无法查询endl;elsestring nam; cout请输入要查询的工人姓名nam;int b=0;for(int i=1;i=num;i+)if(L=nam)b=1;cout查询到此工人的信息endl; Li.display();if(b=0)cout无此姓名的工人!endl;void Worker:show() /按部门显示信息 if(num=0)cout无工人信息,无法显示endl;elsestring wp; cout请输入工人工作部门wp;cout在此工作部门工作的工人信息如下endl;int b=0;for(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年家庭教育指导师考试题库及参考答案
- 全国施工安全员及答案
- 合肥安全生产培训会议课件
- 合肥安全服务培训课件
- 2025银行遴选财务面试题及答案
- 建材采购流程及成本控制方案
- 有关调查的作文教学课件
- 劳动合同法律条款解析指南
- 大专隧道施工技术
- 20田园诗情教学课件
- 重症自身免疫性脑炎监测与治疗中国专家共识(2024版)解读
- 机动车检测工资格证考试题(附答案)
- 护士沟通技巧与人文关怀护理课件
- 2025年上半年海南三亚市知识产权保护中心选聘事业单位6人重点基础提升(共500题)附带答案详解
- 2025年辽宁现代服务职业技术学院单招综合素质考试题库附答案
- 电力电缆模拟题及答案
- 2025年药物制剂工(中级)考试题库(附答案)
- 仿古建筑施工常见问题及应对策略
- 辽宁省沈阳市2024-2025学年八年级上学期期末考试英语试题(含答案无听力原文及音频)
- 小班晨间活动体能大循环
- 绿化小型工程合同范例
评论
0/150
提交评论