计算机科学与技术第4次上机实验.doc_第1页
计算机科学与技术第4次上机实验.doc_第2页
计算机科学与技术第4次上机实验.doc_第3页
计算机科学与技术第4次上机实验.doc_第4页
计算机科学与技术第4次上机实验.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

哈尔滨工程大学程序设计基础实验报告基础实践一姓 名: 麦豆 班 级: 学 号: 实验时间: 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() 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+) count=count*10+a;/每次乘10加a sum=sum+count; return sum;验证与结论:总结与心得体会:声明函数时后面一定要有分号,但写函数时不需要。实验题目2:编程实现求10000以内的回文数。其中,函数实现判断任一正整数是否为回文数。所谓回文数就是将一个数从左向右读与从右向左读是一样的,例如121和1331都是回文数。设计思想:声明judje函数,判断number是否为回文数。在函数内部先判断数字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是否为回文数 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直到为0 while (middle_number!=0); parity=i/2;/运算次数 for (j=1;j=parity;j+) shouwei=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; if(parity=0)/如果为个位数一定为回文数 judje=1; return judje;验证与结论:总结与心得体会:通过函数可以使代码更加简洁,流程更加清晰。实验题目3:假设你每月在储蓄账户上存100元,年利率是5%,则每月的利率是0.05/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,由题意可知每个月钱数为上个月钱数加每月存的钱数乘以每月利率,在函数内部由循环得到钱数,返回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); return 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;/ 返回钱数验证与结论:总结与心得体会:函数参数可以是多个但返回值只有一个。实验题目4:用递归法将一个整数n转换成字符串。例如,输入483,应输出的字符串“483”,n的位数不确定,可以是任意位数的整数。设计思想:声明函数,在函数将数每次除以10反复递归调用直到为0,而余数加上0可以产生相应的字符。实验代码及注释:#include void change(int n);int main() int n; 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反复递归调用直到为0 putchar(n%10+0);/余数加上0可以产生相应的字符验证与结论:总结与心得体会:余数可以加上48来得到相应的字符但加0会更加简单。函数递归必须要有限制条件,转换字符串函数限制条件就是i为0。实验题目5:用递归方法求n阶勒让德多项式的值。设计思想:直接利用函数递归,当阶数值为o返回1,阶数值为1返回输入的数。另外阶数值在递归时需要强制转换为float类型,否则式子计算为整型数。实验代码及注释:#include float 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)n;/递归求n阶勒让德多项式注意n为整数需要强制转换 验证与结论:总结与心得体会:递归是c语言中最基础也是极为重要的算法,核心是函数自身对自身的调用。注意整型除以整型仍为整型,故需要对阶数值强制转换。实验题目6:编程求20以内正整数的阶乘。要求:写一函数求任一整数的阶乘,在函数内部通过定义静态局部变量求阶乘。设计思想:声明一个factorial函数,在函数内部定义静态变量,利用循环求阶乘值,由于局部静态变量会保留上一次运行的值,故求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用%lld输出 x/=i;/除掉之后多余的数的到当前i的阶乘 return 0;long long factorial(int number)/求任意整数阶乘函数 static long long y=1;/静态变量只赋一次初值以后函数调用会保留上一次的值 int i; for (i=1;inumber;i+) y=y*(i+1);/用循环求阶乘 return y;/返回阶乘值验证与结论:总结与心得体会:局部静态变量会保留上一次运行的值,故在此题中只调用了一次函数.另外由于10以上阶乘数极大,声明类型时用了long long类型。实验题目7:编程实现两个整形变量内容互换。用带参数的宏实现变量内容的交换。设计思想:直接用带参数的宏充当函数来对两个整型变量交换。实验代码及注释:#include #define change(x,y) mid=

温馨提示

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

评论

0/150

提交评论