c语。言。
程。序。设。计。
题目: 组数游戏。
班级序号: 05507120
学号: 20071002806
姓名: 管兵。
指导老师: 刘文中。
c语言是一种编译型程序设计语言,编程设计是学习该语言的一个重要环节。通过温习已学的知识,在上机实践中熟悉c语言的编程环境,进而达到能够编写较复杂程序并将其实际应用的程度。在实际编程中不断地深入学习数据结构、算法、编译原理、操作系统原理、软件工程等知识,加深对c语言的理解,切实提高编程水平,这是c语言课程设计的主要目的。
一、 题目要求。
一)、设计题目:组数游戏。
二)、设计要求。
设计n个正整数(n<=20),将它们连成一排,组成一个最大的多位数。程序输入:n,程序输出:n个数连接成的多位数。
三)、设计思路分析。
比如输入这样五个数123 ,2 ,33, 1006, 12先找出最大的数字的位数为4位数,再将所有的数字后面添加0变成4位数:
然后进行排序:
这样后再奖后面添加的0去掉的序列就是最大的数字:
二、整体设计思路。
三、详细设计。
一)、结构体。
结构体定义输入数组数字的个数,位数,位数变化添加的0的个数。
程序为:#include ""
typedef struct
int num;
int ws;
int z_num;
no; 二)、主函数。
主函数分为位数计算,位数变化,排序,去0操作,输出操作。
程序为:main()
getnum();
fill_zero();
sort();
back();
print();
三)、各功能模块设计。
1、位数计算。
计算出输入数组的每个数的位数,并返回最大的位数值r。
程序为:int getws(int a)
int r=0;
while(a!=0)
r+=1;
a/=10;
return r;
2、添0操作。
把每个数后面都添加0,使所有数都变成r位数。
程序为:void fill_zero()
int i;
for(i=1;i<=n;i++)
for(;dig[i].ws<
dig[i].num*=10;
dig[i].ws+=1;
dig[i].z_num+=1;
3、排序模块。
将添加0后的各数按从大到小的顺序排列。使用冒泡排序法。
程序为:void sort()
int i;
int j;
no t;
for(i=1;i<=n;i++)
for(j=1;j{
if(dig[j].num{
t=dig[j];
dig[j]=dig[j+1];
dig[j+1]=t;
4、去0操作。
将之前在每个数后添加的0去掉。
程序为:void back()
int i;
for(i=1;i<=n;i++)
while(dig[i].z_num>0)dig[i].num/=10;
dig[i].z_num-=1;
5、输出操作。
将得到的数字按序输出。
程序为:void print()
int i;
for(i=1;i<=n;i++)
printf("%d",dig[i].num);
四、总结。通过这几次课我认识到c语言程序虽然有一点难,但它是一种相当实在的应用程序,掌握了对以后的编程有很大的帮助。在编程过程中需要多练习多做题目还要开动脑筋思考问题,能够用最简单的**完成较复杂的程序要求是最理想的。
在本程序设计中遇到的问题比较简单,解决的方法也较简单,最重要的是能够坚持,,问题往往较容易解决。在设计过程中同学们也可以相互讨论共同研究解决问题的方法,集思广益,多练习,多思考。在进行检错的时候要从头开始,不要放过每一个小的环节。
比如说在统计该程序的得分情况中就显示了检查的重要性,不要被一点点的错误迷了。通过这几节课,不仅是让我在这门课上要仔细,在其他方面也要做到细心。
附:源程序如下:
#include ""
typedef struct
int num;
int ws;
int z_num;
no; /结构体*/
no dig[20];
int n;
no max;
int getws(int a)
int r=0;
while(a!=0)
r+=1;
a/=10;
/*计算出每个数的位数*/
return r;
void getnum()
int i=0;
printf("input n:")
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("input the %d number:",i);
scanf("%d",&dig[i].num));
dig[i].ws = getws(dig[i].num);
if(dig[i].num>
max=dig[i];
void fill_zero()
int i;
for(i=1;i<=n;i++)
for(;dig[i].ws<
dig[i].num*=10;
dig[i].ws+=1;
dig[i].z_num+=1;
/*每个数位数加1,z_num加1*/
void sort()
int i;
int j;
no t;
for(i=1;i<=n;i++)
for(j=1;j{
if(dig[j].num{
t=dig[j];
dig[j]=dig[j+1];
dig[j+1]=t;
/*按照冒泡法从大到小排序*/
void back()
int i;
for(i=1;i<=n;i++)
while(dig[i].z_num>0)dig[i].num/=10;
dig[i].z_num-=1;
void print()
int i;
for(i=1;i<=n;i++)
printf("%d",dig[i].num);
main()
getnum();
fill_zero();
sort();
back();
print();
C语言课程设计报告 游戏
东华理工大学。学院 国际教育学院学院 专业 电子信息工程 班级 1420606 学号 201420060638 姓名 钟天运。1 课程设计题目 游戏2048 2 课程设计要求 a 使用c语言编写2048这款游戏。b 能够正常运行,拥有游戏界面。c 能正常进行游戏从开始到结束。d 用户操作方便。3 设...
c语言课程设计报告数独
c语言课程设计报告。设计名称 c语言课程设计 专业班级。姓名。学号。指导教师。实习时间。成绩。目录。一 设计目的 2 二 设计内容 3 三 详细设计说明 4 四 软件使用说明 6 五 设计总结 课程设计心得与体会 8 六 附录1 参考文献 9 七 附录2 部分程序清单 带有较详细的注释 10 八 教...
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...