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

下载本文档

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

文档简介

计算机科学与技术第4次上机实验教学设计资料计算机科学与技术第4次上机实验教学设计资料26/26计算机科学与技术第4次上机实验教学设计资料<<<<<<精选资料》》》》》哈尔滨工程大学《程序设计基础》实验报告基础实践一姓名:麦豆班级:学号:实验时间:2018年5月3日<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》成绩哈尔滨工程大学计算机基础课程讲课中心实验题目1:写一个函数,Sn=a+aa+aaa+···+aa···a求多项式的前n项和,此中a是一个数字。n由键盘输入。设计思想:申明函数sum,利用循环求得sum最后值并返回sum值实验代码及说明:#include<stdio.h>intsum(inta,intn);//sum函数申明intmain()<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》{intn;inta;printf("请输入a,n:\n");scanf("%d%d",&a,&n);printf("前%d项和为%d\n",n,sum(a,n));//调用函数sumreturn0;}intsum(inta,intn){intsum=0;inti;intcount;count=0;for(i=1;i<=n;i++){count=count*10+a;//每次乘10加a<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》sum=sum+count;}returnsum;}考证与结论:总结与心得意会:申明函数时后边必然要有分号,但写函数时不需要。实验题目2:编程实现求10000之内的回文数。此中,函数实现判断任一正整数能否为回文数。所谓回文数就是将一个数从左向右读与从<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》右向左读是同样的,比方121和1331都是回文数。设计思想:申明judje函数,判断number能否为回文数。在函数内部先判断数字number位数,因为回文数为对称构造,故经过位数来确立判断次数,每次判断数字首位与个位此后去掉首位与个位再次判断直至循环结束。其他需要对个位数另行判断,个位数必然为回文数。假如为回文数返回1,不然返回0。实验代码及说明:#include<stdio.h>#include<math.h>intjudje(intnumber);//申明judje函数intmain(){inti;for(i=0;i<10000;i++)<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》{if(judje(i)==1)//judje为1的数输出printf("%d\t",i);}return0;}intjudje(intnumber)//判断number能否为回文数{intjudje,i=0,middle_number,parity,j;//回文数判断变量,数字位数,数字位数中间变量,数字位数奇偶intmiddle_number2;//取掉首位个位节余数intshouwei,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为真}elseif(shouwei!=gewei)<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》{judje=0;break;}}if(parity==0)//假如为个位数必然为回文数judje=1;returnjudje;}考证与结论:<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》总结与心得意会:经过函数可以使代码更为简短,流程更为清楚。实验题目3:假定你每个月在储存账户上存100元,年利率是5%,则每个月的利率是。第一个月后,账户上的值变为100*);第二个月后,账户上的值变为()<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》*();第三个月后,账户上的值变为()(),以此类推。写一个函数,依据用户输入的每个月的存款数、年利率和月份数,计算给定月份后账户上的钱数。设计思想:申明final_money,由题意可知每个月钱数为上个月钱数加每个月存的钱数乘以每个月利率,在函数内部由循环获得钱数,返回final_money。实验代码及说明:#include<stdio.h>doublefinal_money(doublemoney,doublelilv,intn);//函数申明intmain(){<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》doublemoney,lilv;//每个月存款数,年利率intn;//月份printf("请输入每个月存款数、年利率和存款月份数(以空格分开):\n");scanf("%lf%lf%d",&money,&lilv,&n);printf("账户上的节余钱数为%.3lf",final_money(money,lilv,n));return0;}doublefinal_money(doublemoney,doublelilv,intn)//存款数、年利率和月份数{doublefinal_money=0;//赋初值inti;//循环变量for(i=1;i<=n;i++){final_money=(final_money+money)*(1+lilv/12);//表达式}<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》returnfinal_money;//返回钱数}考证与结论:<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》总结与心得意会:函数参数可以是多个但返回值只有一个。实验题目4:用递归法将一个整数n变换成字符串。比方,输入483,应输出的字符串“483”,n的位数不确立,可以是随意位数的整数。设计思想:申明函数,在函数将数每次除以10频频递归调用直到为<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》0,而余数加上'0'可以产生相应的字符。实验代码及说明:#include<stdio.h>voidchange(intn);intmain(){intn;printf("请输入整数n:");scanf("%d",&n);printf("输出相应字符串:");if(n<0){putchar('-');//先输出一个‘-’号n=-n;//转变为正当}change(n);printf("\n");<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》return0;}voidchange(intn){inti;i=n/10;if(i!=0)change(i);//对n每次除以10频频递归调用直到为0putchar(n%10+'0');//余数加上'0'可以产生相应的字符}考证与结论:<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》总结与心得意会:余数可以加上48来获得相应的字符但加’0’会更为简单。函数递归必须要有限制条件,变换字符串函数限制条件就是i为0。实验题目5:用递归方法求n阶勒让德多项式的值。设计思想:直接利用函数递归,当阶数值为o返回1,阶数值为1返回输入的数。其他阶数值在递归时需要强迫变换为float种类,不然式子计算为整型数。实验代码及说明:#include<stdio.h>floatnumber(floatx,intn);//函数申明intmain(){<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》intn;//阶数floatx;//循环变量充任输入的数printf("请输入x值和阶数:\n");scanf("%f%d",&x,&n);printf("%.2f\n",number(x,n));return0;}floatnumber(floatx,intn){if(n==0){return1;}elseif(n==1)returnx;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<stdio.h>longlongfactorial(intnumber);//函数申明intmain(){inti=19;longlongx;//数据极大必然用longlong数据种类x=factorial(i);//仅调用一次函数//printf("%ld",x);for(i=19;i>0;i--){printf("%d!是%lld\n",i,x);//longlong用%lld输出<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》x/=i;//除去此后节余的数的到目前i的阶乘}return0;}longlongfactorial(intnumber)//求随意整数阶乘函数{staticlonglongy=1;//静态变量只赋一次初值此后函数调用会保留前一次的值inti;for(i=1;i<number;i++){y=y*(i+1);//用循环求阶乘}returny;//返回阶乘值}<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》考证与结论:<<<<<<精选资料》》》》》<<<<<<精选资料》》》》》总结与心得意会:局部静态变量会保存前一次运转的值,故在本题中只调用了一次函数.其他因为10以上阶乘数极大,申明种类时用了longlong种类。实验题目7:编程实现两个整形变量内容交换。用带参数的宏实现变量内容的交换。设计思想:直接用带参数的宏充任函数来对两个整型变量交换。实验代码及说明:#include<stdio.h><<<<<<精选资料》》》》》<<<<<<精选资料》》》》》#definechange(x,y)mid=x;\x=y;\y=mid//宏定义两个整形变量内容交换intmain(){intx,y,mid;printf("请输入xy的值:\n

温馨提示

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

评论

0/150

提交评论