您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 实验6函数与预处理1_参考答案
实验6函数与预处理1(2)自测题一编写函数,实现删除字符串中字符’T’的功能,要求使用内联函数#includeiostream#includecstringusingnamespacestd;inlinecharfun(charch)//内联函数fun首部{if(ch=='T')return0;//内联函数fun函数体,语句数量不限}intmain(){charc;coutpleaseinputastring:endl;while((c=getchar())!='\n'){if(fun(c))//对于if来说除了0之外都是1coutfun(c);}cout\n;return0;}自测题二编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。#includeiostreamusingnamespacestd;intmax(inta,intb){/*功能:求取两个整数的最大值,语句数量不限*/coutintmax(inta,intb):;returnab?a:b;}intmax(inta,intb,intc){/*求取三个整数的最大值,语句数量不限*/coutintmax(inta,intb,intc):;returnab?(ac?a:c):(bc?b:c);}doublemax(doublea,doubleb){/*求取两个双精度的最大值,语句数量不限*/coutdoublemax(doublea,doubleb):;returnab?a:b;}doublemax(doublea,doubleb,doublec){/*求取三个双精度的最大值,语句数量不限*/coutdoublemax(doublea,doubleb,doublec):;returnab?(ac?a:c):(bc?b:c);}intmain(){inta,b,c,d,e;doublem,n,o,p,q;cout请输入两个整数:endl;cinab;cout最大值为max(a,b)endl;cout请输入三个整数:endl;cincde;cout最大值为max(c,d,e)endl;cout请输入两个双精度数:endl;cinmn;cout最大值为max(m,n)endl;cout请输入三个双精度数:endl;cinopq;cout最大值为max(o,p,q)endl;return0;}自测题三设计一个打印年历的程序。要求:打印每个月的月历的功能有一个独立的函数完成,程序运行时,主程序通过若干次调用该函数完成年历的输出。注意处理闰年问题。#includeiostream#includeiomanipusingnamespacestd;voidprintmonth(intm);//5个被调函数声明voidprinthead(intm);intdaysofmonth(intm);intisleap(inty);voidfirstday(intm);intyear,weekday;//定义全局变量intmain(){while(true){cout输入年份:;cinyear;cout\n\n;coutyear年\n;for(inti=1;i=12;i++){printmonth(i);cout\n;}cout\n\n;}return0;}voidprintmonth(intm){/*功能:1、调用printhead(m),输出月历首行形式并确定m月第1天的位置2、从第1天输出该月其它天的日历,注意换行控制格式*/intdays;printhead(m);for(inti=0;i(weekday+1)%7;i++)//控制是星期的输出coutsetw(4);days=daysofmonth(m);//得到每月的天数for(inti=1;i=days;i++){coutsetw(4)i;weekday=(weekday+1)%7;//为了配合星期的显示if(weekday==6)coutendlendl;}}voidprinthead(intm){/*功能:1、输出月历首行形式:m月日一二三四五六2、确定m月第1天的位置,即对齐改天是星期几*/coutendlendl;coutm月endl;coutsetw(4)日setw(4)一setw(4)二setw(4)三setw(4)四setw(4)五setw(4)六endl;firstday(m);}intdaysofmonth(intm){/*功能:判断m月多少天,返回值是m月的天数,注意闰年*/switch(m){case1:case3:case5:case7:case8:case10:case12:return31;//1,3,5,7,8,10,12,月每月有31天case4:case6:case9:case11:return30;//4,6,9,11月每月31天case2:if(isleap(year))return29;//闰年每年二月29天elsereturn28;//非闰年二月28天default:return30;}}intisleap(inty){/*功能:判断y是否为闰年,是返回1,否返回0,闰年判断表达式见上机指导P19二、填空题第5题*/return(y%4==0&&y%100!=0||y%400==0);}voidfirstday(intm){/*功能:判断该月的第一天是星期几?思路:这个问题需找一个参照点,如设2000年1月1日为参照点,这天是星期六,则可计算该月的第一天距离参照点有多少天,(注意闰年要多加1天)如2012年4月1日与2000年1月1日相差4474天,4474%7=1,所以2012年4月1日是星期日。返回值是y月第1天是星期几*/longn;n=(year-1)*365;//从公元1年1月1日天始算,到现在所输入年有多少天for(inti=1;iyear;i++)if(isleap(i))n++;//闰年多一天for(inti=1;im;i++)n+=daysofmonth(i);weekday=n%7;//返回星期数,0表示周一,6表示周日}自测题四有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。第(1)问跳过,⑵要求:设计一个函数计算塔顶灯数为n盏时,8层灯的总灯数,并在主函数中调用。#includeiostream#includecmathintcalculate(int);usingnamespacestd;intmain(){inttop;cout输入灯塔顶灯数n:;cintop;cout总灯数是:calculate(top)endl;return0;}intcalculate(inttop){inttotal=0;for(inti=0;i8;i++)total+=pow(2,i)*top;returntotal;}自测练习五数字反射。编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。例如:给定数7631,函数返回1367.#includeiostreamusingnamespacestd;intmain(){intn,rn=0;cout输入一个整数值:endl;cinn;do{rn=10*rn+n%10;}while(n/=10);cout数字逆序后结果为:rnendl;return0;}自测练习六猜数字游戏编写一个程序,可以玩“猜数字”的游戏。具体描述如下:程序在1~1000之间的整数中随机选择需要猜的数。然后显示:Ihaveanumberbetween1and1000.Canyouguessmynumber?Pleasetypeyourfirstguess.玩家于是输入猜想的第一个数。程序会做出如下响应之一:ExcellentYouguessedthenumber!Wouldyouliketoplayagain(yorn)?Toolow.Tryagain.Toohigh.Tryagain.如果玩家的猜测是不正确的,程序应继续循环,直到玩家最终猜对为止。此过程中程序要一直提醒玩家是猜大了(Toolhigh)还是猜小了(Toollow),这样帮助玩家尽快获得正确的答案。#includeiostream#includectimevoidgame();usingnamespacestd;intmain(){game();charm;cinm;while(m=='y')game();coutGameover!Goodbye~endl;return0;}voidgame(){srand((unsigned)time(NULL));intn,k,u;k=1+rand()%1000;coutIhaveanumberbetween1and1000.endl;coutCanyouguessmynumber?endl;coutPleasetypeyourfirstguess.endl;cinn;while(k!=n){if(nk){coutToohigh.Tryagain.endl;cinu;n=u;}else{coutToolow.Tryagain.endl;cinu;n=u;}}coutExcellentYouguessedthenumber!endl;coutWouldyouliketoplayagain(yorn)?endl;}
本文标题:实验6函数与预处理1_参考答案
链接地址:https://www.777doc.com/doc-2457360 .html