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语言编程上的一个里程碑。
实训报告
实训报告
指导教师
评阅意见
成绩