1、背景:
用一个丢骰子的简单案例熟悉了C语言多文件编程该咋写
2、格式
(1)主函数文件main.c
//文件头part1:所有要使用的函数#include ;#include ;#include ;//文件头part2:放所有函数原型的文件#inlucde "main.h"//文件头part3:各个要使用的子文件#include "funciton1.c"#inlucde "function2.c"int main(){function1(); //在function1.cfunction2(); //在function2.creturn 0;}
(2)乘放所有函数原型、全局变量的文件main.h
void function1(void);void function2(void);/*
这里有2个知识点或者说优秀编程规范
1、对全局数据使用const,防止暴露数据
2、头文件方案可以偷懒而不使用“一个文件中定义式声明,其他文件使用extern引用式声明”对方案,但是必须加static。不然file1.c和file2.c都包含main.h,那么这2个文件就都有一个相同的定义式声明,大多数编译器不允许这么做
*/static const int a = 10;static const double b = 20'
(3) 放各个函数的子文件(示例:function1.c)
void function1(void){具体函数逻辑}
3、案例:丢骰子
(1)主函数
#include #include #include "main.h"#include "random.c"#include "roll.c"/*
1、要求用户输入骰子数、骰子的面数;输出掷出的结果;
2、随机数的生成种子基于time()生成真随机数
3、支持循环输入
4、能处理以下错误情况:
(1)side小于1
(2)输入类型不匹配
(3)遇到EOF
*//*伪算法:
int main(){输入函数:骰子数(报错处理)、面数(报错处理)循环(当不报错的时候){丢骰子函数(骰子数、骰子的面数);输入函数;}
}丢骰子函数(骰子数、骰子的面数){while(<骰子数){随机数函数(骰子的面数)}数组存储(所有随机数结果);对数组求和;输出结果(骰子数、骰子的面数、数组求和结果)
}随机数函数(骰子的面数){种子 = (时间函数返回的某个数)输出结果 = 种子 % 骰子的面数
}
*/int main(){int rolls,sides,result;//输入函数部分printf("please input the num of rolls you wanna use:");if(scanf("%d",&rolls) != 1){printf("you should have input one num.\n");};if(rolls = 1){printf("you use %d rolls with %d sides, and your result is %d\n",rolls,sides,roll(rolls,sides));printf("Another??? please input the num of rolls you wanna use:");if(scanf("%d",&rolls) != 1){printf("you should have input one num.\n");};if(rolls < 1){printf("you should use 1 roll at least\n");}printf("How many sides a roll have? ");if(scanf("%d",&sides) != 1){printf("you should have input one num.\n");};if(sides < 1){printf("you should use 1 sides at least\n");} }//-test输入函数return 0;}
(2)main.h
//这里存放丢骰子函数的函数声明//丢骰子函数int roll(int rolls,int sides);//随机数函数int my_random(int sides);
(3)丢骰子函数
int roll(int rolls,int sides){int result = 0;int list[rolls];for(int i = 0; i < rolls;i++){list[i] = my_random(sides);}for(int i = 0 ;i < rolls;i++){result += list[i];}return result;}/*
丢骰子函数(骰子数、骰子的面数){while(<骰子数){随机数函数(骰子的面数)}数组存储(所有随机数结果);对数组求和;输出结果(骰子数、骰子的面数、数组求和结果)
}
*/
(4)随机数函数
/*
随机数函数(骰子的面数){种子 = (时间函数返回的某个数)输出结果 = 种子 % 骰子的面数
}
*/int my_random(int sides){int seed = (unsigned int)time(0);seed = seed % sides + 1;return seed;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339039.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
微软project服务器搭建,Project Professional 版本(Project Server 2010 设置)
Project Professional 版本利用“Project Professional 版本”,您可以指定将能够连接到 Project Server 2010 环境的 Project Professional 客户端的版本(内部版本号)。可通过此设置确保与服务器的 Project Professional 客户端连接都处于所需的基本级别。例如&…
众辰nz200变频器使用说明书_ABB变频器
ABB变频器,广州丰电自动化设备有限公司是一家专业从事工业计算机、工业自动化产品、电线电缆、仪器仪表销售、安装、维修;变频控制系统、变频恒压供水系统、变频节能系统的设计及安装,提供自动化工程技术服务及成套解决方案于一体的科技企业。…
pb 执行存储过程带参数_PB级海量数据服务平台架构设计实践
基于PB级海量数据实现数据服务平台,需要从各个不同的角度去权衡,主要包括实践背景、技术选型、架构设计,我们基于这三个方面进行了架构实践,下面分别从这三个方面进行详细分析讨论:实践背景该数据服务平台架构设计之初…
4g的服务器mysql配置文件,服务器物理内存16G mysql数据库my.cnf配置及参数说明
搜索热词《服务器物理内存16G MysqL数据库my.cnf配置及参数说明》要点:本文介绍了服务器物理内存16G MysqL数据库my.cnf配置及参数说明,希望对您有用。如果有疑问,可以联系我们。导读:服务器物理内存16G MysqL数据库my.cnf配置及参…
C语言*运算符和运算符
取址运算符&用来取得其操作数的地址。如果操作数 x 的类型为 T,则表达式 &x 的类型是 T 类型指针(指向 T 的指针)。取址运算符的操作数必须是在内存中可寻址到的地址。换句话说,该运算符只能用于函数或对象(例…
mockito 单元测试_使用FizzBuzz和Mockito进行单元测试
mockito 单元测试我有时使用FizzBuzz向新手演示单元测试的基础。 尽管FizzBuzz确实是一个简单的问题,但它也可以用于演示更高级的单元测试技术,例如模拟 。 FizzBuzz Kata: “ 编写一个程序,打印一个从1到100的数字…
css 竖行进度图_前端学习--汇集了大量 CSS 的使用和学习的示例代码
CSS-Inspiration这里可以让你寻找到使用或者是学习 CSS 的灵感,以分类的形式,展示不同 CSS 属性或者不同的课题使用 CSS 来解决的各种方法。目前已有上百种的CSS 实现示例,代码可以拿 来即用LayoutCSS实现瀑布流布局(display: flex)CSS实现瀑…
socket io 不使用redis_Redis这么快,线程模型竟然是单线程
Redis的线程模型记住一句话:单进程单线程,IO多路复用。单线程还这么快?是的,你没有看错,Redis是单线程处理的。这是因为Redis的设计者认为Redis是基于内存的操作,瓶颈在内存或者网络带宽而不是CPU。这样&am…
java 统一处理时区_Java时区处理初学者指南
java 统一处理时区基本时间观念 大多数Web应用程序必须支持不同的时区,而正确处理时区绝非易事。 更糟糕的是,您必须确保各种编程语言(例如,前端JavaScript,中间件中的Java和作为数据存储库的MongoDB)之间的…
服务器系统装内存条,hp服务器怎么安装内存条 hp服务器内存推荐【图文】
服务器虚拟化增加了在每台惠普服务器上运行工作负载的数量,但是越来越多的计算需求则要求IT人员配备更好的HP服务器配件。因此需要对于HP服务器内存市场行情有一定的了解,而选择合适的HP服务器内存却是一件非常难的事情,今天就跟小编一起来看…
7个C语言小程序让你快速入门程序世界
1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。程序源代码:#include#…
去重 属性_面试中常问的List去重问题,你都答对了吗?
面试中经常被问到的list如何去重,用来考察你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固。我们大家都知道,set集合的特点就是没有重复的元素。如果集合中的数据类型是基本数据类型,可以直接将lis…
python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备
现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑。在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务。Python可以在不同的网络层上与网络设备进行交互。首先,Python可以通过…
cxf添加拦截器_在CXF API和拦截器中添加Gzip压缩
cxf添加拦截器如今,由于我们在响应中发送大量数据,因此必须对API响应执行Gziping。 它节省了网络带宽和交付时间,当然还节省了Internet上的空间。 CXF提供了以多种方式使用Gzip压缩的选项。 蓝图 注解 蓝图: <bean id"…
3月14日dnf服务器维护,DNF体验服3月14日更新介绍 肝深渊送爆肝王称号!
DNF体验服在3月14日更新全新活动,本次活动奖励总体来看还是非常不错的。例如账绑称号、异界气息清除书、锻造炉等超值奖励,下面让我们来看具体的更新内容吧。PS:本次体验服更新内容将会在3月22日更新至正式服中去。艾肯副本相关1、艾肯副本模…
C语言程序判断计算机的CPU大小端
如何判断一台计算机的CPU是大端还是小字端对齐呢?那么首先得了解何为大端,何为小端,明确一下概念。所谓大端模式,是指字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式:与大端存储…
三角形周长最短问题_一道三角形周长最小值问题
昨天早上,在朋友圈里看到有朋友发了一道求三角形周长最小值的问题,扫了一眼,觉得这条题目形容臃肿,颜值不高,估计没啥意思,便未作深究。晚上,又看到有人在朋友圈中发这条题目。同一条题目反复出…
java 性能调优_Java性能调优调查结果(第二部分)
java 性能调优这是系列文章的第二篇,我们将分析2014年10月进行的性能调整调查的结果。如果您尚未阅读第一部分,我们建议从此处开始 。 第二部分将重点监视Java应用程序的性能问题。 特别是,我们尝试回答以下问题: 人们如何发现性…
西门子伺服电机选型手册_记,新入行维修电工大胆拆解伺服电机和编码器的经历...
作为一名底层维修电工,最怕碰到维修外置编码器的伺服电机,我们单位用的是西门子S120的驱动方案,绝大多数使用的都是西门子配套电机,组态简单,也不用我们维修,有问题送到西门子授权维修点维修。只有个别的使…
变频器服务器电路板维修,变频器线路板常见维修方法
(1)驱动电路损坏的原因及检查造成驱动损坏的原因有各种各样的,一般来说出现的问题也无非是U,V,W三相无输出,或者输出不平衡,再或者输出平衡但是在低频的时候抖动,还有启动报警等等。当一台变频器大电容后的…