完整word版程序设计实训报告.docx
- 文档编号:20132169
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:14
- 大小:1.11MB
完整word版程序设计实训报告.docx
《完整word版程序设计实训报告.docx》由会员分享,可在线阅读,更多相关《完整word版程序设计实训报告.docx(14页珍藏版)》请在冰豆网上搜索。
完整word版程序设计实训报告
学生实训报告册
课程名称:
程序设计基础实训
姓名龚枫
学号1617203118
班级软件161
指导教师石怡
实训时间2017.3.13—2017.3.24
实训地点J4306
物联网工程学院
2017年3月
实训报告
1.实训目的
通过本课程的学习,掌握C语言程序设计的基础知识和基本技能,树立结构化程序设计的基本思想,养成良好的编程习惯,培养严谨务实的分析问题与解决问题能力,并为后续的应用性课程和系统开发课程打好软件基础。
1.进一步掌握编辑、编译、连接和运行一个C程序的方法;
2.进一步了解C程序的特点;
3.进一步掌握一些常用的算法;
4.进一步掌握使用顺序、选择、循环等三种基本结构进行程序设计的方法,进一步掌握函数定义和使用方法;
5.理解和掌握指针的概念,会定义和使用指针变量;
6.掌握构造数据类型的定义和使用;
7.综合运用以上知识,提高分析、修改、编写简单的C程序的能力;
8.熟悉全国计算机等级考试二级C语言上机考试环境和系统使用方法。
2.实训内容
1)计算机公共基础知识
2)C语言基础知识
针对实训内容,列举出一些易错易混淆知识点。
第一题
实型常量:
不分float型和double型,一个实型常量可以赋给一个float型或double型变量,但变量根据其自身类型截取实型常量中相应的有效数字。
第二题
当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。
第三题
优先级比较:
初等运算符>单目运算符>算术运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括“!
”)>条件运算符>赋值运算符>逗号运算符。
第四题
所有实数的运算都是以双精度方式进行的,若是单精度数值,则需要在尾数后面补0转换为双精度数。
第五题
在输入数据时,若实际输入数据少于输入项个数,scanf()函数会等待输入,直到满足条件或遇到非法字符才结束;若实际输入数据多于输入项个数,多余的数据将留在缓冲区备用,作为下一次输入操作的数据。
2)实训项目
要求将程序填空、程序修改、程序设计三种题型至少各列5题,给出完整、正确的程序,所记录运行情况和输出结果,所掌握的知识点。
1.学生的记录由学号和成绩组成。
N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
【答案】
doublefun(STREC*a,STREC*b,int*n)
{
inti;
doubleav=0.0;
*n=0;
for(i=0;i av=av+a[i].s; av=av/N; for(i=0;i if(av<=a[i].s) {b[*n]=a[i];*n=*n+1;}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/ returnav; } 2.编写函数fun,其功能是计算: s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。 log函数的引用说明为: doublelog(doublex)。 例如,若m的值为20,则fun函数值为6.506583。 【答案】 doublefun(intm) { inti; doubles=0.0; for(i=1;i<=m;i++) s=s+log(i);/*计算s=ln (1)+ln (2)+ln(3)+…+ln(m)*/ returnsqrt(s);/*对s求平方根并返回*/ 3.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。 函数fun的功能是: 对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。 例如,若b所指变量t中的学号、姓名和三门课的成绩依次是: 10002、"ZhangQi"、93、85、87,修改后输出t中的数据应为: 10004、"LiJie"、93、85、87。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 【答案】 doublefun(STREC*a,STREC*b,int*n) { inti; doubleav=0.0; *n=0; for(i=0;i av=av+a[i].s; av=av/N;/*求平均值*/ for(i=0;i if(av<=a[i].s) {b[*n]=a[i];*n=*n+1;}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/ returnav;/*返回平均分*/ } 4.编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。 例如,若输入17,则应输出: 4 6 8 9 10 12 14 15 16。 【答案】 (1)M (2)< (3)k 5.规定输入的字符串中只包含字母和*号。 请编写函数fun,其功能是: 将字符串中的前导*号全部移到字符串的尾部。 例如,字符串中的内容为: "*******A*BC*DEF*G****",移动后,字符串中的内容应当是: "A*BC*DEF*G***********"。 在编写函数时,不得使用C语言提供的字符串函数。 【答案】 (1)a (2)b.name (3)score[i] 6.下列给定程序中函数fun的功能是: 用递归算法计算斐波拉契数列中第n项的值。 从第1项起,斐波拉契数列为: 1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 【答案】 (1)a[i] (2)a[j] (3)a[j]3.实训中遇到的问题和解决方法(至少5个问题) 7.下列下列给定程序中,函数fun的功能是: 从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。 高位仍在高位,低位仍在低位。 例如,当s中的数为7654321时,t中的数为7531。 【答案】 (1)voidfun(longs,long*t) (2)sl=sl*10; 8. 下列给定程序中函数fun的功能是: 求两个非零正整数的最大公约数,并作为函数值返回。 例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。 【答案】 (1)t=a;a=b;b=t; (2)return(b);或returnb; 9.下列给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。 例如,s所指的字符串为"def35adh3kjsdf7",执行后结果为"defadhajsdf3537"。 【答案】 (1)for(j=i+1;j<6;j++) (2)*(pstr+i)=*(pstr+j); 10.下列给定程序中fun函数的功能是: 求表达式 s=aa…aa-…-aaa-aa-a (此处aa…aa表示n个a,a和n的值在1至9之间) 例如,a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是296298。 a和n是fun函数的形参,表达式的值作为函数值传回main函数。 【答案】 (1)longs=0,t=0; (2)t=t/10; 11.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。 函数fun的功能是: 将形参a所指结构体变量s中的数据进行修改,并把a的地址作为函数值返回主函数,从主函数中输出修改的数据。 例如,a所指变量s中的学号、姓名和三门课的成绩依次是: 10001、"ZhangSan"、95、80、88,修改后输出t中的数据应为: 10002、"LiSi"、96、81、89。 【答案】 (1)structstudent* (2)a->score[i] (3)a 12.下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。 函数fun的功能是: 删除链表中数据域值相同的结点,使之只保留一个。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 【答案】 (1)q (2)next (3)next 13.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。 所有学生数据均以二进制方式输出到student.dat文件中。 函数fun的功能是: 从文件中找出指定学号的学生数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其它学生数据指定不变;若找不到,则不做任何操作。 【答案】 (1)fp (2)== (3)fp 14.下列给定程序中,函数fun的功能是: 从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。 ss所指字符串数组中共有N个字符串,且串长小于M。 【答案】 (1)N (2)k (3)ss[i] 15.下列给定程序的功能是: 从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。 文件的读写分别由函数ReadText和WriteText实现。 【答案】 (1)*fw (2)str (3)str 3.实训中遇到的问题和解决方法 (1)对数组的定义和使用不熟练解决办法: 上网XX查资料 (2)C语言运算符数量多,辨别难。 解决方法: 熟记运算符之间联系以及运算的优先级。 (3)函数只定义了一次,调用了一次,但编译器提示非法重定义了。 解决方法: 寻求老师的帮助 (4)用选择法对10个整数排序,10个整数用scanf函数输入,并动态跟踪其实现过程。 解决方法: 用冒泡法每次转移最大的数据后输出实现。 (5)对++i和i++在程序中的作用和含义不理解解决办法: 询问旁边同学 4.心得体会 在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。 在为期两周的时间中,我们同组的同学共同的感受是: C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。 好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。 在这里,我作为其中的参与者,感触良多。 在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。 通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。 这次的实训,使我对C语言的学习产生浓厚的兴趣。 还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。 实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。 更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。 通过这次实训,也使我们发现了许多问题。 在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许东西还要去翻书,去上网搜索。 而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。 还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。 首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。 然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。 遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。 总之,这一切都成为我记忆里面的一个篇章,更是在 C语言编程上的一个里程碑。 实训报告 实训报告 指导教师 评阅意见 成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 程序设计 报告