C语言课程设计组数游戏
《C语言课程设计组数游戏》由会员分享,可在线阅读,更多相关《C语言课程设计组数游戏(7页珍藏版)》请在装配图网上搜索。
1、键入文档标题·C语言课程设计一、 题目要求设计n个正整数(n<=20),将它们连成一排,组成一个最大的多位数。程序输入:n,程序输出:n个数连接成的多位数。二、设计思路分析 比如输入这样五个数123 ,2 ,33, 1006, 12 先找出最大的数字的位数为4位数,再将所有的数字后面添加0变成4位数:1230 2000 3300 1006 1200然后进行排序:3300 2000 1230 1200 1006这样后再奖后面添加的0去掉的序列就是最大的数字:332123121006 建立数组结构体,结构体成员包括:数字、位数,根据题目要求,要求对数字进行输入、排序等操作;在程序中
2、需要输入打印数字的信息,应提供显示、打印、排序输出等操作;另外还应提供键盘式输入数字。三、总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:组数游戏系统设计添0操作排序模块去0操作数据输出位数计算数据输入图1.3 系统功能模块图四、详细设计流程图:开始输入数字个数(<20)Y是否大于20输入数字从大到小排序确定最大位数及每个数位数使每个数位数相同并从大到小排序去掉为数字添加的0并按现有顺序输出所有数字结束001、 结构体结构体定义输入数组数字的个数,位数。 程序为: struct numberint num; /数字 int count; /位数;2、 主函数int main(
3、)printf(" *n");printf(" Welcome To 组数游戏n");printf(" *nn"); loop:printf("请输入要输入的数字个数(不多于20):");int b=1,i,j,n,d,e;struct number c;struct number a20;scanf("%d",&e); if(e>20) printf("nYou can't put in so much numbers!nn"); goto loop;
4、 printf("n请输入 %d 个数字(以空格分开):",e);for(i=0;i<e;i+)scanf("%d",&ai.num); /输入数据for(i=0;i<e-1;i+)for(j=0;j<e-1-i;j+)if(aj.num<aj+1.num)d=aj.num;aj.num=aj+1.num;aj+1.num=d; /从大到小排序 if(a0.num=0)n=1;elsefor(n=0;a0.num>=b;n+)b=b*10; /确定最大位数a0.count=n;for(b=1,i=1;i<e;i
5、+)if(ai.num=0)ai.count=1;elsefor(b=1,ai.count=0;ai.num>=b;ai.count+)b=b*10; /确定每个数位数 for(i=1;i<e;i+)ai.num=ai.num*(pow(10,(n-ai.count); /加0for(i=0;i<e-1;i+)for(j=0;j<e-1-i;j+)if(aj.num<aj+1.num)c=aj;aj=aj+1;aj+1=c; /排序 for(i=0;i<e;i+)ai.num=ai.num/pow(10,(n-ai.count); /去0 for(i=0;i
6、<e;i+)printf("%d",ai.num);printf("n");return 0; 3、上机操作主界面及输入:计算并输出结果: 4、源代码#include <stdio.h>#include <string.h>#include <math.h>#include <ctype.h> struct numberint num; int count;int main()printf(" *n");printf(" Welcome To 组数游戏n");p
7、rintf(" *nn"); loop:printf("请输入要输入的数字个数(不多于20):");int b=1,i,j,n,d,e;struct number c;struct number a20;scanf("%d",&e); if(e>20) printf("nYou can't put in so much numbers!nn"); goto loop; printf("n请输入 %d 个数字(以空格分开):",e);for(i=0;i<e;i+)sca
8、nf("%d",&ai.num); /输入数据for(i=0;i<e-1;i+)for(j=0;j<e-1-i;j+)if(aj.num<aj+1.num)d=aj.num;aj.num=aj+1.num;aj+1.num=d; /从大到小排序 if(a0.num=0)n=1;elsefor(n=0;a0.num>=b;n+)b=b*10; /确定最大位数a0.count=n;for(b=1,i=1;i<e;i+)if(ai.num=0)ai.count=1;elsefor(b=1,ai.count=0;ai.num>=b;ai.
9、count+)b=b*10; /确定每个数位数 for(i=1;i<e;i+)ai.num=ai.num*(pow(10,(n-ai.count); /加0for(i=0;i<e-1;i+)for(j=0;j<e-1-i;j+)if(aj.num<aj+1.num)c=aj;aj=aj+1;aj+1=c; /排序 for(i=0;i<e;i+)ai.num=ai.num/pow(10,(n-ai.count); /去0 printf("n排列后最大的数字为:");for(i=0;i<e;i+)printf("%d",ai.num);printf("n");return 0; 7
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。