实验6Word格式文档下载.docx
- 文档编号:16476582
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:68.51KB
实验6Word格式文档下载.docx
《实验6Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验6Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
intmain()
{
inti;
cout<
<
"
输入年份:
;
cin>
>
year;
weekday=firstday(year);
\n\n"
year<
"
年\n"
for(i=1;
i<
=12;
i++)
{
printmonth(i);
cout<
\n"
}
return0;
}
voidprintmonth(intm)
{printheed(m);
/*功能:
1、调用printheed(m),输出月历首行形式并确定m月第1天的位置
2、从第1天输出改月其它天的日历,注意换行控制格式*/
}
voidprintheed(intm)
{inty=year;
intz=firstday(y);
intw=1;
intl;
intq=daysofmonth(m);
m<
月日一二三四五六"
endl;
if(d==0)//只用来找到第一个月的第一天的位置,后面几个月不再做
h=z;
/*功能:
1、输出月历首行形式:
m月日一二三四五六*/
for(l=1;
l<
=h+1;
l++)
for(w=1;
w<
=7-h;
w++)
{
setw(5)<
setfill('
'
);
}
d++;
intb=0;
h=0;
for(inti=w;
=q;
i++)
{if(b%7==0)
h++;
h=h%7;
b++;
if(b%7==0)
/*2、确定m月第1天的位置,即对齐改天是星期几*/
intdaysofmonth(intm)
{inty=isleep(year);
intq;
switch(m)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
q=31;
break;
case4:
case6:
case9:
case11:
q=30;
case2:
if(y==1)
q=29;
elseq=28;
returnq;
/*功能:
判断m月多少天,返回值是m月的天数,注意闰年*/
intisleep(inty)
{intn=y;
intt=1;
if(n%400!
=0&
&
n%100==0||n%4!
=0)t=0;
returnt;
/*功能:
判断y是否为闰年,是返回1,否返回0,闰年判断表达式见上机指导P19二、填空题第5题*/
intfirstday(inty)
{intq;
intsum=0;
intz;
for(inti=0;
=year-1;
{q=isleep(i);
if(q==0)
sum=sum+365;
if(q==1)
sum=sum+366;
z=(sum+6)%7;
returnz;
判断该月的第一天是星期几?
思路:
这个问题需找一个参照点,如设2000年1月1日为参照点,这天是星期六,则可计算该月的第一天距离参照点有多少天,(注意闰年要多加1天)如2012年4月1日与2000年1月1日相差4474天,4474%7=1,所以2012年4月1日是星期日。
返回值是y月第1天是星期几*/
⑵运行结果截图
4.有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。
思路:
采用的是一种穷举算法,即对塔顶的灯数从1盏开始,依次检验8层灯的总数是否为765盏,若是,则找到答案,若不是,则塔顶灯数加1进行下一次测试。
⑴阅读给出的程序代码,分析算法的循环实现过程,为循环体内的每条语句加注释,说明功能)
cmath>
{
intn=1;
//设n为最顶层灯数
intsum=0;
while(n)
for(intj=0;
j<
8;
j++)//从顶层到底层循环
sum+=pow(2,j)*n;
//累加求和
if(sum==765)//判断是否为765
break;
//是,则跳出循环
else{
sum=0;
n++;
//不是,则调整顶层灯数加一
}
cout<
最底层灯数是:
<
128*n<
endl;
⑵要求:
设计一个函数计算塔顶灯数为n盏时,8层灯的总灯数,并在主函数中调用。
Ø
修改后的代码如下:
ints(intn);
intsum=0;
intn;
输入顶层灯数:
n;
s(n);
ints(intn)
j++)
cout<
sum<
运行结果截图
5.数字反射(此题为新增内容)
编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。
例如:
给定数7631,函数返回1367.
通过%10运算与循环的结合,可依次获得给定数的每位数字。
7631%10=1,获得了个位数;
7631/10=763,即丢掉了个位数字。
继续下去,可依次得到数字1、3、6、7.
边循环边将每次得到的数字添加到需返回的数值中。
0*10+1=1;
1*10+3=13;
13*10+6=136;
136*110+7=1367.
⑴程序代码如下(重要语句请加注释提高程序的可读性):
inta,i;
输入数字:
cin>
a;
for(;
a!
=0;
)
{i=a%10;
i;
a=a/10;
6.猜数字游戏(此题为新增内容)
编写一个程序,可以玩“猜数字”的游戏。
具体描述如下:
程序在1~1000之间的整数中随机选择需要猜的数。
然后显示:
Ihaveanumberbetween1and1000.
Canyouguessmynumber?
Pleasetypeyourfirstguess.
玩家于是输入猜想的第一个数。
程序会做出如下响应之一:
ExcellentYouguessedthenumber!
Wouldyouliketoplayagain(yorn)?
Toolow.Tryagain.
Toohigh.Tryagain.
如果玩家的猜测是不正确的,程序应继续循环,直到玩家最终猜对为止。
此过程中程序要一直提醒玩家是猜大了(Toolhigh)还是猜小了(Toollow),这样帮助玩家尽快获得正确的答案。
①思路:
通过rand()函数产生随机数。
关于rand()的介绍和使用方法,请参考教材P112例5-4说明:
②。
②程序流程介绍如下:
产生一个让玩家猜想的介于1~1000的数,并显示提示。
通过循环检测玩家猜想是否正确。
如正确,输出相应提示并退出循环;
如不正确,输出相应提示,继续循环。
③本题中关于函数的使用不做具体限制,可使用函数,也可不使用函数。
若使用函数,可将本程序按功能进行分解,每一个子功能应用函数。
intx,a,b;
charm='
y'
x=rand();
Ihaveanumberbetween1and1000."
Pleasetypeyourfirstguess."
while(m!
='
n'
Pleasetypeyourguess."
b=a-x;
if(b>
0)cout<
Toohigh.Tryagain."
if(b<
Toolow.Tryagain."
if(b==0){cout<
else
m;
随机数是:
x<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)