C语言实训报告Word文档格式.docx

上传人:b****6 文档编号:18263458 上传时间:2022-12-14 格式:DOCX 页数:23 大小:306.41KB
下载 相关 举报
C语言实训报告Word文档格式.docx_第1页
第1页 / 共23页
C语言实训报告Word文档格式.docx_第2页
第2页 / 共23页
C语言实训报告Word文档格式.docx_第3页
第3页 / 共23页
C语言实训报告Word文档格式.docx_第4页
第4页 / 共23页
C语言实训报告Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C语言实训报告Word文档格式.docx

《C语言实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实训报告Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

C语言实训报告Word文档格式.docx

实训是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。

并为参加计算机等级考试作准备。

1.2实训的基本内容和要求

参加实训的学生,应当认真完成实训的全部内容。

最终提交实训成果来证明其独立完成各种实际任务的能力。

从而反映出理解和运用本课程知识的水平和能力。

具体如下:

1.代码编写规范,形成良好的编程习惯;

2.程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。

3.提交实训报告电子稿、装订的打印稿。

实训报告内容包括以下几个方面:

程序的总体设计和算法分析。

l程序流程图、函数说明

源程序代码清单

测试数据和测试过程记录

遇到的问题及解决方法分析

实训小结

第2章C语言实训课题演示系统的设计

2.1需求分析

功能:

包括选择结构、循环结构、顺序结构程序、数组、函数、指针等,要求可以实现字母表加密系统,6174规律的验证,生成职工信息单链表,实现ASCII码文件信息复制,实现前n项数列求和运算,实现优秀学生成绩的筛选。

2.2概要设计

2.2.1演示系统主控模块

根据表1的子系统与函数名的对照表,设计出如下“C语言实验演示系统”的主控模块。

在主控模块中,只要在主函数main()前加入包含各子系统文件组成的头文件,我们就能方便的调用各子系统的函数了。

主控模块(图示):

图2.1

图2.2

子模块(图示):

图2.3

图2.4

图2.5

图2.6

主程序包含所有子程序中要用到的自定义头文件。

2.2.2各子系统的函数名对照表

表2.1各子系统函数名对照表

序号

菜单名

文件名

函数名

1

6174规律验证

yanzheng.h

yanzheng

2

单链表建立与输出

lianbiao.h

lianbiao

3

数列求和

shulieqiuhe.h

shulieqiuhe

程序执行过程:

当程序编译连接成功后,就可以生成可执行程序了。

程序主菜单如图xx:

此时等待用户输入,系统对输入的数会自动进行判断,如果不合理则会提示用户重新输入,如果合理则会进入相应的子模块。

并进行相应的运算。

例如输入4时,则系统运行结束后会生成一个新的文件,并将源文件的内容复制到新文件里。

第3章6174的验证系统的设计

3.1需求分析

编写程序验证以下说法:

输入一个4位数,该数个、十、百、千位上的数互不相等,由个、十、百、千位上的数组成一个最大数和一个最小数,最大数-最小数,构成一个新的4位数。

反复以上运算,使其最终结果为:

6174。

3.2概要设计

3.2.16174的验证系统的基本算法

S1:

输入num

S2:

判断num是否是四位数,如果不是则返回S1,如果是则转至S3

S3:

判断num的个十百千位上数是否互异,互异则转至S4,否则输出出错信息后结束

S4:

令ans=num

S5:

令t=ans,分解ans的各个数位,将其存入一个数组里

对该数组进行升序排列

S6:

有排列后的数得到最大数max和最小数min

S7:

令ans=max-min

S8:

判断ans是否与t相等,如果不相等则返回至S5,否则输出ans

3.36174的验证系统主流程图

图3.1

3.4模块测试

6174的验证系统主菜单

图3.2

输入菜单号1,进入6174的验证系统,并输入一个4位数,输入完毕后,其结果将会在屏幕显示出来。

图3.3

图3.4

图3.5

第4章职工信息单链表系统的设计

4.1需求分析

编写一个程序实现如下功能:

建立一个单链表,每个结点数据要有职工号、工资。

用一个creat函数来建立链表,用list函数输出数据

4.2概要设计

4.2.1职工信息单链表系统的基本算法

令n=0,head=NULL

系统分配sizeof(structstaff)字节的空间给p1,p2

输入p1->

num,p1->

wage的值

判断p1->

num是否为0,如果不为0,n=n+1,转至S7

判断n==1,如果成立,则head=p1,否则移动链表指针p2

为p1分配sizeof(structstaff)字节空间,并返回S3

返回链表头指针head

令p=head,判断head是否为NULL,如果不为NULL,转至S9,否则结束

S9:

输出p->

num,p->

wage,移动指针p,使p=p->

next

S10:

判断p是否为NULL,如果p不为NULL,返回S9,否则结束

4.3职工信息单链表系统流程图

图4.1

4.3模块测试

职工信息单链表系统主菜单

图4.2

输入菜单号2,进入职工信息单链表系统,输入职工号和职工工资,其结果如图所示。

图4.3

图4.4

第5章前n项数列求和运算系统的设计

5.1需求分析

功能:

输入一个n的值,求出数列前n项的和。

该数列满足以下规律:

1+12+123+1234+……

5.2概要设计

5.2.1数列前n项和的基本算法

输入

令t=0,i=1,sum=0

判断i≤n,如果成立成立转至S4,否则转至S5

t=t*10+i,sum=sum+t,i=i+1转至S3

输出sum的值

5.3前n项数列求和运算系统流程图

图5.1

5.4模块测试

前n项数列求和运算系统主菜单

图5.2

输入菜单号3,进入前n项数列求和运算系统,并输入n的值,数列前n项和的值如图所示。

图5.3

图5.4

第6章实训小结

一个星期的C语言实训十分匆忙,还来不及回味,就已经结束了。

这次实训不仅让我重温了从课本上学到的知识,C语言的三种基本结构运用更娴熟还对函数定义,函数调用有了较深入的了解,同时也初步掌握了C语言中比较重要的结构体,链表,文件操作等。

通过这次实训,让我明白,学习C语言不能停留在学习它的语法规则,而是应该利用自己学到的知识编写C语言程序,解决实际问题。

只有通过实践才能检验自己是否掌握C语言,检验自己编写的程序是否能够正确地解题。

因为在 

自己编好程序上机调试运行时,可能有很多意想不到的情况发生,也许你认为正确的答案却是错的。

而通过解决这些问题,可以逐步提高自己对C语言的理解和程序开发能力。

这次实训让同学们从25道题中选择自己喜欢题进行编写,在一定程度上给人以很大的自由选择空间,同时也极大的考验了大家的动手能力和思考能力。

这次实训确实让我获益匪浅!

实训,让我学会了耐心对待每一件事。

有时候,我认为自己编写的程序绝对是没有问题的,但每次就是运行不出来,这让人很着急。

但是我还是一遍又一遍的检查,看看自己是否把程序的源代码输错;

然后反复斟酌,看看自己自己的思路是不是有问题。

通过不断地检验,我终于检查出了程序的错误,在修改后,程序得到了正确的运行。

而当时那份喜悦的心情,真是无以言表!

实训,激发了我学习的浓厚兴趣。

由于自己以前学习C语言不够全面,这让我在实训中面对结构体,文件函数等题型时感到十分的无助。

于是,我便又拿起了自己许久不见的课本,静静地在图书馆自学,当遇到不懂的地方时,我会向老师和同学询问或者到网上查询资料。

在不断的学习过程中,我对C语言有了更深的认识和体会。

实训,提高了我解决问题的能力。

在这次实训过程中,像给字母加密,对学生成绩进行筛选等题型是我以前从未遇到过的。

当我面对困难时,我没有像以前那样一味的逃避,而是勇敢的去面对。

我会通过自己的学习或者是和同学的交流后,试着编写程序,遇到错误后,积极思考,及时的改正。

在解决问题的过程中,我了解到同一个程序可能许多种解决方法,而不同编写方法有不同的特点。

我认为最简单最直接的方法便是最有效的方法。

实训,让我学会了严谨。

这次实训让我养成了良好的编写风格。

由于一点小失误,就会使整个程序出错。

因此,在编程时,要注意相同内容的缩进和对齐。

这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。

在实训的一个星期的时间里,我学到很多很多的东西,这次实训使我懂得了理论与实际相结合的重要性。

只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在实训的过程中可以说是困难重重,但我却没有放弃,而是迎难而上。

同时在实训的过程中我也发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,文件等。

这次实训,我并不满足于对C语言的学习,我更长远的目标便是考出计算机等级二(c)的证书,在不久后,我即将面临等级考试,但我并不害怕,因为这次实训让我信心倍增!

参考文献

谭浩强编著,《C程序设计》(第三版),清华大学出版社

夏耘,吉顺如编著,《大学程序设计(C)实践手册》,,复旦大学出版社

鲁沐浴编著,《C语言最新编程技巧200例》,电子工业出版社

梁翎等编著,《C语言程序设计实用技巧与程序实例》,上海科普出版社

各模块源代码

/*主控模块代码*/

#include<

stdio.h>

windows.h>

stdlib.h>

#include"

help.h"

yanzheng.h"

lianbiao.h"

shulieqiuhe.h"

print.h"

main()

{

voidprint(void);

voidxz(int);

intchoice=100;

while(choice!

=0)

{

print();

scanf("

%d"

&

choice);

getchar();

while(choice<

0||choice>

7)

{printf("

\t\tpleaseinputanumberbeween0-7\n"

);

system("

pause"

print();

scanf("

}

xz(choice);

}

/***********************************************/

/*主控显示代码*/

voidxz(inta)

cls"

switch(a)

case1:

yanzheng();

break;

case2:

lianbiao();

case3:

shulieqiuhe();

case4:

hlpfun();

case5:

exit(0);

voidprint(void)

printf("

\n"

\t\tCLanguageTrainingDemonstrationSystem\n"

\t\t═════════════════════════\n"

\t\t═MENU═\n"

\t\t═1.验证6174═\n"

\t\t═2.建立单链表═\n"

\t\t═3.计算1+12+123+1234+…═\n"

\t\t═4.帮助═\n"

\t\t═5.退出系统═\n"

\t\tinputyourchoice(1-5):

"

/*验证6174系统代码*/

voidyanzheng(void)/*对一个各位不重复的四位数,计算后结果为6174*/

intIsNumberEqual(int);

voidntos(intnum,intc[]);

voidsort(inta[]);

intgetmax(inta[]);

intgetmin(inta[]);

intnum,c[4],max,min,ans=1,t=0;

thisprogrameneedsanumberbetween1000to9999andits"

everydigits\nshouldbedifferent"

Icancalculatethenumberlikeamagicto\nmaketheresultis6174\n"

inputanumber(1000<

number<

9999):

num);

while(num<

1000||num>

9999)

dataerror,inputagain:

if(IsNumberEqual(num))

ans=num;

do

{

t=ans;

ntos(ans,c);

/*把输入数的各位存入c数组*/

sort(c);

/*对各数排序*/

max=getmax(c);

min=getmin(c);

ans=max-min;

}while(ans!

=t);

printf("

result=%d\n"

ans);

elseprintf("

pleaseinputasuitednumber!

intIsNumberEqual(intnum)/*判断num的各位是否互异,互异返回1,否则返回0*/

inta[4],flag=1;

a[0]=num%10;

a[1]=num%100/10;

a[2]=num%1000/100;

a[3]=num/1000;

if(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]

||a[1]==a[2]||a[1]==a[3]||a[2]==a[3])

flag=0;

returnflag;

voidntos(intnum,intc[4])/*把num的各位存入数组c*/

c[0]=num%10;

/*c[0]表示num的个位*/

c[1]=num%100/10;

/*c[0]表示num的十位*/

c[2]=num%1000/100;

/*c[0]表示num的百位*/

c[3]=num/1000;

/*c[0]表示num的千位*/

}

voidsort(inta[4])/*从小到大排序—升序*/

inti,j,t;

for(i=0;

i<

4-1;

i++)

for(j=0;

j<

4-1-i;

j++)

if(a[j]>

a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

intgetmax(inta[])/*返回最大值*/

intans;

ans=a[0]+a[1]*10+a[2]*100+a[3]*1000;

returnans;

intgetmin(inta[])/*返回最小值*/

ans=a[0]*1000+a[1]*100+a[2]*10+a[3];

/*职工信息单链表模块代码*/

malloc.h>

#defineLENsizeof(structstaff)

structstaff

longnum;

floatscore;

structstaff*next;

};

voidlianbiao(void)/*建立单链表并输出*/

structstaff*creat(void);

voidlist(structstaff*head);

structstaff*head;

inputsomestaffs'

informationincludeIDandwage,thenumberofstaffis\nnotfixed"

becauseweusealistwithoutlimited.youcaninputsomestaffs'

\ninformation"

ifyouwanttoendsinputplesepress0,ablank,0,now.\nyoucantry.\nIDwage\n"

head=creat();

list(head);

structstaff*creat(void)/*建立单链表*/

structstaff*head,*p1,*p2;

intn=0;

p1=p2=(structstaff*)malloc(LEN);

%ld%f"

p1->

num,&

score);

head=NULL;

while(p1->

num!

n=n+1;

if(n==1)head=p1;

elsep2->

next=p1;

p2=p1;

p1=(structstaff*)malloc(LEN);

p2->

next=NULL;

return(head);

voidlist(structstaff*head)/*输出链表内数据*/

structstaff*p;

\nthestaffinformationyoucreatjustnoware:

p=head;

if(head!

=NULL)

printf("

%-5d\t%.2f\n"

p->

p=p->

next;

}while(p!

=NULL);

voidshulieqiuhe(void)/*calculate1+12+123+1234+……*/

longfun(int);

voidpt_result(longsum,intn);

intn;

thisprogramecancalculate1+12+123+1234+……\n"

forexampleifyouinput3,itcancalulate1+12+123\n"

inputn:

n);

pt_result(fun(n),n);

longfun(intn)

longsum=0,t=0;

inti=1;

while(i<

=n)

t=t*10+i;

sum+=t;

i++;

returnsum;

voidpt_result(longsum,intn)

longt=0;

%d+"

t);

i++;

\b=%d\n"

sum);

/*帮助源代码*/

voidhlpfun12(void)

thisprogramisdesignedfortestafamouslawnamed6714\n"

letuslookhowtocalculateanumberandlettheresultis6174\n"

ifanumberbetween1000to9999meetstheconditionthatits\n"

everydigitisdifferent,withthefourdigits,wecangetamaximu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

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

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