您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c++期末模拟题参考答案
1、程序的功能是输入你的出生日期,判断你的生日是星期几。要求定义一个时间类Date,包括年,月,日3个私有数据成员,和三个公有成员函数:voidset(inty,intm,intd)用于设置数据成员年、月、日的值,intweekday()用于计算某个日期是星期几。Voiddisplay()用来显示结果。在主函数中读入你的生日(年、月、日),调用成员函数设置数据成员,计算生日是星期几,并显示结果。假设1900年1月1日是星期一。#includeiostream.hclassDate{private:intday,month,year;public:voidset(inty,intm,intd){day=d;month=m;year=y;}voiddisp(){coutyear''month''day;}intweekday(){intdpm[12]={31,28,31,30,31,30,31,31,30,31,30,31},sum=0;intm;for(m=1900;myear;m++)//生日所在年份的1月1日距1900年1月1日的总天数{sum=sum+365;if(m%400==0||m%4==0&&m%100!=0)sum=sum+1;}if(year%400==0||year%4==0&&year%100!=0)dpm[1]=29;for(m=0;mmonth-1;m++)//生日所在月份的1日距1900年1月1日的总天数sum=sum+dpm[m];sum=sum+day-1;//生日距1900年1月1日的总天数return(1+sum%7);}};voidmain(){intyear,month,day;cout输入你的生日:;cinyearmonthday;Dated;d.set(year,month,day);cout你的生日是:;d.disp();cout星期d.weekday()endl;}2、程序的功能是判断一个字符串是不是回文字符串。判断一个字符串s是否是回文串要求编写递归函数实现,算法思想是:先判断第1个字符和最后1个字符是否相等,若不等,则不是回文串,若相等,则递归的判断由第2个字符~倒数第2个字符构成的串是否是回文串,编写递归函数inthuiwen(……)实现判断字符串s是不是回文,是返回1,不是,返回0。主函数中调用该函数,对输入的字符串进行判断,并显示判断的结果。#includeiostream.h#includestring.h#includestdio.h#defineN100inthuiwen(chars[],intstart,intend){if(s[start]!=s[end])return0;elseif(start=end)return1;elsereturnhuiwen(s,start+1,end-1);}voidmain(){chars[N];gets(s);intlen=strlen(s);if(huiwen(s,0,len-1)==1)couts是回文串;elsecouts不是回文串;}3、学生的信息包括学号charnum[6],成绩intscore和密码字符串charkey[15]。建立如下的字符菜单,根据用户的选择完成相应的功能。1、建立学生档案:输入N个学生的信息,N可用符号常量定义为5,按成绩从低到高的顺序将学生信息组织到链表或结构体数组中(如图所示)。2、显示所有学生:显示所有学生的信息,其中密码字符以*显示,一个字符对应一个*(如图所示)。3、修改学生信息:输入学号,按照学号修改学生的成绩和密码字符串,再次显示学生数据时,显示修改后的信息。4、退出:将学生数据保存到文件c:\ks\student.dat中并退出程序。(要求使用结构体数组或者链表实现)#includeiostream.h#includestdio.h#includestdlib.h#includestring.h#defineN3structstudent{charnum[6];intscore;charkey[15];};voidmenu(){cout1.建立学生档案'\t'2.显示所有学生endl;cout3.修改学生信息'\t'4.退出endl;}voidcreat(students[],intn){inti,j;studentt;for(i=0;in;i++)cins[i].nums[i].scores[i].key;for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(s[j].scores[j+1].score){t=s[j];s[j]=s[j+1];s[j+1]=t;}}voiddisp(students[],intn){inti,j;for(i=0;in;i++){couts[i].num''s[i].score'';for(j=0;s[i].key[j]!='\0';j++)cout'*';coutendl;}}voidmodify(students[],intn){inti;charnum[6];cinnum;for(i=0;in;i++)if(strcmp(num,s[i].num)==0){cout输入更改后的成绩和密码:endl;cins[i].scores[i].key;coutendl;break;}if(i==n)cout该学号学生不存在endl;}voidquit(students[],intn){FILE*fp;fp=fopen(c:\\ks\\student.dat,wb);if(fp==NULL){coutcan'topenfilestudent.datendl;exit(1);}fwrite(s,sizeof(s),1,fp);fclose(fp);exit(1);}voidmain(){students[N];intchoice;while(1){menu();cinchoice;switch(choice){case1:creat(s,N);break;case2:disp(s,N);break;case3:modify(s,N);break;case4:quit(s,N);break;}}}
本文标题:c++期末模拟题参考答案
链接地址:https://www.777doc.com/doc-3205124 .html