您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言课程设计报告电子版
C语言课程设计报告姓名:张林班级:计算11—1班学号:1106010124(1、)A类基本题1、围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。你从1号洞找,下次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?#includestdio.hintmain(){inti,m=0,k=1;inta[10];for(i=0;i10;i++)a[i]=i+1;for(i=0;i1000;i++){m=m+k;k=k+1;if(m10)m=m%10;if(m==a[m-1])a[m-1]=0;}for(i=0;i10;i++){if(a[i]!=0)printf(兔子在第%d个洞内\n,a[i]);}return0;}2、编写名为strdup的函数,此函数使用动态存储分配来产生字符串的副本。例如调用p=strdup(str);将为和str相同的字符串分配空间,并且把字符串str的内容复制给新字符串,然后返回指向新字符串的指针,如果非配失败则返回空指针。#includestdio.h#includemalloc.hchar*strdup(chart[]){char*p;inti;p=(char*)malloc(6*sizeof(char));for(i=0;i10;i++){if(t[i]=='\n')break;}//开辟新空间if(i*sizeof(char)6*sizeof(char))return0;else{for(i=0;i6;i++)*(p+i)=t[i];returnp;}//是其长度和原来的相同}voidjiancha(char*p){inti;if(p==0)printf(failure\n);else{printf(copy:);for(i=0;i6;i++)printf(%c,p[i]);//输出}3、已知一个链表中存储了若干名学生的信息,每名学生的信息包括:学号、英语成绩、数学成绩、计算机成绩。现编写一个函数search(),要求根据输入的学生学号,输出他的各科成绩。#includestdio.hstructstudent{intnum;floatEnglish,math,Computer;structstudent*next;};intsearch(structstudent*head,intnum){structstudent*p1;if(head==NULL){printf(\nlistnull!\n);return0;}p1=head;while(num!=p1-num&&p1-next!=NULL){p1=p1-next;}if(num==p1-num)printf(\nnum:%d\nEglish:%f\nmath:%f\nComputer:%f\n,p1-num,p1-English,p1-math,p1-Computer);elseprintf(\n%dnotbeenfound!\n,num);return0;}voidmain(){intnum;structstudenta,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%f\n,p-num,p-English,p-math,p-Computer);p=p-next;}while(p!=NULL);printf(pleaseinputthenumber:\n);//输出scanf(%d,&num);search(head,num);//查找学生}4、设计一个学生类(CStudent),它具有私有数据成员是:学号、姓名、数学、外语和计算机课程的成绩。要求能实现求三门课总成绩和平均成绩,并能设置和显示学生信息(类声明和成员函数定义分离)。设计一个友元函数,按照成绩从高到低的顺序输出姓名、学号和成绩信息。#includeiostreamusingnamespacestd;classlei;classstudent{private:intnum;charname[20];intmath;intenglish;intcomputer;intpingjun;intchengji;public:voidpaixu();//友元函数voidinput();voidaverage();voidzongchengji();voiddisplay();}a[8];//student类建立voidstudent::paixu(){inti,j;for(j=4;j8;j++){a[j+4]=a[j];for(i=j-4;i4;i++){if(a[j].chengjia[i].chengji)b[j]=a[i].;a[i]=a[j];a[j]=b[j];}}//将所有学生按总成绩由大到小排序voidstudent::input(){cout姓名:endl;cinname;cout学号:;cinnum;cout数学成绩:endl;cinmath;cout英语成绩:endl;cinenglish;cout计算机:endl;cincomputer;}//输入成绩voidstudent::average(){pingjun=chengji/3;}//平均成绩voidstudent::zongchengji(){chengji=computer+english+math;}//总成绩voidstudent::display(){coutnameendl;coutnumendl;coutmathendl;coutenglishendl;coutcomputerendl;cout总成绩chengjiendl;cout平均成绩pingjunendl;}//输出成绩intmain(){inti,j;for(i=0;i4;i++){cout第i+1个学生的信息;coutendl;a[i].input();a[i].zongchengji();a[i].average();a[i].display();for(i=0;i4;i++)a[i+4]=a[i];}return0;//主程序}5、定义了一个基类Animal,它包含两个数据成员动物名称(string类型)和重量,还包含一个公共的虚拟成员函数who()和一个纯虚函数sound(),公共的虚拟成员函数who(),返回一个string对象,在派生类中sound()应返回一个string对象,表示该动物发出的声音。把Animal类作为一个公共基类,派生三个子类Sheep,Dog和Cow,在每个类中实现sound()函数。定义一个类Zoo,它至多可以在一个数组中存储50种不同类型的动物(使用指针数组)。编写一个main()函数,创建给定数量的派生类对象的随机序列,在Zoo对象中存储这些对象的指针。使用Zoo对象的一个成员函数,输出Zoo中每个动物的信息,以及每个动物发出的声音。(注意使用多文件结构)#includeiostream#includestringusingnamespacestd;classAnimal{private:stringname;floatm;public:Animal(stringstr,floatd){name=str;m=d;}virtualstringwho()const{returnname;}virtualfloatweight()const{returnm;}virtualstringsound()const=0;};//基类ANIMALclassSheep:publicAnimal{public:Sheep(stringstr,floatd):Animal(str,d){}virtualstringsound()const{returnmei;};};//SHEEP派生类classDog:publicAnimal{public:Dog(stringstr,floatd):Animal(str,d){}virtualstringsound()const{returnwan;};};//DOG派生类classCow:publicAnimal{public:Cow(stringstr,floatd):Animal(str,d){}virtualstringsound()const{returnmo;};};//COW派生类classZoo{public:Animal*p[50];voidout(intn);};voidZoo::out(intn){inti;for(i=0;in;i++){cout(*p[i]).who()\nweight:(*p[i]).weight()kgsound:(*p[i]).sound()endl;}}intmain(){Zoozoo;Sheepsheep(sheep,50);Dogdog(dog,20);Cowcow(cow,250);zoo.p[0]=&sheep;zoo.p[1]=&dog;zoo.p[2]=&cow;zoo.out(3);return0;}6.通讯录管理系统编程实现通讯录管理系统,要求该系统能够完成通讯信息的建立、查询、插入、删除等基本功能。程序运行后至少给出下面7个菜单项的选择并分别实现其功能:0、通讯录的建立1、通讯录信息输出2、通讯者结点信息的删除3、通讯者结点信息的查询4、通讯者结点信息的插入5、通讯录信息更改6、退出通讯录管理系统设计的任务要求,通讯录中每个学生的基本信息应包括姓名、地址、电话等基本信息,采用链表存储结构。(复习c语言结构体和链表知识)#includestdio.h#includemalloc.h#defineLENsizeof(structstudent)structstudent{longnum;charname[10];charad[20];longtel;structstudent*next;};intn;structstudent*creat(void){structstudent*head;structstudent*p1,*p2;n=0;p1=p2=(structstudent*)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;elsep2-next=p1;p2=p1;p1=(structstudent*)malloc(LEN);scanf(%ld,%s,%s,%ld,&p1-num,&p1-name,&p1-ad,&p1-tel);}p2-next=NULL;return(head);}voidprint(structstudent*head){structstudent*p;printf(\nNow,These%drecordsare:\n,n);p=head;if(head!=NULL)do{printf(%-10ld%-10s%-20s%-20ld\n,p-nu
本文标题:C语言课程设计报告电子版
链接地址:https://www.777doc.com/doc-2908647 .html