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语言运算符的优先级和结合性

  • 淘嘟嘟介绍
  • 商务合作
  • 免责声明

CopyRight © 淘嘟嘟版权所有

C语言多文件编程基本格式相关推荐

  1. 【C语言】C语言基础重点08——C语言多文件编程分析

    原文链接 C语言多文件编程分析 一.C语言的可执行文件的构建机制 从人编写的.c文件(源文件)到CPU能看懂的可执行文件,需要经过很多步,不能直接生成. 预处理:.c文件经过预处理,决定了哪些编译,哪 ...

  2. 手机c语言多文件编程,C语言多文件编程

    今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...

  3. 【C++】从extern关键字开始谈C语言多文件编程

    extern 关键字 我们知道,C语言代码是由上到下依次执行的,不管是变量还是函数,原则上都要先定义再使用,否则就会报错.但在实际开发中,经常会在函数或变量定义之前就使用它们,这个时候就需要提前声明. ...

  4. C语言模块化开发,深入多文件编程

    目录 文章目录 目录 多文件编程 项目分割 避免命名冲突 项目生成的过程 预处理 编译 汇编 链接 语言发展的过程 机器语言 汇编语言 C语言 高级语言 编译的本质 目标文件里藏着什么 可执行文件 链 ...

  5. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  6. 聊天室(C语言)- 基于文件编程、网络通信、数据库实现

    聊天室(C语言) 源码连接 https://download.csdn.net/download/G1842965496/83970608 项目面试问题 C/C++/嵌入式-面试题汇总 --基于文件编 ...

  7. c语言const常量用法,C++ const常量在多文件编程中的3种用法

    <C++多文件编程是什么>一节提到,多文件编程中代码的划分原则是:将变量.函数或者类的声明部分存放在 .h 文件,对应的实现部分放在 .cpp 文件中.值得一提得是,此规律适用于大部分场景 ...

  8. 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...

    C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...

  9. C语言 06.函数和多文件编程

    1.函数的作用: 提高代码的复用率 提高程序模块化组织性. 2.函数分类: 系统库函数: 标准C库. libc (1). 引入头文件 - 声明函数 (2). 根据函数原型调用. [随机数]: 1. 播 ...

最新文章

  1. 基于MSM 的tomcat session 共享
  2. SpringMVC中@RequestHeader
  3. WPF自定义控件(1)——仪表盘设计[1]
  4. 转-eclipse管理多个workspace
  5. 退出窗口[置顶] 退出Activity的方法
  6. 数据挖掘之关联分析一(基本概念)
  7. Powered Addition CodeForces - 1339C(位运算)
  8. 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
  9. springboot 后台模板_spring boot实战
  10. iis php5.2 cgi,在PHP 5.2.6 / IIS CGI中清空$_POST数组
  11. Hexo NexT主题添加点击爱心效果
  12. 华为路由器配置静态路由默认路由
  13. HBuilder X运行到微信小程序报错 [微信小程序开发者工具] Error: read EBADF
  14. 模拟卷Leetcode【普通】015. 三数之和
  15. 五子棋2.0(Java)
  16. 如何通过企业微信便捷访问华为云、阿里云?
  17. MCS-51 单片机的结构和工作原理
  18. 基于Spark的电影推荐系统(推荐系统~5)
  19. windows下的makefile教程
  20. https的相关知识

热门文章

  1. NoSql数据库:Cassandra,Mongo,Redis数据库比较
  2. JSR 365更新:深入CDI 2.0
  3. 如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha
  4. 使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试
  5. Spring Boot和Swagger UI
  6. 在Java中调用祖父母方法:您不能
  7. 使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证
  8. 全部关于测试–第1部分
  9. Servlet异常和错误处理示例教程
  10. 使用AspectJ审计Spring MVC Webapp。 第2部分