计算机科学与技术第4次上机实验教案资料_第1页
计算机科学与技术第4次上机实验教案资料_第2页
计算机科学与技术第4次上机实验教案资料_第3页
计算机科学与技术第4次上机实验教案资料_第4页
计算机科学与技术第4次上机实验教案资料_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 哈尔滨工程大学程序设计基础实验报告基础实践一姓 名: 麦豆 班 级:学 号:实验时间:2018 年 5 月 3 日成绩哈尔滨工程大学计算机基础课程教学中心实验题目1:写一个函数,Sn=a+aa+aaa+aaa求多项式的前n项和,其中a是一个数字。n由键盘输入。设计思想:声明函数sum利用循环求得sum最终值并返回sum值实验代码及注释:#include int sum(int a,int n);sum 函数声明int main()精品资料count=count*10+a;/ count=count*10+a;/ 每

2、次乘 10 加 a精品资料精品资料count=count*10+a;/ count=count*10+a;/ 每次乘 10 加 a精品资料int n;int a;printf( 请输入 a,n:n);scanf(%d%d,&a,&n);printf(前d 项和为 dn,n,sum(a,n);调用函数 sum return 0;int sum(int a,int n)int sum=0;int i;int count;count=0;for(i=1;i=n;i+)杂品资料 杂品资料 杂品资料 杂品资料 sum=sum+count;return sum;验证与结论:ID:C语言项目曾四次上机实脸谑

3、目1 :写f 国数binDebug摩目1 :写T区数总xe请输入a,n:1 4前4J页和为1234Process returned 0 (0 x0) execution time : 3. 672 s Press any key to continue.总结与心得体会:声明函数时后面一定要有分号,但写函数时不需要。实验题目2:编程实现求10000以内的回文数。其中,函数实现判断 任一正整数是否为回文数。所谓回文数就是将一个数从左向右读与从杂品资料 精品资料精品资料精品资料精品资料右向左读是一样的,例如121 和 1331 都是回文数。设计思想:声明judje 函数,判断number 是否为回文

4、数。在函数内部先判断数字number 位数,由于回文数为对称结构,故通过位数来确定判断次数,每次判断数字首位与个位然后去掉首位与个位再次判断直至循环结束。另外需要对个位数另行判断,个位数一定为回文数。如果为回文数返回1,否则返回0。实验代码及注释:#include #include int judje(int number);/ 声明 judje 函数int main()int i;for(i=0;i10000;i+)if(judje(i)=1)/judje 为 1 的数输出printf(%dt,i);return 0;int judje(int number)/ 判断 number 是否为回

5、文数int judje,i=0,middle_number,parity,j;/ 回文数判断变量,数字位数,数字位数中间变量,数字位数奇偶int middle_number2;/ 取掉首位个位剩余数int shouwei,gewei;/ 首位,个位middle_number2=number;/ 全部赋初值middle_number=number;do/ 判断数字位数i+;middle_number=middle_number/10;/ 对数字除以10 直到为0while (middle_number!=0);parity=i/2;/ 运算次数for (j=1;j=parity;j+)shouw

6、ei=middle_number2/pow(10.0,(double)(i-2*j+1);/ 首位数字gewei=middle_number2%10;/ 个位数字middle_number2=(middle_number2-shouwei*pow(10.0,(double)(i-2*j+1)/10;/将首位与个位去除后剩余的数if(shouwei=gewei) & j=parity)/ 个位与首位相等且都已比较完成judje=1;/1 为真else if(shouwei!=gewei)杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 (judje=0;break;

7、)if(parity=0)/如果为个位数一定为回文数judje=1;return judje;)验证与结论杂品资料 杂品资料 杂品资料 D;C音言项目催四次上机实勒求10000以内的回文豁bin枷bug住10000以内的回文我”r - 71 Qy 1 3 4 6 7 9 6 1 6 16 1 1 6 1 6 1 6 1 6 1 6 Ji 6 1- 1134679134*6 71 913 4 6 7 91346 r - 71 Qy 1 3 4 6 7 9 6 1 6 16 1 1 6 1 6 1 6 1 6 1 6 Ji 6 1- 1134679134*6 71 913 4 6 7 91346

8、7 9 5050 50505 0 505050 5013467 9 134 6 79124578 1245703494949 4949494949495 7 81245782345688991011111212322422522622723833934044144245355455555655756866967077177278388488588688789899991001mi1221233224422552266227723883399340044114422453355445555556655775688669967007711772278338844835588668S77898899

9、9990 (OxO) execution time : 0. 984 s continue.7282 13IX43412 4 5 7 8 5 7 8383838 8 3 83838 3 8 5 7 81245782 3 5 6 S 9 u S 235689272727 tk 7 2 72 7 2 71272727 e 17 2 3 5 6 8 9 2 3 5 6 8 9 r Vsar sA- s2 3 5 689 c s 23 5 6 89161616 o A- su 1A 1- Gu IX 卢 o i-i Aro 1- IX Ru r r 06235 6 00 9235 6009PP总结与心

10、得体会:通过函数可以使代码更加简洁,流程更加清晰实验题目3:假设你每月在储蓄账户上存100元,年利率是5%,则每月的利率是0.0夕12=0.00417。第一个月后,账户上的值变成100*(1+0.00417) =100.417;第二个月后,账户上的值变成(100+100.417杂品资料 精品资料精品资料精品资料精品资料*( 1+0.00417) =201.252; 第三个月后,账户上的值变成( 100+201.252)*( 1+0.00417) =302.507,以此类推。写一个函数,根据用户输入的每月的存款数、年利率和月份数,计算给定月份后账户上的钱数。设计思想:声明final_money,

11、由题意可知每个月钱数为上个月钱数加每月存的钱数乘以每月利率,在函数内部由循环得到钱数,返回final_money。实验代码及注释:#include double final_money(double money,double lilv,int n);/ 函数声明int main()double money,lilv;/ 每月存款数,年利率int n;/ 月份printf( 请输入每月存款数、年利率和存款月份数(以空格隔开):n);scanf(%lf%lf%d,&money,&lilv,&n);printf( 账户上的剩余钱数为%.3lf,final_money(money,lilv,n);re

12、turn 0;double final_money(double money,double lilv,int n)/ 存款数、年利率和 月份数double final_money=0;/ 赋初值int i;/ 循环变量for(i=1;i=n;i+)final_money=(final_money+money)*(1+lilv/12);/ 表达式杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 return final_money;/ 返回钱数)验证与结论:杂品资料 杂品资料 杂品资料 杂品资料 D:C语言项目逢四次机实野存款钱数binDebug存款钱数.exe请输

13、入每月存款数、年利率和存款月份数(以空格隔开): 100 0.05 3302. 507Process returned 0 (0 x0) execution time : 33.219 sPress any key to continue.总结与心得体会:函数参数可以是多个但返回值只有一个。实验题目4:用递归法将一个整数n转换成字符串。例如,输入483,应输出的字符串“ 483”,n的位数不确定,可以是任意位数的整数。设计思想:声明函数,在函数将数每次除以10反复递归调用直到为杂品资料 杂品资料 杂品资料 杂品资料 杂品资料 精品资料精品资料0,而余数加上0可以产生相应的字符。实验代码及注释:

14、#include void change(int n);int main()int n; TOC o 1-5 h z printf( 请输入整数n:);scanf(%d,&n);printf( 输出相应字符串:);if (n0)putchar(-); /先输出一个-号n=-n;转化为正值change(n);printf(n);return 0; void change(int n)int i;i=n/10;if (i!=0)change(i);对n每次除以10反复递归调用直到为0putchar(n%10+0);余数加上0可以产生相应的字符验证与结论:.D:C:吾言项目室四次上机实险恒出字符Mb

15、irADubug宙出字符育。?t青布人整翦笈缈3谕由相应学符串:483-rocess returned 0 (0 x0) execution time : 18. 200 s-*ress any key to continue.总结与心得体会:余数可以加上48 来得到相应的字符但加 0会更加简单。函数递归必须要有限制条件,转换字符串函数限制条件就是i 为 0。实验题目5:用递归方法求n 阶勒让德多项式的值。设计思想:直接利用函数递归,当阶数值为o 返回 1,阶数值为1 返回输入的数。另外阶数值在递归时需要强制转换为float 类型,否则式子计算为整型数。实验代码及注释:#include flo

16、at number(float x,int n);/ 函数声明int main()精品资料精品资料杂品资料 杂品资料 杂品资料 杂品资料 int n;/ 阶数float x;/ 循环变量充当输入的数printf(请输入x值和阶数:n);scanf(%f%d,&x,&n);printf(%.2fn,number(x,n);return 0;float number(float x,int n)if(n=0)return 1;else if(n=1)return x;return(2*n-1)*x*number(x,n-1)/(float)n-(n-1)*number(x,n-2)/(float)

17、n; 递归求n阶勒让德多项式注意n为整数需要强制转换验证与结论25946. 65验证与结论25946. 65rocess returned 0 (0 x0) execution time ress any key to continue.总结与心得体会:递归是c语言中最基础也是极为重要的算法, 核心 是函数自身对自身的调用。注意整型除以整型仍为整型,故需要对阶 数值强制转换。实验题目6:编程求20以内正整数的阶乘。要求:写一函数求任一 整数的阶乘,在函数内部通过定义静态局部变量求阶乘。设计思想:声明一个factorial函数,在函数内部定义静态变量,利用循环求阶乘值,由于局部静态变量会保留上一

18、次运行的值,故求20以内正整数的阶乘只能调用一次factorial 函数,求19 的阶乘然后利用循环从19 往下输出直到1 的阶乘。实验代码及注释:#include long long factorial(int number);/ 函数声明int main()int i=19;long long x;数据极大必须用longlong数据类型x=factorial(i);/ 仅调用一次函数/printf(%ld,x);for(i=19;i0;i-)printf(%d! 是lldn,i,x);longlong 用11d 输出杂品资料 杂品资料 杂品资料 杂品资料 精品资料精品资料x/=i;/ 除掉

19、之后多余的数的到当前i 的阶乘return 0;long long factorial(int number)/ 求任意整数阶乘函数static long long y=1;/静态变量只赋一次初值以后函数调用会保 留上一次的值int i;for (i=1;i121645100408832000 18! 6402373705728000 17! 355687428096000 16!2092278988800015:! 130767436800014!#8717829120013!622702030012!崽479001600轴是 3991660010 虚 3628go0M113628803! 403207! 50406! 720process ret

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论