C语言程序设计作业

发布 2021-05-05 21:41:28 阅读 2654

程序设计报告。

课程名称_ _c语言程序设计 __

题目名称。学生学院__ 管理学院 __

专业班级_ 市场营销1 班 _

学号。学生姓名。

指导教师。2023年 06 月20日。

第一题。流程图:

算法说明:数据输入部分就不用说了,就是简单的使用了for循环结构。对于sort函数部分,最主要的是数据排序部分。

此排序法使用了冒泡排序法,不过却经过了优化。正常的冒泡排序法,使用的时候是要进行n*n次比较。而经过优化后,进行次数一定是<=n*n次。

为什么呢,因为在此算法中,我加入了flag变量。设定为每进行一次比较,flag++一次,最后就判断flag是否变化了,当其没变化时,就是证明数据交换已经完成,即代表数据已按照规定排序排列完整。此时就可以结束掉排序循环。

因此,排序算法会进行少的运算。

知识点:1:for循环结构;2:if条件结构;3:函数调用;4:排序算法;

程序**:#include <>

main()

sort(a,i-1); 调用sort函数。

int sort(int a,int n)

printf("成绩从高到低排列%d",i); 输出数据。

for(i=0;i<=n;i++)

printf("%d ",a[i]);

难点。此程序没有存在什么难点,直接使用普通的算法就可以完成要求,而且自定义的函数不用数据回传,所以整体来讲非常简单。

体会。制作完此程序之后,让我知道,算法是可以很容易写出来。但是,想让此算法更优化,就需要动动脑筋深思此算法还能有什么提高的地方。总体来讲,此程序编写非常简单。

第二题。流程图:

算法说明:此程序调用了c语言里的时间函数和随机函数(网上查阅),利用读取当前系统时间进行随机函数的种子,即初始值。然后利用循环结构,把0-51的数值按照随机排列储存到a数组之中(数据无重复)。

数据定义部分:因为num数组中含有1-10和ajqk,所以储存的时候就比较麻烦,所以就用0代表了10,把所有的扑克牌值已单字符形式储存在num中。因此,在程序输出的部分,程序应当要把0字符输出为10。

所以在输出部分多了一个判别条件。

a数组的数据确立,因为扑克共52张不重复,那储存在a数组的数据也应为有52个并重复。所以,在循环生成随机数时,要判断下一个新生成的随机数是否与前面已储存的数据相同,如果相同,即重新生成,不同,则继续生成下一个数据,知道完整生成了52个不同数据为止。

而输出部分就很关键了,因为定义hs[4]储存了4中花色,num[13]储存了13张牌值。

假设a[52]中数据为0-51,此时0代表扑克牌为花色hs[0],为值num[0]。即hearts of a

此时1代表扑克牌为花色hs[0],为值num[1]。即hearts of 2

此时12代表扑克牌为花色hs[0],为值num[12]。即hearts of k

此时13代表扑克牌为花色hs[1],为值num[0]。即diamonds of a

由此可见,可以利用数学表达式,把a[52]中的个数据利用算法指向到hs和num数组中特定的数据。

推出:num[a[i]%13] of hs[a[i]/13] ①

解释:a[i]%13是求模,当a[i]是0时,num[a[i]%13]为a;当a[i]是12时,num[a[i]%13]为k;

当a[i]是13时,num[a[i]%13]为a;当a[i]是25时,num[a[i]%13]为k;

hs[i]/13是除法,当a[i]是0时,hs[a[i]/13]为hearts;

当a[i]是25时,hs[a[i]/13]为diamonds;

此式子,是利用了c语言中,商为小数时,当其储存变量为整形,则商去掉小数部分。

以此类推,可以得出,①算法式子是可以使用的。

知识点:1:for循环结构;2:if条件结构;3:时间函数和随机函数的调用;

程序**:#include <>

#include <>

#include <>

main();

char num[13]=;

int i,j,a[52];

srand((unsigned)time( null ))用系统时间当种子,对随机函数进行初始化。

for(i=0;i<52;i++)

run:a[i]=rand()%52; /产生各个随机数 ..即初始化扑克牌顺序值

for(j=0;jif(a[i]==a[j])

goto run;

产生完0-51的52个的不同数据排列组。

printf("洗牌后输出扑克");

for(i=0;i<52;i++)

if(num[a[i]%13]==0'){此处要把num数组中的0字符重新转换为10

printf("10 of %s",hs[a[i]/13]);

continue;

printf("%c of %s",num[a[i]%13],hs[a[i]/13]);

难点。为了确保程序比较简化,所以试过好多方法时候得出了最后这程序。本来打算是直接找个数组把所有的牌以” 牌值of花色”为数据模板储存的。

但发现这方法虽好,但是数据初始化的时候比较麻烦。因为涉及到52个数据,很烦。所以改用其他方式,换为指针的储存方式,以上述程序的hs和num数组分开储存扑克牌资料,用一指针指向统一两个数组而产生联系。

发现最终还是不行,会经常输出乱码,估计指针使用的时候地址定位出现了错误。然后又换方式,用了个结构体,发现没什么用处。最终,灵光一闪,想到了用1-52表示每张扑克牌,利用算术式把此代表值计算出在hs和num数组中的代表值。

因此就有了上述的程序。

其实对于程序,难的不只是这点。就如随机函数这部分就比较困难了,一开始还想了很久到底要怎么弄才能产生随机的数据,虽然也想到了时间这变化的数据,但是,去不知道怎么去调用。经过上网一查,发现c语言中没有自己的随机函数系统。

最终,随机数列还是给我弄出来了。弄出来了就好办咯,解决的随机问题,又解决了数据显示问题。程序就这样写了出来。

体会。慢慢地想,慢慢地思考,肯定把程序写出来的。也更证明了一点,写程序,逻辑思维和数学思维都要有一定的水平。

要不,很多想法会被局限。其实想到了核心算法,其他问题就可以慢慢解决的。如果连程序的核心都还没确定下来。

说实话,你解决其他不关紧要的问题也没用。因为核心都不确定,难保说那些方法都要使用。

总结。光阴荏苒,当一学期的时光白驹过隙般一晃而过,我的c语言学习历程划上了句号。但我深知我所学到的只不过是c语言的皮毛而已。

将来我若想有所提高,有所成就,就还必须努力完善自己的c 语言体系,下面我就简谈一下自己的学习总结吧!

开始学习时,我几乎听不懂老师在讲什么,就感觉讲台上一个博学者在给我们讲一些让我们“得道成仙”的话语,可怜的是台下的我们没有一个人晓得他的仙语。总之,课堂上老师讲的是唾惺横飞,而我们是听得昏昏欲睡。

随着时间的推移,随着知识的积累,我对c语言的认识终于有了点眉目。我越听越有一种懂它恨晚的感觉,但是从此我在c语言上的磕磕绊绊也开始了…….

c语言的学习,有许多要迈过去的沟沟坎坎,那我就说一下里面的玄机吧。c语言是写给电脑看的语言,电脑只懂二进制,所以我们就必须掌握二进制与八进制、十进制、十六进制的转换关系。其次,我们必须记住c语言的关键字,且c语言有许多常用字符,它们和ascii**一一对应。

再次,c语言有许多运算符,它们的结合方向不一样,且有各自的优先级。我们要掌握c语言,那么掌握它们就是基础。c语言是一种高级语言,是所有语言的基础,学好c语言,将对我们今后的语言课程的学习有很大帮助。

当我学到数据结构这门课时,我能够隐约地感觉到c语言学到的知识,在其中派上了用场。如数组的学习,给我带来了不少烦恼。但是说起数组来,它贯穿于我们整个c言之中,我们经常要用它来存储数据。

编写图形要用它来储存坐标数据,编写**要用它来储存音符乐谱,即使学生的成绩也要用到它来储存……但是,如果我们在利用它的时候,不好好注意,将被弄得眼花缭乱!我们在利用它来处理数据的时候,涉及到的排序,找最大,最小值这些问题。特别是排序,方法挺多,但如果不把握住几种常用的方法,使用数组就变得非常不便。

常用的方法中,有冒泡排序,选择排序,希尔排序,快速排序等方法:选择法排序,与冒泡法排序都是利用for循环语句,前者是先寻找出最大最小值的下标,然后再交换,后者则是利用相邻间元素的比较大小,不符合要求顺序的就交换,这样一级一级地向上交换,把最大的或者最小的放到最上面去;对于后两种办法排序,都利用到循环次数不确定的while和do-while语句,前者还利用到for语句,希尔排序利用一一对应比较的办法,后者利用数组中其它元素与中间数进行比较大小,然后实行交换。

“C 语言程序设计”作业

教育部人才培养模式。改革和开放教育试点。c 语言程序设计。形成性考核册。学校名称 学生姓名 学生学号 班级 广播电视大学出版社。计算机应用专业 c 语言程序设计 课程作业。第一次作业。一 填空题。1 c 语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。2 用于输出表达式值的标准输出流对象...

C语言程序设计作业

c语言小知识 计算机语言 computer language 指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字 字符和语法规划,由这些字符和语法规则组成计算机各...

C语言程序设计作业

单项选择题 第1题下列一维数组定义正确的是 a int for 10 b long a 5 c char score 10 d float xx n 答案 c 第2题下列属于数组a 10 的元素是 a a 0 b a 5 c a 7 d a 10 答案 a 第3题下列一维数组定义正确的是 a int...