C语言多文件编程基本格式
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.taodudu.cc/news/show-955442.html
相关文章:
- C语言*运算符和运算符
- 7个C语言小程序让你快速入门程序世界
- C语言程序判断计算机的CPU大小端
- C语言 | 为什么写这三行代码
- 深入浅出讲解C语言#define宏定义应用及使用方法
- 单片机C语言编程:.H文件与.C文件的关系!
- C语言中的“悬空指针”和“野指针”是什么意思?
- C语言的位域
- C语言指针这些使用技巧值得收藏!
- C语言预处理命令分类和工作原理
- c语言也能用模板方法模式?
- 【C语言笔记】指定初始化器
- C 语言精髓之变参函数
- 从原理到方法,一文讲清如何应对C语言内存泄露!
- 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
- C语言中#if,#if defined ,#ifdef,extern的用法描述
- 为什么C语言函数不能返回数组,却可以返回结构体
- C语言printf()函数具体解释和安全隐患
- 【C语言】你可能对 sizeof() 有点误解。。。
- C语言中quot;##quot;的独特用法
- C语言中几个容易踩的“坑”!
- C语言,去你的策略模式!
- 纠缠不清的C语言位域(位段)详解
- 基于C语言的函数指针应用-消息命令处理框架
- C语言“悬空指针”和“野指针”究竟是什么意思?
- C语言编写简单朗读发音小工具!!
- C语言 | 直接插入排序
- C语言必学的12个排序算法:基数排序
- C语言标识符、关键字和注释
- 巧解C语言运算符的优先级和结合性
C语言多文件编程基本格式相关推荐
- 【C语言】C语言基础重点08——C语言多文件编程分析
原文链接 C语言多文件编程分析 一.C语言的可执行文件的构建机制 从人编写的.c文件(源文件)到CPU能看懂的可执行文件,需要经过很多步,不能直接生成. 预处理:.c文件经过预处理,决定了哪些编译,哪 ...
- 手机c语言多文件编程,C语言多文件编程
今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...
- 【C++】从extern关键字开始谈C语言多文件编程
extern 关键字 我们知道,C语言代码是由上到下依次执行的,不管是变量还是函数,原则上都要先定义再使用,否则就会报错.但在实际开发中,经常会在函数或变量定义之前就使用它们,这个时候就需要提前声明. ...
- C语言模块化开发,深入多文件编程
目录 文章目录 目录 多文件编程 项目分割 避免命名冲突 项目生成的过程 预处理 编译 汇编 链接 语言发展的过程 机器语言 汇编语言 C语言 高级语言 编译的本质 目标文件里藏着什么 可执行文件 链 ...
- Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...
- 聊天室(C语言)- 基于文件编程、网络通信、数据库实现
聊天室(C语言) 源码连接 https://download.csdn.net/download/G1842965496/83970608 项目面试问题 C/C++/嵌入式-面试题汇总 --基于文件编 ...
- c语言const常量用法,C++ const常量在多文件编程中的3种用法
<C++多文件编程是什么>一节提到,多文件编程中代码的划分原则是:将变量.函数或者类的声明部分存放在 .h 文件,对应的实现部分放在 .cpp 文件中.值得一提得是,此规律适用于大部分场景 ...
- 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...
C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...
- C语言 06.函数和多文件编程
1.函数的作用: 提高代码的复用率 提高程序模块化组织性. 2.函数分类: 系统库函数: 标准C库. libc (1). 引入头文件 - 声明函数 (2). 根据函数原型调用. [随机数]: 1. 播 ...
最新文章
- 基于MSM 的tomcat session 共享
- SpringMVC中@RequestHeader
- WPF自定义控件(1)——仪表盘设计[1]
- 转-eclipse管理多个workspace
- 退出窗口[置顶] 退出Activity的方法
- 数据挖掘之关联分析一(基本概念)
- Powered Addition CodeForces - 1339C(位运算)
- 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
- springboot 后台模板_spring boot实战
- iis php5.2 cgi,在PHP 5.2.6 / IIS CGI中清空$_POST数组
- Hexo NexT主题添加点击爱心效果
- 华为路由器配置静态路由默认路由
- HBuilder X运行到微信小程序报错 [微信小程序开发者工具] Error: read EBADF
- 模拟卷Leetcode【普通】015. 三数之和
- 五子棋2.0(Java)
- 如何通过企业微信便捷访问华为云、阿里云?
- MCS-51 单片机的结构和工作原理
- 基于Spark的电影推荐系统(推荐系统~5)
- windows下的makefile教程
- https的相关知识
热门文章
- NoSql数据库:Cassandra,Mongo,Redis数据库比较
- JSR 365更新:深入CDI 2.0
- 如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha
- 使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试
- Spring Boot和Swagger UI
- 在Java中调用祖父母方法:您不能
- 使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证
- 全部关于测试–第1部分
- Servlet异常和错误处理示例教程
- 使用AspectJ审计Spring MVC Webapp。 第2部分