第一阶段 面向过程源代码信科091班周华Word格式.docx
- 文档编号:16847885
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:14
- 大小:103.84KB
第一阶段 面向过程源代码信科091班周华Word格式.docx
《第一阶段 面向过程源代码信科091班周华Word格式.docx》由会员分享,可在线阅读,更多相关《第一阶段 面向过程源代码信科091班周华Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
break;
}//如果输入的a的值为非正数,则终止循环,并输入出错提示。
X=a;
do
b=X*2/3+a/(3*X*X);
//利用迭代法求a的立方根。
z=b-X;
X=b;
}
while((z<
=-0.00001)||(z>
=0.00001));
//利用循环使a的立方根精确到小数点后五位。
Y=pow(a,1.0/3);
//调用pow函数来求a的立方根。
Thecuberootofais:
a<
\n"
;
//输出a的初始值。
Theresultoffunctionis:
<
X="
X<
endl
Y="
Y<
//输出用迭代法和pow函数求得的a的立方根
return0;
}
运行结果:
(4)调试分析:
在编写程序时可能考虑不周到,会导致在运行时出现一些问题,如陷入死循环。
这是就需要根据错误提示逐步找出问题的出处,并解决它。
比如说循环的条件判断错误,这时你就要从判断条件入手找出问题,分析正确的条件是什么。
(5)用户使用说明:
只要根据屏幕所显示的提示操作就能得到正确的数据。
如:
屏幕上有:
“Enteranumber:
”,用户输入a的值,按回车键就可得到结果了。
如果用户输入非正数,循环终止,并给出出错提示。
(6)测试分析:
当分别输入10、5、9时,所得到的数据都为精确到小数点后5位的数值,说明精确度正确。
当输入0时,屏幕显示:
”程序结束,说明循环正确。
最后说明程序能正常通过。
(7)设计体会:
在编此程序时,学习到怎样进行需求分析。
如何利用循环来进行多次数值运算,并正确的结束此循环。
同时还知道要想验证一个程序算得的数值是否正确可以用两种不同的方法来验证。
2.编程序,从键盘输入正整数n,求出n与其反序数之和并输出。
例如,输入2038,输出应为2038+8302=10340。
(1)需求分析:
编程序,从键盘输入正整数n,求出n与其反序数之和并输出。
输入和输出都为整型数据。
测试的数据如下图运行结果所示。
先定义整型变量,主程序利用循环分别求出次数的位数和其反序数。
再将该数与其反序数相加输出。
(3)详细设计与编码:
源代码:
#include<
intn,m=0,s=0,x=10;
//定义整型变量。
输入一个整数:
n;
s=n;
while(s>
0)
m++;
s=n-x;
x=x*10;
}//利用循环求出该数为几位数
x=x/100;
该数为"
m<
位数。
//输出该数的位数
inta=0,b;
b=n;
while(m!
=0)
a=a*10+b%10;
b=b/10;
m--;
}//利用循环求出该数的反序数
其反序数为:
a<
//输出该数的反序数
s=a+n;
该数与其反序数之和为:
s<
//输出该数与其反序数的和。
运行结果:
(4)调试分析:
在编程时,遇到把%与/号搞混的现象,结果导致计算数据的严重错误。
通过看和询问才知道自己的错误的原因。
在发现原因之前,想完成此编程很不容易,只要熟练的掌握好整除号和除号的区别,解决此题应该不难。
(5)用户使用说明:
“输入一个整数:
”,用户输入该数的值,按回车键就可得到结果了。
(6)测试分析:
当输入2038这个整数时,得到为4位的整数,反序数为:
8302,总和为:
10340.符合计算的需求,程序通过。
(7)设计体会:
在编程时,遇到把%与/号搞混的现象,结果导致计算数据的严重错误。
通过看书和询问才知道自己的错误的原因。
所以说在计算机编程时,特别是那些大的程序需要大家共同合作完成。
可能在自己看来还能通过的程序在别人眼里就存在一些缺陷,所以共同合作才能共同进步。
3
.编程序,使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项(的具体项值)并显示在屏幕上(正整数n通过键盘输入):
说明变量old1=1,old2=1,newItem;
新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。
而后通过“old1=old2;
old2=newItem;
”进行所谓的“数据平移”。
接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。
Fibonacci数列的计算公式如下:
fib
(1)=1;
fib
(2)=1;
fib(n)=fib(n-1)+fib(n-2);
//对大于等于3的任意n。
拓展编程(选做),设计递归函数doublefib(intn);
用于求出Fibonacci数列的第n项(的具体项值)并返回,而后编制主函数对它进行调用。
源代码:
iomanip>
//声明要用到格式控制
while
(1)
{longold1=1,old2=1;
inti,n;
endl<
请输入所需求的第N项。
if(n==0){cout<
出错了!
}//输入为0的话,就会结束循环,并给出出错提示。
for(i=1;
i<
=n;
i++)
cout<
setw(12)<
old1<
old2;
//每个12字符输出一个数。
if(i==n)cout<
此时第n项为:
old2<
if(i%3==0)cout<
//每行满6项换行
old1=old1+old2;
old2=old2+old1;
//实现数据平移
4.编程序,输入正整数m,它代表一个人民币钱数(元数)。
求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。
注意,现在共有7种元以上面值的人民币纸币,分别为:
100,50,20,10,5,2,1。
intm=0,a,b,c,d,e,f,g;
请输入金额数:
m;
a=m/100;
m=m-a*100;
if(m>
=50)b=1;
elseb=0;
m=m-b*50;
=40)c=2;
elseif(m>
=20)c=1;
elsec=0;
m=m-c*20;
=10)d=1;
elsed=0;
m=m-d*10;
=5)e=1;
elsee=0;
m=m-e*5;
=4)f=2;
=2)f=1;
//利用if语句来逐个判断100、50、20、10、5、2、1各有多少个,最后再输出。
elsef=0;
m=m-f*2;
g=m;
该金额数可用"
张100元,"
<
b<
张50元"
c<
张20元,"
d<
张10元"
e<
张5元,"
f<
张2元和"
g<
个一元硬币来表示。
5.编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。
注意,2月份闰年为29天,非闰年为28天;
可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。
一个年份并选择该年的一月一号为星期几。
intyear,month,day,s;
year>
month>
day>
s;
if(year<
0){cout<
}//输入年份小于0时结束循环,并给出出错提示。
intm2;
if((year%4==0&
&
year%100!
=0)||year%400==0)m2=29;
elsem2=28;
//判断该年份为闰年还是平年。
intm,n,d;
switch(month)
case12:
d=day+31*6+30*4+m2;
case11:
d=day+31*6+30*3+m2;
case10:
d=day+31*5+30*3+m2;
case9:
d=day+31*5+30*2+m2;
case8:
d=day+31*4+30*2+m2;
case7:
d=day+31*3+30*2+m2;
case6:
d=day+31*3+30*1+m2;
case5:
d=day+31*2+30*1+m2;
case4:
d=day+31*2+m2;
case3:
d=day+31*1+m2;
case2:
d=day+31*1;
case1:
d=day;
}//利用switch语句算出该天距1月1日共多少天。
m=(d-1)%7;
n=m+s;
if(n<
7)cout<
该天是星期"
n<
elseif(n==7||n==14)cout<
该天是星期天。
else{n=n-7;
cout<
}//算出该天为星期几并输出。
7.
将输入的罗马数据化为10进制数。
假设罗马数据中只使用如下7个“基值”字母:
M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。
如,罗马数据LXXXVII表示10进制的87。
将输入的10进制正整数转换为罗马数据。
假设罗马数据中只使用“基值”字母:
7
(1)源代码:
intA=0,M,D,C,L,X,V,I=0;
M=D=C=L=X=V=0;
while(I>
请输入一正整数。
cin>
A;
if(A<
出错"
if(A/1000>
=1)M=A/1000;
A=A-1000*M;
if(A/500==1)D=1;
A=A-500*D;
if(A/100>
=1)C=A/100;
A=A-100*C;
if(A/50==1)L=1;
A=A-50*L;
if(A/10>
=1)X=A/10;
A=A-10*X;
if(A/5==1)V=1;
A=A-5*V;
//利用if语句逐步判断输入数值是否有与M,D,C,L,X,V,I对应的数,并记下个数。
I=A;
for(;
M!
=0;
M--)cout<
'
M'
D!
D--)cout<
D'
C!
C--)cout<
C'
L!
L--)cout<
L'
X!
X--)cout<
X'
V!
V--)cout<
V'
I!
I--)cout<
I'
//利用循环语句依次输入该数对应的罗马数。
7
(2)源代码:
intA=1;
charstr[30];
//定义一个字符数组,来存放罗马数
while(A!
请输入罗马数。
str;
intm,d,c,l,x,v,i,n;
m=d=c=l=x=v=i=0;
n=strlen(str);
inta;
for(a=0;
a++)
switch(str[a])
{
case'
m++;
d++;
c++;
l++;
x++;
v++;
i++;
}//利用switch语句依次记下M,D,C,L,X,V,I所出现的次数。
A=1000*m+500*d+100*c+50*l+10*x+5*v+i;
//算出罗马数对应的阿拉伯数。
A<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一阶段 面向过程源代码信科091班周华 面向 过程 源代码 091 班周华