C语言课程设计报告.docx

上传人:b****3 文档编号:12650069 上传时间:2023-04-21 格式:DOCX 页数:20 大小:394.31KB
下载 相关 举报
C语言课程设计报告.docx_第1页
第1页 / 共20页
C语言课程设计报告.docx_第2页
第2页 / 共20页
C语言课程设计报告.docx_第3页
第3页 / 共20页
C语言课程设计报告.docx_第4页
第4页 / 共20页
C语言课程设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告.docx

《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告.docx

C语言课程设计报告

 

福建工程学院

 

《C语言课程设计》报告

 

班级:

机械1301

学号:

3130111103

姓名:

******

指导教师:

邝凌宏

日期:

2013/12/30-2014/1/3

 

第一部分

一、问题描述

题目1:

企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于或等于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润x,求应发放奖金总数?

1.解题分析

根据利润计算奖金时,要注意利润中不同的部分提取奖金的比例不同,即

利润中<=10万元的部分,按10%提成奖金;

利润中10~20万元的部分,按7.5%提成奖金;

利润中20~40万元的部分,按5%提成奖金;

利润中40~60万元的部分,按3%提成奖金;

利润中60~100万元的部分,按1.5%提成奖金;

利润中>=100万元的部分,按1%提成奖金;

应发奖学金总数是各部分奖金的和,例如,利润x达到40万到60万之间时,奖金y由四个部分组成:

(1)利润中<=10万元的部分(共10万元)奖金:

10e4*0.1;

(2)

利润中10~20万元的部分(共10万元)奖金:

10e4*0.075:

;(3)利润中20~40万元的部分(共20万元)奖金:

20e4*0.05;(4)利润中40~60万元的部分(共x-40万元)奖金:

(x-40e4)*0.03,于是,y=10e4*0.1+10e4*0.075+20e4*0.05+(x-40e4)*0.03.

2.流程图

3.编码

#include

main()

{

floatx,y;

printf("\ninputtheprofitx:

");

scanf("%f",&x);

if(x<=0)

printf("noprize.\n");

else

{

if(x<=10e4)

y=x*0.1;

elseif(x<=20e4)

y=10e4*0.1+(x-10e4)*0.075;

elseif(x<40e4)

y=10e4*0.1+(x-10e4)*0.075+(x-20e4)*0.05;

elseif(x<=60e4)

y=10e4*0.1+(x-10e4)*0.075+(x-20e4)*0.05+(x-40e4)*0.03;

elseif(x<=100e4)

y=10e4*0.1+(x-10e4)*0.075+(x-20e4)*0.05+(x-40e4)*0.03+(x-60e4)*0.015;

else

y=10e4*0.1+(x-10e4)*0.075+(x-20e4)*0.05+(x-40e4)*0.03+(x-60e4)*0.015+(x-100e4)*0.01;

printf("\ntotalprizey=%.2f",y);

}

}

4.测试运行结果

二、

问题描述

题目2:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.解题分析、方法等:

1.定义变量i,j,k,flag;

2.令j是变量i加上100后的一个完全平方数;k是变量i加上268后的一个完全平方数;

4.比较转化为整形的j*j=?

i+100;k*k=?

i+268求出变量i。

2.流程图:

3.源程序:

#include

main()

{

inti,j,k,flag=0;

for(i=-100;;i++)

{

for(j=0;j

for(k=0;k

if(i+100==j*j&&i+268==k*k)

{

printf("%d",i);

flag=1;

}

if(flag==1)

break;

}

}

4.运行结果:

三、问题描述

题目5:

有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1块砖,恰好一次全部搬完,编程求出成年男子成年女子和儿童各有多少人。

1.解题分析、方法等

1、定义成年男子、成年女子、儿童分别为变量x,y,z;

2、男子人数可搬x*4块砖,女子人数可搬y*3块砖,儿童人数可搬z/2块砖;

3、共36人和36块砖,故x+y+z=36,x*4+y*3+z/2=36;

4、求x,y,z。

2.流程图:

3.源程序:

#include

voidmain()

{

intx,y,z;

for(x=0;x<=36;x++)

for(y=0;y<=36-x;y++)

{

z=36-x-y;

if((4*x+3*y+z/2==36)&&(z%2==0))

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

}

4.测试结果:

四、问题描述

 

题目10:

有100盏灯,由100个开关控制,现在有100个人顺序从每个开关走过,第1个人将所有开关拨一下,第2个人将偶数开关拨一下,第3个人将3的倍数的开关拨一下,依次类推。

问,100人过后,哪些灯是亮的,哪些灯是灭的?

1.解题分析、方法等:

所有的灯一开始是暗的,每一个人经过开关都会改变。

然后按下述步骤完成:

(1)一开始所有的灯都暗,故为-1;

(2)每个人一经过开关,值会改变;

(3)输出时,负值的灯是暗的,正值的灯是亮的

2.流程图:

3.编码

#include"stdio.h"

main()

{

intq[101],i,j;

for(i=1;i<=100;i++)

q[i]=-1;/*一开始的灯是暗的,q[i]是“非”*/

for(i=1;i<=100;i++)

for(j=i;j<=100;j++)

{

if(j%i==0)q[j]=-q[j];/*每改变一次开关,q[i]变成非q[i]*/

}

printf("以下的灯是亮的:

");/*打印出何盏灯是亮的及暗的*/

for(i=1;i<=100;i++)

{

if(q[i]==1)printf("%d",i);

}

printf("\n以下的灯是暗的:

");

for(i=1;i<=100;i++)

{

if(q[i]!

=1)printf("%d",i);

}

}

4.测试结果:

第二部分

五、问题描述

课题二恺撒(Caesar)及改进的恺撒密码加、解密实现。

恺撒加密方法就是把明文中所有字母都用它右边的第k个字母替代,并认为Z后边又是A。

这种映射关系表示为如下函数:

F(a)=(a+k)modn

其中:

a表示明文字母;n为字符集中字母个数;k为密钥。

例如:

明文attack,密钥k=3,密文dwwdfn

改进的恺撒密码

明文中的字符换成另一个字符即单字母替换

如:

abcdefghijklmnopqrstuvwxyz

QWERTYUIOPASDFGHJKLZXCVBNM(密钥)

例如:

明文attack,密文QZZQEA

1.解题分析、方法等:

1、在主函数中,定义三个数组存放明文和转换后的密文;

2、调用自定义的函数fun(),通过输入密钥,得到改进的恺撒密码;

2.流程图:

1、主函数流程图:

主函数流程图

3.编程:

#include

#include

voidfun(char*p,char*q)

{

chara[26]="abcdefghijklmnopqrstuvwxyz",b[26];

inti,j,flag=0;

char*tp=p,*tq=q;

while(flag==0)

{printf("\nmingwenbiao:

abcdefghijklmnopqrstuvwxyz\n");

printf("\ninputmiyao:

");/*输入明文和密钥(改进的恺撒密码)*/

scanf("%s",b);

flag=1;

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

if(b[i]=='\0')

{

flag=0;

printf("\nwrongmiyao,nend26chars!

!

");/*检错,如果密钥个数不是26,就提示错误*/

break;

}

}

for(j=0;tp[j]!

='\0';j++)

{

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

{

if(tp[j]==a[i])

{

tq[j]=b[i];

}

}

}

tq[j]='\0';

printf("\nmiwentwo:

%s\n",q);/*输出密文2:

*/

}

voidmain()

{

charm[100],c[100],d[100];

intk,i;

printf("\ninputmingwen:

");/*输入明文*/

gets(m);

printf("\ninputthekey:

");/*输入密钥*/

scanf("%d",&k);

printf("\n");

for(i=0;m[i]!

='\0';i++)

{

c[i]=(m[i]-'a'+k)%26+'a';

}

c[i]='\0';

printf("miwenoneis:

%s\n",c);/*输出密文1是:

*/

fun(m,d);

}

4.测试结果:

二、

学习心得

 

C语言的收获

刚开始学习C语言的时候不知该从何下手,以前没有学过,有些同学都学过,老师上课也很快,有点赶不上的节奏,有时候在上机的时候虽说程序能看明白,但要让自己去写一个程序那真的是一个头两个大。

最后自己一个人慢慢找学习的方法,自己在课余时间试着去自己上机操作,对着课本自己练习编程,最后再只看题,不对着课本,有时候尝试用课本上没有用过的方法去解决一些问题,自己也会去想一些问题,然后想出方法再去编写程序解决。

通过这样不断的操作实践着实让我的C语言有了很大的提高,就是在这次的C语言等级考试中也是相当得心应手。

同时C语言的学习是一个需要耐心和细心的工作,到目前为止,有些时候一些编程还是会有一些小问题出现,有些时候会将“=”和“==”等效了,有时候会将“a*b”写成“ab”,为了克服这个缺点,每次在编完程序试运行之前,我都会自己去检查一次,把电脑要做的事情自己先做一次,久而久之,感觉编程出现问题的地方和次数都少了很多。

我对C语言的学习的感受就是操作(也就是解题)比一味的去看课本效率更高,也学的更快更轻松,这次的C语言报告再一次给了我一个锻炼自己的机会,以前没有写过流程图,通过这次的实习报告让我对流程图的编写也变的更加熟悉。

但同时流程图也是最麻烦的,思路不是太难,可要想在WORD里表达出来还需要CAD去画图,再截图黏贴。

总的来说,这周的C语言实习让我过的很充实,无论是C语言的编程还是解决问题的思路,甚至还让我复习了一下CAD的操作。

同时也加深了我对C语言的理解与认识。

对我而言,这是一次很有价值的锻炼。

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

当前位置:首页 > 法律文书 > 起诉状

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

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