C语言课程设计报告01 下载本文

1)简要的语言描述

按题目要求输入数据;首先判断可行驶的路程是否足够汽车到达加油站;如果不能到达,则需要加油,在此处记录一次并循环;得出累计加油次数之和算得出结果。 ?2.6.4调试过程及实验结果

1)实验结果如下:

2.8大优惠

?2.8.1 题目内容的描述

中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?

输入的测试数据为一行,实例包括2个整数M, K(2 <= K <= M <= 1000)。输出一个整数,表示M元可以用的天数。

?2.8.2输入数据类型、格式和内容限制和输出数据的说明 1)数据类型:整型;2)内容限制:键入数字M、K;

3)输出数据:可以使用的天数。 ?2.8.3主要模块的算法描述

1) 程序流程图如下:

- 14 -

开始 K,M,i=0,2 <= K <= M <= 1000 否 M〉0 是 i++,M=M-1; 否 i%K==0 是 M=M+1 可用天数i 结束

2)语言描述如下:

此题目主要运用了循环、判断语句。首先键入总钱数M与元获赠1元需消费的钱

数K,判断M与0的关系,下来根据情况执行程序,直到钱数小于等于零时终止输出天数。

?2.8.4调试过程及实验结果

1)调试过程遇到的问题与解决方案:

没有仔细阅读题目,导致在后来的测试中,输入的数据有M>K的,与事实不相符合,在后来的检查调试过程中,加入了限定的条件! 2)实验结果如下:

- 15 -

2.9掷骰子游戏

?2.9.1 题目内容的描述

国王用金币奖励他忠诚的侍从。第一天侍从工作结束后,国王奖励了他一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币。这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。

要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。 ?2.9.2输入数据类型、格式和内容限制和输出数据的说明 1)数据类型:整型;2)内容限制:键入天数;

3)输出数据:整型输出金币个数。 ?2.9.3主要模块的算法描述

3) 程序流程图如下:

开始 i=1,sum=0 输入天数j, j!=0 j>=i 否 是 sum=sum+i*i,j=j-i; sum=sum+j*i,j=0; i++ 输出金币数sum 结束

2)语言描述如下:

了解题意之后得出,主要的数据间的关系为算法为sum=sum+i*i,j=j-i,通过判

断j,之间的关系终止进行总求和输出结果。 ?2.9.4调试过程及实验结果

1)调试过程遇到的问题与解决方案:在写思考是忘记天数不能为零,再后来的写代码是也没有注意,后来发现不符合实际,添加代码“j!=0”,修改成功! 2) 实验结果如下:

- 16 -

二、 课程设计分析与总结

由于上学期在语言的学习方面没有足够的重视,因此,基础功不是很扎实,在这次课程设计中显得特别吃力,不过最终还是基本完成了此次课程设计的内容。

在各个实验中解决问题的基本流程是:分析问题→分析解决问题的基本流程→选择合适的算法语句→书写程序→调试修改→按要求书写实验报告。

在这些过程中,我认为分析问题的解决流程最为重要,分析好解决流程之后,就可以清楚的知道自己这一步要干什么,下一步要干什么,思路就显得十分清楚,按照这个流程解决问题是我感觉做得好的一面。

不过也有很多不足,例如:好久没碰C语言了,for语句,while语句的基本功能都模糊了,在选择运用时还要在课本、网络上熟悉这些内容,还有一点就是自己对函数、模块化的思想掌握不够,按照实验要求需运用模块化的方式来解决问题,自己却很少使用这种思想,这就是实验中的不足之处。

总而言之,通过这次5天的课程设计我进一步了解C程序设计语言的编程功能,握C程序设计语言的相关知识,体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。

众多不足之处我会在大二上学期重修《高级语言程序设计》时进一步加固,力争将这门基础课真正的学好、用好,摆正思想,为以后的专业课的学习大好基础!

最后感谢谢老师的一而再再而三的严格要求及耐心指导,感谢感谢同学们的帮助,谢谢你们!

附录:源程序清单(保存在code-.cpp)

2.1掷骰子游戏:①掷骰子游戏方法一.cpp

- 17 -

#include #include #include void main() {

int i,j,k,l,m,n,grade1=0,grade2=0;

srand( (unsigned)time( NULL ) ); //生成随机数产生器 for(i=1; i<11; i++) {

for(l=1;l<60000000;l++);/程序缓冲的作用/ printf(\第一个人第%d次投出的数\\n\ j=rand()%6+1; printf(\ k=rand()%6+1;

printf(\

if(k==j==6) grade1=grade1+8;

if(k==j==5||k==j==4||k==j==3||k==j==2||k==j==1)

grade1=grade1+7;

else if(k>j)

grade1=grade1+j;

else

grade1=grade1+k;

printf(\第二个人第%d次投出的数\\n\

n=rand()%6+1;

printf(\ //rand()产生随机数 m=rand()%6+1;

printf(\

if(m==6||n==6)

- 18 -