ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:165.81KB ,
资源ID:10982131      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10982131.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计实习报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计实习报告.docx

1、C语言课程设计实习报告C语言课程设计实习报告班级:83121姓名:张弛 学号:201210004912014-1题目一、题目描述: 已知银行整存整取存款不同期限的月息利率(采用复利方式,即利滚利)分别为 0.63% 期限一年 0.66% 期限二年月息利率= 0.69% 期限三年 0.75% 期限五年 0.85% 期限八年要求输入存钱的本金和期限(以整数年为单位),求到期时能从银行得到的利息与本金的合计。提示:可以用嵌套的if-else结构或switch结构实现,核心函数pow(1+月利率,月份)。请思考年份是四、六、七或八年以上的情况。设计思路: (一)使用switch 选择语句 对应年份 (

2、二)明确核心函数pow是计算复利的(例如:x的n次方 );由于是以年为计算期限的,而所给的利率是月利率,所以计算时应该在年的基础上乘以12;(三)复利计算就是一种幂运算,I=p*(1+i)n,本金和利率都是变动的(四)在除了1、2、3、5和8年之外的其他年份中,要注意“就低不就高”的原则,尤其是在8年之后,也是套用期限八年的利率。运行效果截图: 附源程序如下:#include#includevoid main() int years; float capital,sum; scanf(%f %d,&capital,&years); switch(years) case 1:sum=capita

3、l*pow(1+0.63*0.01,12);break; case 2:sum=capital*pow(1+0.66*0.01,24);break; case 3:sum=capital*pow(1+0.69*0.01,36);break; case 4:sum=capital*pow(1+0.69*0.01,48);break; case 5:sum=capital*pow(1+0.75*0.01,60);break; case 6:sum=capital*pow(1+0.75*0.01,72);break; case 7:sum=capital*pow(1+0.75*0.01,84);br

4、eak; case 8:sum=capital*pow(1+0.85*0.01,96);break; default:sum=capital*pow(1+0.85*0.01,12*years); printf(%f,sum);题目二、题目描述:简单计算器。用switch语句编写一个程序计算表达式:data1 op data2的值。其中op为运算符+、-、*、/。设计思路:(一)明确计算器是怎样进行计算的;(二)细节,比如很多地方需要分号,在遇到字符时,我们应该用,而不是“”;(三Switch语句主要用于多分支选择,此题有+、-、*、/,这就是选择。使用switch 每个case对应+ - *

5、/符号程序涉及到至少三个量,运算符op和两个数字;先让用户输入两个数字和运算符,两个数字的计算在后面的程序中用swith结构运行。运行效果截图:附源程序如下:#include int main()float data1,data2,c;char op;printf(请输入表达式中两个数字data1和data2n); /打印scanf(%f%c%f,&data1,&op,&data2); /输入printf(请输入运算符+、-、*、/n);/ 打印switch(op) /switch ()case stick:break; 这个是个选择结构 如果 OP = stick 则执行这一句 如果没有 则

6、执行 default 后面的语句case +:c=data1+data2;break;case -:c=data1-data2;break; case *:c=data1*data2;break; case /:c=data1/data2;break; default:printf(输入错误);break;printf(%f,c);return 0;题目三题目描述:编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。提示:1 用do-while语句实现。2 二分法的计算步骤:(1) 准备 计算f(x)在有根区间a,b端点处的值f(a),f(b)(2) 二分 计算f(

7、x)在区间中点(a+b)/2处的值f(a+b)/2(3) 判断若f(a+b)/2=0,则即是根,计算过程结束。否则,检测:A 若f(a+b)/2与f(a)异号,则根位于区间a,(a+b)/2内,这时以(a+b)/2代替b;B 若f(a+b)/2与f(a)同号,则根位于区间(a+b)/2,b内,这时以(a+b)/2代替a;反复执行步骤2和3,直到区间a,b长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根设计思路:(一)二分法是指在整个算法中,让计算值无限趋近于根的值,利用数学知识可知,当了两个点的结果异号时,函数的根就在这两个数之间,利用二分法可以无限的把根的范围缩小,直到可以确

8、定为止;(二)do-while是循环语句,先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(真)时,返回重新执行循环语句,如此反复,直到表达式的值等于0(假)为止才结束。(三)Void main()是声明函数,并且是对主函数的声明。题目所给的范围是(-10,10),因此在声明函数中定义一个a和b来代替区间的范围,而用c来代指中间指也是最后的结果,在这个程序中a、b、c都是随着范围不断变化的变量。如果(-10,10)的范围过大,就需要循环语句来缩小区间范围,即a=c或b=c。当函数值在(-10,10)中任意一点取得0时,就正是我们所要的结果。循环条件是当区间a和b的函数值小于精度0

9、.01。运行效果截图:附源程序如下:#include stdio.hfloat f(float x) float y; y=2*x*x*x-4*x*x+3*x-6; return y;void main() float a=-10,b=10,c; doc=f(a+b)/2); if(c=0) break; if(c*f(a)0) a=c; else b=c; while(f(b)*f(a)0.01); /*解的精度为0.01*/ printf(方程的解是:%f,c);题目四题目描述:编写程序,给定一个整数i,请求出另一个整数j,使i和j在用8位二进制表示时互为逆序。例如:给定i=3时,应得到j

10、=192(3的二进制为:00000011,192的二进制为11000000)。提示:1 十进制整数转换为二进制整数用“除2求余”法。2 二进制整数转换为十进制整数用“按权相加”法。设计思路:(一)二进制整数转化为十进制整数用“按权相加”法(二)二十进制整数转化为二进制整数用“除2求余”,用&转化。(三)运算符:是指右移一位,=结合时从右到左运算,其中aa是指b向右移a位,左移一位相当于乘2 右移1位相当于除2(四)在交换时,用的是中间法运行效果截图:附源程序如下:#include stdio.hvoid main() int i,j,s=1,a8; printf(请输入一个整数i:n); sc

11、anf(%d,&i); for(j=0;j8;j+,s=1) aj=i & s; printf(所得到的j为:n); printf(%dn,(a07) | (a15) | (a23) | (a31) | (a53) | (a65) | (a77);题目五题目描述:编写程序,抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。根据以上线索求出车号。提示:1 按照题目的要求,造出一个前两位数相同、后两位数相同且相

12、互间又不同的整数,然后判断该整数是否是另一个整数的平方。2 用穷举法解此题。穷举法是最简单、最常见的一种程序设计方法,它充分利用了计算机处理的高速特征。穷举法的关键是要确定穷举的范围,既不能过分扩大穷举的范围,也不能过分缩小穷举的范围,否则程序的运行效率会很低,或有可能遗漏正确的结果而产生错误。设计思路:(一)11 11 到11 99 在 99 11 这样 穷举 判断是否一个数的平方 则是 将这个数开方 取整 再取平方 是否还是原来的数(二)此题需要满足三个条件:前两个数相同,后两个数相同;前后两数分别不相同;这个数是一个整数的平方。需要每个条件都满足,if才为真。(三)主要思路是穷举。穷举是

13、指在适当的范围内举出一个数。运行效果截图:附源程序如下:#include void main() int a,b; for(a=32;a=99;a+) b=a*a; if(b/1000=b%1000/100 & b%100/10=b%10 & b%100!=(b/1000)*10+b%1000/100) printf(The license plate is:%dn,b); 题目六题目描述:从终端输入实数x,用递推法求ex=1+x+x2/2!+x3/3!+xn/n!的值。设计思路:先输入一个x的值;再设计一个子函数,计算1!,2!,3!n!的值;之后用sum函数,和pow函数处理分子,用累加的

14、方式进行分子计算,并形成等式;最后输出结果。运行效果截图:附源程序如下:#include stdio.hint f(int x,int n) int i,m=0; for(i=0;in;i+) m+=(double)x/i; return m;void main() int i,x,s;printf(请输入x的值:n); scanf(%d,&x); printf(精度小于0.001的值为:n);/*根据要求可以改精度*/ for(i=0,s=0;f(x,i)0.001;i+) s+=f(x,i); printf(其结果为:%dn,s);题目七题目描述:打印出以下的杨辉三角形(要求打印出10行)

15、。11 11 2 1 1 3 3 11 4 6 4 11 5 10 10 5 1 设计思路:(一)二维数组主要用于处理多行的问题,而且第一行在数组之中是第0行。(二)杨辉三角有一个明显的特点:每一行的最后一个数字与第一个数是相同的,此外,下(三)一行的第二个数是由上一行的第一个数和第二个数相加之和,以此类推。定义指针是为了让整个程序不那么复杂。运行效果截图:运行效果截图:附源程序如下:#include int main(void) int a1010,(*p)10=a,i,j; for(i=0;i10;i+) *(*(p+i)+0)=1; *(*(p+i)+i)=1; for(i=2;i10;

16、i+) for(j=1;ji;j+) *(*(p+i)+j)=*(*(p+i-1)+j-1)+*(*(p+i-1)+j); for(i=0;i10;i+) for(j=0;j=i;j+) printf(%5d,*(*(p+i)+j); printf(n); return 0; 题目八题目描述:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。提示:1 一个二维数组可能有鞍点也可能没有鞍点,若有鞍点,则只有一个。2 准备两组测试数据:(1) 二维数组有鞍点:9 80 205 4090 -60 96 1210 -3 101 89(2) 二维数组没有鞍点:9 80 205 40

17、90 -60 196 1210 -3 101 8945 54 156 7用scanf函数从键盘输入数组各元素的值,检查结果是否正确。如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请同学们修改程序以实现之。设计思路:(一)先找出一行中值最大的元素,然后看它是不是该列中的最小值,由于一个二维数组最多有一个鞍点,所以如果是则鞍点存在且它就是鞍点,输出该鞍点;如果不是,则再找下一行的最大数,以此类推。如果每一行的最大数都不是鞍点,则此数组无鞍点(二)在程序中,先令ai0最大赋值给maxi,在for循环的比较中,把符合条件的行的最大值赋给maxi,将每一次比较后的最

18、大的列数赋值给maxj,从而找出i行最大的那个。再假设那个数就是鞍点,将最大数和同列的数值相比,如果maxj不是最小的,则不是鞍点,继续找。(三)引入一个参数flag=1,若不存在鞍点则flag为0,若存在鞍点则flag依旧为1运行效果截图: 附源程序如下:#include stdio.h#define S 80#define T 80void main()int m,n,i,j,t,maxh,maxl,flag,aST;printf(请输入二维数组的行数m和列数n:n);scanf(%d %d,&m,&n);printf(请输入二维数组的各个元素:n);for(i=0;im;i+)for(j

19、=0;jn;j+)scanf(%d,&aij);for(i=0;im;i+)t=ai0;for(j=1;jai0) t=aij;maxh=i;maxl=j;for(i=0;im;i+) if(aimaxl901 97 87 92 276 92 N2 92 91 90 273 91 Y3 90 81 82 253 84 N. . #include stdio.hvoid main()设计思路:由于是对30个学生的数据进行输入与统计,所以建立二维数组,根据各位置的条件来定义其内容,第8个数据是字符型数据,所以另设一数组进行存储,最后在将数据整合输出。运行效果截图:附源程序如下:#include s

20、tdio.hvoid main()int i,j,sum,flag,a307;printf(请输入30个考生的三科成绩:n);for(i=0;i30;i+)ai0=i+1;for(sum=0,j=1;j90) flag=1;else flag=0;ai4=sum;ai5=sum/3;if(flag=1) ai6=Y;else ai6=N;printf(NO MT EN PH SUM V 90 );for(i=0;i30;i+)for(j=0;j6;j+)printf(%5d,aij);printf( %cn,ai6);题目十题目描述下面是一个5*5阶的螺旋方阵,试编程打印出此形式的n*n(n1

21、0)阶的方阵(顺时针旋进)。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9提示:用二维数组实现。设计思路:定义一个n*n维数组存放该方阵,m为该方阵的圈数,一个大循环中嵌套了四个小循环,每一圈为一个大循环,第一个小循环按顺序写出第一行的数,第二个小循环按顺序写出最后一列的数,第三个小循环按顺序写出最后一行的数,第四个小循环按顺序写出第一列的数,再进行第二次大循环,循环完毕后再进行循环输出数组中的n*n个数,该螺旋方阵就出来了。运行效果截图:附源程序如下:#include stdio.hvoid main() int i

22、, j, k = 0, m, n,a1010; printf(请输入方阵行列数n(n10):n); scanf(%d,&n); if(n%2=0) m = n / 2; else m = n / 2 + 1; for(i=0;im;i+) for(j=i;jn-i;j+) k+; aij=k; for (j=i+1;j=i;j-) k+; an-i-1j =k; for (j=n-i-2;j=i+1;j-) k+; aji=k; for (i=0;in;i+) for (j=0; jn;j+) printf(%5d, aij); printf(n); 附:实习总结与心得体会经过C语言实习,让我

23、加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实习,逐渐积攒了一些经验,有些错误可以很快就看出来。这次实习有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。C语言是一个有序的学习,学了最基本的替换

24、,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实习我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,但是会养成一种依赖的心理,碰到问题了个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实习,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路

25、,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,在上课的时候老师就讲,学习C语言最重要的是学习C语言的逻辑思维,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!感谢学校安排这次实习和老师的耐心讲解,让我学到了很多知识,在实习过程中,同学之间的相互探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之间的感情。希望以后还会有更多类似的实习课程,在有限的大学时间内学到更多的实用技能,为以后的生活和工作打下一个良好的基础。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1