c语言sleep_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美
前言
1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪
2.是个简易跨平台的,主要是C语言
3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度
4.比较简单,可以给学生作为C语言结课作业吧.
正文
1.1 先简单处理跨平台
本文写作动机,还是感谢一下大学的启蒙老师,让我知道了有条路叫做程序员,可以作为工作生存下去.那就上代码了.
首先代码定位 是 面向 简单跨平台,至少让 gcc 和 vs 能够跑起来.
其实跨平台都是嚼頭, 说白了就是一些丑陋的宏. 真希望所有系统合二为一,采用统一的标准api 设计,但这是不可能的,就相当于很早之前的电视制式一样.
那么我们先看 围绕跨平台的宏
#include #include #include #include /** 时间 : 2015年12月26日11:43:22
* 描述 : 应该算过节吧,今天,写了个雪花特效 代码,
* *//** 清除屏幕的shell 命令/控制台命令,还有一些依赖平台的实现
* 如果定义了 __GNUC__ 就假定是 使用gcc 编译器,为Linux平台
* 否则 认为是 Window 平台*/#ifdefined(__GNUC__)//下面是依赖 Linux 实现#include #definesleep_ms(m) usleep(m *1000)//向上移动光标函数 Linuxstaticvoid__curup(int height)
{inti = -1;while(++iprintf("033[1A");//先回到上一行 }#else// 创建等待函数 1s 60 帧 相当于 16.7ms => 1帧, 我们取16ms// 咱么的这屏幕 推荐 1s 25帧吧 40ms// 这里创建等待函数 以毫秒为单位 , 需要依赖操作系统实现#include #definesleep_ms(m) Sleep(m)//向上移动光标staticvoid__curup(int height)
{COORD cr = {0,0};// GetStdHandle(STD_OUTPUT_HANDLE) 获取屏幕对象, 设置光标 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cr);
}#endif/*__GNUC__ 跨平台的代码都很丑陋 */
首先是 sleep_ms 这个宏, 传入一个毫秒数,让操作系统等待.
对于__curup 实现的不好. 功能是 让 控制台当前光标移动到 上面的 height 位置,对于 window直接移动到第一行(0,0)位置.
上面一共用了 5个头文件 还是容易的代码. string.h 主要用的是 memset 函数, 让一段内存初始化,用0填充.
对于time.h 主要是为了 初始化时间种子,方便每次运行都不一样.
// 初始化随机数种子,改变雪花轨迹srand((unsigned)time(NULL));
1.2 再说主业务代码
这里程序员运行的主业务,先说一说这里用的数据结构 如下
// 定义初始屏幕的宽高像素宏#define_INT_WIDTH (100)#define_INT_HEIGHT (50)// 屏幕刷新帧的速率#define_INT_FRATE (40)// 雪花飘落的速率,相对于 屏幕刷新帧 的倍数#define_INT_VSNOW (10)/** 错误处理宏,msg必须是""括起来的字符串常量
* __FILE__ : 文件全路径
* __func__ : 函数名
* __LINE__ : 行数行
* __VA_ARGS__ : 可变参数宏,
* ##表示直接连接, 例如 a##b <=> ab*/#definecerr(msg,...) fprintf(stderr, "[%s:%s:%d]"msg"n",__FILE__,__func__,__LINE__,##__VA_ARGS__);/** 屏幕结构体, 具有 宽高
* frate : 绘制一帧的周期, 单位是 毫秒
* width : 屏幕的宽,基于窗口的左上角(0,0)
* height : 屏幕的高
* pix : 用一维模拟二维 主要结构如下
* 0 0 0 1 0 0 1 0 1 0
* 0 1 0 1 0 1 0 1 2 0
* . . .
* => 0表示没像素, 1表示1个像素,2表示2个像素....*/struct screen {intfrate;// 也可以用 unsigned 结构int width;int height;char*pix;
};
创建了一个绘图对象 struct screen 这里 构建这个结构体的时候用了下面一个技巧
//后面是 为 scr->pix 分配的内存 width*heightscr =malloc(sizeof(structscreen) +sizeof(char)*width*height);
一次分配两个内存空间.下面是主要实现的api 对象
/** 创建一个 屏幕结构指针 返回
*
* int frate : 绘制一帧的周期
* int width : 屏幕宽度
* int height : 屏幕高度
* return : 指向屏幕结构的指针
* */structscreen* screen_create(intfrate,intwidth,int height);/** 销毁一个 屏幕结构指针, 并为其置空
* struct screen** : 指向 屏幕结构指针的指针, 二级销毁一级的
* */voidscreen_destory(structscreen** pscr);/**
* 屏幕绘制函数,主要生成一个雪花效果
*
* struct screen* : 屏幕数据
* return : 0表示可以绘制了,1表示图案不变*/intscreen_draw_snow(structscreen* scr);/**
* 屏幕绘制动画效果, 绘制雪花动画
*
* struct screen* : 屏幕结构指针*/voidscreen_flash_snow(structscreen* scr);
创建销毁, 绘制一个雪花界面, 绘制雪花动画效果的api. 其实都很相似,用opengl 库, 主要让我们省略了需要单独和操作系统显示层打交道工作.
这里介绍一下,个人 一个 简单避免 野指针的 的方法, 具体看下面实现
/** 销毁一个 屏幕结构指针, 并为其置空
* struct screen** : 指向 屏幕结构指针的指针, 二级销毁一级的
* */voidscreen_destory(structscreen** pscr)
{if(NULL == pscr || NULL == *pscr)return;free(*pscr);// 避免野指针*pscr = NULL;
}
在执行之后置空,因为C程序员对NULL一定要敏感,形成条件反射. 和大家开个玩笑 ,
请问 :
C 语言中, NULL , 0,'0',"0",false有什么异同 ?
欢迎同行,在招聘的时候问问,应聘初级开发工作者. 为什么C需要扣的那么细. 因为其它语言.你不明白是什么,
你可以用的很好. 但是C你写的代码,如果不知道会有怎样的结果,那么 线上就一大片服务器直接崩掉.而且还很难找出
问题所在. 因为C很简单,越简单就是越复杂.就越需要专业的维护人员.导致它成了'玩具'.
最后看一下 主业务
// 主函数,主业务在此运行intmain(intargc,char*argv[])
{structscreen* scr = NULL;//创建一个屏幕对象scr = screen_create(_INT_FRATE, _INT_WIDTH, _INT_HEIGHT);if(NULL == scr)exit(EXIT_FAILURE);//绘制雪花动画 screen_flash_snow(scr);//销毁这个屏幕对象screen_destory(&scr);return0;
}
还是非常容易看懂的, 创建一个屏幕对象,绘制雪花效果.销毁屏幕对象.
1.3 说一写 接口的实现细节
先看几个简单的api 实现,创建和销魂代码如下,很直白.
/** 创建一个 屏幕结构指针 返回
*
* int frate : 绘制一帧的周期
* int width : 屏幕宽度
* int height : 屏幕高度
* return : 指向屏幕结构的指针
* */structscreen* screen_create(intfrate,intwidth,int height)
{structscreen *scr = NULL;if(frate<0|| width <=0|| height <=0) {cerr("[WARNING]check is frate<0 || width<=0 || height<=0 err!");return NULL;}//后面是 为 scr->pix 分配的内存 width*heightscr =malloc(sizeof(structscreen) +sizeof(char)*width*height);if(NULL == scr) {cerr("[FATALG]Out of memory!");return NULL;}scr->frate = frate;scr->width = width;scr->height = height;//减少malloc次数,malloc消耗很大,内存泄露呀,内存碎片呀scr->pix = ((char*)scr) +sizeof(struct screen);return scr;
}/** 销毁一个 屏幕结构指针, 并为其置空
* struct screen** : 指向 屏幕结构指针的指针, 二级销毁一级的
* */voidscreen_destory(structscreen** pscr)
{if(NULL == pscr || NULL == *pscr)return;free(*pscr);// 避免野指针*pscr = NULL;
}
后面说一下 如何 绘制 屏幕中雪花
主要算法 是
a.有个屏幕 w x h
b.屏幕从上面第一行 出雪花 , 出雪花 位置是随机的[0,w], 但是有个距离,这个距离内只有一个雪花
c.下一行 雪花 依赖上一行雪花的生成, 每个雪花在可以飘动的时候, 只能 在[-1,1] 范围内
d.实现动画 效果 就是 每画一帧就等待 一段时间
下面看具体一点的 a
//创建一个屏幕对象scr = screen_create(_INT_FRATE, _INT_WIDTH, _INT_HEIGHT);
scr对象就是我们的创建屏幕. _INT_WIDTH 和 _INT_HEIGHT 就是屏幕大小. 对于_INT_FRATE 表示绘制一帧时间.
b实现 代码如下:
//构建开头 的雪花,下面宏表示每 _INT_SHEAD 个步长,一个雪花,需要是2的幂//static 可以理解为 private, 宏,位操作代码多了确实难读#define_INT_SHEAD (1<<2)staticvoid__snow_head(char* snow,int len)
{intr =0;//数据需要清空memset(snow,0, len);for (;;) {//取余一个技巧 2^3 - 1 = 7 => 111 , 并就是取余数intt = rand() & (_INT_SHEAD -1);if(r + t >= len)break;snow[r + t] =1;r += _INT_SHEAD;}
}#undef_INT_SHEAD
技巧如上,可以看说明. 这里 科普一下, 对于 for(;;) {} 和 while(true) {} 异同.
for(;;) {} 和 while(true) {} 这两段代码转成汇编是一样的, 不一样 的是 强加的意愿. 第一个 希望 跳过 检测步骤 速度更快一点.
再扩展一点.
//另一种 循环语句, goto 还是 很强大实用的__for_loop:if(false)goto __for_break;
goto __for_loop;
__for_break:
可以再扩展深一点, 还有一种 api 比 这个goto 还NB. 有机会分享. 特别强大, 是异常处理程序本质.
对于c.
//通过 上一个 scr->pix[scr->width*(idx-1)] => scr->pix[scr->width*idx]//下面的宏 规定 雪花左右摇摆 0 向左一个像素, 1 表示 不变, 2表示向右一个像素#define_INT_SWING (3)staticvoid__snow_next(structscreen* scr,int idx)
{intwidth = scr->width;char* psnow = scr->pix + width*(idx -1);char* snow = psnow + width;inti, j, t;// i索引, j保存下一个瞬间雪花的位置,t 临时补得,解决雪花重叠问题//为当前行重置memset(snow,0, width);//通过上一次雪花位置 计算下一次雪花位置for(i =0; ifor(t = psnow[i]; t>0; --t) {// 雪花可以重叠// rand()%_INT_SWING - 1 表示 雪花 横轴的偏移量,相对上一次位置j = i + rand() % _INT_SWING -1;j = j<0? width -1: j >= width ?0: j;// j如果越界了,左边越界让它到右边,右边越界到左边++snow[j];}}
}
下一行雪花 依赖 上一行雪花, 这里 有点像插入排序.
整体的绘制代码 如下
/**
* 屏幕绘制函数,主要生成一个雪花效果
*
* struct screen* : 屏幕数据
* return : 0表示可以绘制了,1表示图案不变*/intscreen_draw_snow(structscreen* scr)
{// 静态变量,默认初始化为0,每次都共用staticint__speed =0;int idx;if(++__speed != _INT_VSNOW)return1;//下面 就是 到了雪花飘落的时刻了 既 __speed == _INT_VSNOW__speed =0;//这里重新构建雪花界面,先构建头部,再从尾部开始构建for(idx = scr->height -1; idx >0; --idx)__snow_next(scr, idx);//构建头部__snow_head(scr->pix, scr->width);return0;
}
绘制了一个屏幕对象的雪花. __speed 记录 绘制次数, _INT_VSNOW 控制绘制速率
d 的实现代码 如下
首先实现一个 销毁屏幕代码和 绘制代码
//buf 保存scr 中pix 数据,构建后为 (width+1)*height, 后面宏是雪花图案#define_CHAR_SNOW '*'staticvoid__flash_snow_buffer(structscreen* scr,char* buf)
{int i, j, rt;intheight = scr->height, width = scr->width;intfrate = scr->frate;//刷新的帧频率 //每次都等一下for (;;sleep_ms(frate)) {//开始绘制屏幕rt = screen_draw_snow(scr);if (rt)continue;for(i =0;ichar* snow = scr->pix + i*width;for(j =0; jbuf[rt++] = snow[j] ? _CHAR_SNOW :'';buf[rt++] ='n';}buf[rt -1] ='0';//正式绘制到屏幕上 puts(buf);//清空老屏幕,屏幕光标回到最上面 __curup(height);}
}#undef_CHAR_SNOW
这里 sleep_ms(frate); 是等待时间,否则太快, 人眼看不见.
绘制原理是 让屏幕转成控制台能够认识的字符. 塞入到buf 中.
__curup(height); 让绘制光标回到开头.
后面还有一段 代码实现
/**
* 屏幕绘制动画效果, 绘制雪花动画
*
* struct screen* : 屏幕结构指针*/voidscreen_flash_snow(structscreen* scr)
{char* buf = NULL;// 初始化随机数种子,改变雪花轨迹 srand((unsigned)time(NULL));buf =malloc(sizeof(char)*(scr->width +1)*scr->height);if(NULL == buf) {cerr("[FATAL]Out of memory!");exit(EXIT_FAILURE);}__flash_snow_buffer(scr, buf);//1.这里理论上不会执行到这,没加控制器. 2.对于buf=NULL,这种代码 可以省掉,看编程习惯free(buf);buf = NULL;
}
这种双函数实现一个功能技巧用的也很多. 例如写快速排序代码, 就是这样.
到这里 我们 设计和实现都完成了.
2.代码效果展示
2.1 window 上展示
使用VS新建一个控制台项目,F5就可以了效果如下
是动态的.
2.2 对于Linux
直接使用
gcc -g -Wall snow.c -o snow.out./snow.out
运行效果如下
到这里, C语言实现雪花效果就如上了.
2.3 完整的代码展示. 感谢 有你,一路同行.
#include #include #include #include /** 时间 : 2015年12月26日11:43:22
* 描述 : 应该算过节吧,今天,写了个雪花特效 代码,
* 送给 大学启蒙 芦老师
* 学生王志 祝福上
* *//** 清除屏幕的shell 命令/控制台命令,还有一些依赖平台的实现
* 如果定义了 __GNUC__ 就假定是 使用gcc 编译器,为Linux平台
* 否则 认为是 Window 平台*/#ifdefined(__GNUC__)//下面是依赖 Linux 实现#include #definesleep_ms(m) usleep(m *1000)//向上移动光标函数 Linuxstaticvoid__curup(int height)
{inti = -1;while(++iprintf("033[1A");//先回到上一行 }#else// 创建等待函数 1s 60 帧 相当于 16.7ms => 1帧, 我们取16ms// 咱么的这屏幕 推荐 1s 25帧吧 40ms// 这里创建等待函数 以毫秒为单位 , 需要依赖操作系统实现#include #definesleep_ms(m) Sleep(m)//向上移动光标staticvoid__curup(int height)
{COORD cr = {0,0};// GetStdHandle(STD_OUTPUT_HANDLE) 获取屏幕对象, 设置光标 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cr);
}#endif/*__GNUC__ 跨平台的代码都很丑陋 */// 定义初始屏幕的宽高像素宏#define_INT_WIDTH (100)#define_INT_HEIGHT (50)// 屏幕刷新帧的速率#define_INT_FRATE (40)// 雪花飘落的速率,相对于 屏幕刷新帧 的倍数#define_INT_VSNOW (10)/** 错误处理宏,msg必须是""括起来的字符串常量
* __FILE__ : 文件全路径
* __func__ : 函数名
* __LINE__ : 行数行
* __VA_ARGS__ : 可变参数宏,
* ##表示直接连接, 例如 a##b <=> ab*/#definecerr(msg,...) fprintf(stderr, "[%s:%s:%d]"msg"n",__FILE__,__func__,__LINE__,##__VA_ARGS__);/** 屏幕结构体, 具有 宽高
* frate : 绘制一帧的周期, 单位是 毫秒
* width : 屏幕的宽,基于窗口的左上角(0,0)
* height : 屏幕的高
* pix : 用一维模拟二维 主要结构如下
* 0 0 0 1 0 0 1 0 1 0
* 0 1 0 1 0 1 0 1 2 0
* . . .
* => 0表示没像素, 1表示1个像素,2表示2个像素....*/struct screen {intfrate;// 也可以用 unsigned 结构int width;int height;char*pix;
};/** 创建一个 屏幕结构指针 返回
*
* int frate : 绘制一帧的周期
* int width : 屏幕宽度
* int height : 屏幕高度
* return : 指向屏幕结构的指针
* */structscreen* screen_create(intfrate,intwidth,int height);/** 销毁一个 屏幕结构指针, 并为其置空
* struct screen** : 指向 屏幕结构指针的指针, 二级销毁一级的
* */voidscreen_destory(structscreen** pscr);/**
* 屏幕绘制函数,主要生成一个雪花效果
*
* struct screen* : 屏幕数据
* return : 0表示可以绘制了,1表示图案不变*/intscreen_draw_snow(structscreen* scr);/**
* 屏幕绘制动画效果, 绘制雪花动画
*
* struct screen* : 屏幕结构指针*/voidscreen_flash_snow(structscreen* scr);// 主函数,主业务在此运行intmain(intargc,char*argv[])
{structscreen* scr = NULL;//创建一个屏幕对象scr = screen_create(_INT_FRATE, _INT_WIDTH, _INT_HEIGHT);if(NULL == scr)exit(EXIT_FAILURE);//绘制雪花动画 screen_flash_snow(scr);//销毁这个屏幕对象screen_destory(&scr);return0;
}/** 创建一个 屏幕结构指针 返回
*
* int frate : 绘制一帧的周期
* int width : 屏幕宽度
* int height : 屏幕高度
* return : 指向屏幕结构的指针
* */structscreen* screen_create(intfrate,intwidth,int height)
{structscreen *scr = NULL;if(frate<0|| width <=0|| height <=0) {cerr("[WARNING]check is frate<0 || width<=0 || height<=0 err!");return NULL;}//后面是 为 scr->pix 分配的内存 width*heightscr =malloc(sizeof(structscreen) +sizeof(char)*width*height);if(NULL == scr) {cerr("[FATALG]Out of memory!");return NULL;}scr->frate = frate;scr->width = width;scr->height = height;//减少malloc次数,malloc消耗很大,内存泄露呀,内存碎片呀scr->pix = ((char*)scr) +sizeof(struct screen);return scr;
}/** 销毁一个 屏幕结构指针, 并为其置空
* struct screen** : 指向 屏幕结构指针的指针, 二级销毁一级的
* */voidscreen_destory(structscreen** pscr)
{if(NULL == pscr || NULL == *pscr)return;free(*pscr);// 避免野指针*pscr = NULL;
}//构建开头 的雪花,下面宏表示每 _INT_SHEAD 个步长,一个雪花,需要是2的幂//static 可以理解为 private, 宏,位操作代码多了确实难读#define_INT_SHEAD (1<<2)staticvoid__snow_head(char* snow,int len)
{intr =0;//数据需要清空memset(snow,0, len);for (;;) {//取余一个技巧 2^3 - 1 = 7 => 111 , 并就是取余数intt = rand() & (_INT_SHEAD -1);if(r + t >= len)break;snow[r + t] =1;r += _INT_SHEAD;}
}#undef_INT_SHEAD//通过 上一个 scr->pix[scr->width*(idx-1)] => scr->pix[scr->width*idx]//下面的宏 规定 雪花左右摇摆 0 向左一个像素, 1 表示 不变, 2表示向右一个像素#define_INT_SWING (3)staticvoid__snow_next(structscreen* scr,int idx)
{intwidth = scr->width;char* psnow = scr->pix + width*(idx -1);char* snow = psnow + width;inti, j, t;// i索引, j保存下一个瞬间雪花的位置,t 临时补得,解决雪花重叠问题//为当前行重置memset(snow,0, width);//通过上一次雪花位置 计算下一次雪花位置for(i =0; ifor(t = psnow[i]; t>0; --t) {// 雪花可以重叠// rand()%_INT_SWING - 1 表示 雪花 横轴的偏移量,相对上一次位置j = i + rand() % _INT_SWING -1;j = j<0? width -1: j >= width ?0: j;// j如果越界了,左边越界让它到右边,右边越界到左边++snow[j];}}
}/**
* 屏幕绘制函数,主要生成一个雪花效果
*
* struct screen* : 屏幕数据
* return : 0表示可以绘制了,1表示图案不变*/intscreen_draw_snow(structscreen* scr)
{// 静态变量,默认初始化为0,每次都共用staticint__speed =0;int idx;if(++__speed != _INT_VSNOW)return1;//下面 就是 到了雪花飘落的时刻了 既 __speed == _INT_VSNOW__speed =0;//这里重新构建雪花界面,先构建头部,再从尾部开始构建for(idx = scr->height -1; idx >0; --idx)__snow_next(scr, idx);//构建头部__snow_head(scr->pix, scr->width);return0;
}//buf 保存scr 中pix 数据,构建后为 (width+1)*height, 后面宏是雪花图案#define_CHAR_SNOW '*'staticvoid__flash_snow_buffer(structscreen* scr,char* buf)
{int i, j, rt;intheight = scr->height, width = scr->width;intfrate = scr->frate;//刷新的帧频率 //每次都等一下for (;;sleep_ms(frate)) {//开始绘制屏幕rt = screen_draw_snow(scr);if (rt)continue;for(i =0;ichar* snow = scr->pix + i*width;for(j =0; jbuf[rt++] = snow[j] ? _CHAR_SNOW :'';buf[rt++] ='n';}buf[rt -1] ='0';//正式绘制到屏幕上 puts(buf);//清空老屏幕,屏幕光标回到最上面 __curup(height);}
}#undef_CHAR_SNOW/**
* 屏幕绘制动画效果, 绘制雪花动画
*
* struct screen* : 屏幕结构指针*/voidscreen_flash_snow(structscreen* scr)
{char* buf = NULL;// 初始化随机数种子,改变雪花轨迹 srand((unsigned)time(NULL));buf =malloc(sizeof(char)*(scr->width +1)*scr->height);if(NULL == buf) {cerr("[FATAL]Out of memory!");exit(EXIT_FAILURE);}__flash_snow_buffer(scr, buf);//1.这里理论上不会执行到这,没加控制器. 2.对于buf=NULL,这种代码 可以省掉,看编程习惯free(buf);buf = NULL;
}
后记
到这里就结束了,这次分享的比较简单,有兴趣的同学可以 看看, 推荐写一遍. 代码看不懂的时候,多歇歇,看得懂的时候,多写写,
就有套路了. 欢迎吐槽. 错误是在所难免的.
这个冬天,雪花很美,(。⌒∇⌒)
c语言sleep_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美相关推荐
- c语言 sleep_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美
前言 1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪 2.是个简易跨平台的,主要是C语言 3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度 4.比较简单,可以给学生作 ...
- 取两个数较小值c语言_编程代码:用C语言来实现下雪效果,这个冬天,雪花很美...
前言 1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪 2.是个简易跨平台的,主要是C语言 3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度 4.比较简单,可以给学生作 ...
- 编程代码:用C语言来实现下雪效果,这个冬天,雪花很美
前言 1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪 2.是个简易跨平台的,主要是C语言 3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度 4.比较简单,可以给学生作 ...
- c语言代码运行成图指令代码,C语言图形编程代码.doc
C语言图形编程代码 C语言图形编程代码 自己以前编写的C语言图形编程代码 自己以前编写的图形编程代码实现DOS下256BMP图片显示,中文注释,中文汉字显示 写的不好,给大家交流与学习,TC3.0与T ...
- 二级c语言上机编程技巧,二级C语言上机编程题技巧总结
二级C语言上机编程题技巧 一. 方法总结 1. 二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了.综合 往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要 ...
- c语言编程代码大全(c语言简单代码大全)
html代码和c语言等编程语言有什么联系吗? HTML叫做超文本标记语言(标准通用标记语言下的一个应用)或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言. 怎么修改C语 ...
- 汇编和c语言混合编程缺点,汇编C语言混合编程经验总结
ARM汇编语言和C语言混合编程 ATPCS规灾了一种模块化设计的观念,其基本内容是C模块(函数)和汇编模块(函数)相互的一套规?中还有类似的一套规晕腋芯谙呋惚喙δ芮看用有很多忌讳),厅知道(很寄几它/ ...
- C语言/C++编程学习:C语言环境设置
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- c语言对编程对作用,c语言编程心得体会
c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...
最新文章
- SAP Varient Configuration Type SAP变量配置类型
- Expdp/Impdp 并行导入导出详细测试
- Delphi 正则表达式语法(9): 临界匹配 - 也叫预搜索与反向预搜索
- labview圆环里实物动画图形_有趣的图形教案
- 符合我公司GIS开源解决方案的探讨
- 卷积神经网络流程图_卷积神经网络
- 张季跃 201771010139《面向对象程序设计(java)》第十八周学习总结
- rs485如何使用_气体检测仪rs485和4-20ma接线方式有什么区别,该如何选择最优的接线方式...
- 1600k 打印头测试软件,巧修LQ-1600K打印机打印头
- linux xps文件,XPS文件擴展名: 它是什麼以及如何打開它?
- python数据分析之航空公司客户价值分析
- 技嘉主板raid组建方法_性能瞬间飙升!教你如何组RAID0磁盘阵列
- 微信读书十块钱一个月?分分钟搞定它!“白嫖”才是最香的!
- CVPR 2016 摘要阅读
- 计算机系统时间的修复,电脑时间总是不对,小编教你如何恢复正常
- java word 题目导入_java使用poi导入word题库
- 我喜欢的15个WordPress插件
- 立法机关从83辆减0辆
- python爬虫之爬取百度网盘
- source insight 设置颜色字体大小
热门文章
- 004_SpringMVC分层配置文件
- 002_XMLHttpRequest对象
- mysql raiserror_RAISERROR在SQL Server数据库中的用法
- waves效果器_盘点Waves的12款混响插件,你用的是哪个?
- MySQL数据库:SQL语句
- 第二章 GuassDB 数据库基础知识
- office2013软件安装资料及教程
- python 模型交叉验证法_python – 交叉验证和模型选择
- mysql的基本介绍简书_mysql 简介
- linux配置python_Linux--linux下配置安装python3