c语言

从零开始,计算机编程语言简史

爷,独闯天下 提交于 2020-02-24 23:26:33
计算机语言总的来说分为机器语言,汇编语言,高级语言三大类,而这三种语言也恰恰是计算机语言发展历史的三个阶段。其中,汇编语言几乎成为了每个科班学生的噩梦。 我希望从计算机语言编程语言的发展历史中,了解每一种编程语言在哪个历史时代背景中独特的魅力、它为什么而诞生、为什么能够推动计算机科学界的前进。 同时,我更愿望从这些编程预言的发展历史中,找到编程语言们的 核心特性与共性 ,深度理解编程语言的 底层原理和实现思想 ,构建自己的编程语言 知识体系 。 文章目录 机器&汇编语言 高级语言的诞生 大佬来了:C语言 面向对象 C++ Java Python 先来一波高级编程语言发展图: 机器&汇编语言 1946年2月14日 ,世界上第一台计算机 ENAC诞生 ,使用的是最原始的穿孔卡片。这种卡片上使用的语言是只有 专家 (机器)才能理解的语言,与人类语言差别极大,这种语言就称为机器语言。 其实,机器语言就是由0和1两种元素组成。所谓的 穿孔卡片 也就是一条纸带,上面充满了0和1的序列,ENAC就是通过读取这种序列,来实现计算的。机器语言也就成为了第一代计算机语言。 由于第一代计算机语言(机器语言)的特性(人类根本没法看懂),导致了许许多多的问题,例如,对于程序编程员的要求极高( 像我这种面向百度编程的人,就算了 );运算结果出错了,根本没法排除… 于是,汇编语言诞生了。

C语言寒假大作战05

守給你的承諾、 提交于 2020-02-24 19:41:55
1.1 作业提交情况 这个作业属于哪个课程 我的班级 这个作业的要求在哪里 C语言寒假大作战05 这个作业的目标 使用函数、Switch语句来完成菜单程序并且在其基础上增加各年级题目操作函数并且添加题目答案 作业正文 C语言寒假大作战05 其他参考文献 %g的格式 1.2 需求分析 1.3 程序代码 1.3.1 源代码 深蓝色 1.3.2 函数调用图与流程图 1.4功能检测 1.5应用集成 Gitee上传截图 稍浅蓝 我的主页链接 来源: https://www.cnblogs.com/lky-29/p/12350004.html

C语言编写程序的大小端问题

冷暖自知 提交于 2020-02-24 15:41:23
有时候,用C语言写程序需要知道大端模式还是小端模式,,由于寄存器大于一个字节(8bit),就会存在一个字节安排的问题,例如(16bit)的short型,(32bit)的int型,具体需要看具体的编译器,所谓大端模式,即高位字节存放在低地址上,低位字节放在高地址上,而小端模式则是低位字节放在低地址上,高位字节放在高位字节上;例如大端模式:a=0x1234,存放地址是0x000001,这时0x12(高位字节)存放在0x000001上,而0x34(低位字节)存放在0x000002上(相对0x000001来说是高地址);而小端模式则是a=0x1234,存放地址是0x000001,这时0x34(低位字节)存放在0x000001上,而0x12(高位字节)则存放在0x000002上(相对0x000001来说是高地址) C语言判断大小端: 方法1: bool isBigEndian() {   a = 0x1234;   char *b = &a;   if(b == 0x12)//0x12表示高位字节-----存放在低地址上   {     printf("big endian");     return true;   }   return false; } 方法2: bool isBigEndian() {   union NUM   {     int a;     char b;   

C语言寒假大作战05

雨燕双飞 提交于 2020-02-24 14:21:21
这个作业属于哪个课程 2019级助教 (中南林业科技大学涉外学院) 这个作业要求在哪里 C语言寒假大作战05 这个作业的目标 制作一个五十人的通讯录且含有显示界面的通讯录 1.需求分析 相关人物信息的显示,人物要显示的信息包括人物的编号,姓名,联系电话 显示界面的人物信息需要按照编号的顺序进行排序 需要一个操作的提示界面指引几种操作 每次在对数据操作之后需要对界面进行重新刷新 在每个错误操作后需要进行暂停,以便错误信息的显示不会立即被清屏函数清除 2.程序代码 2.1源代码 2.2函数调用图与流程图 2.2.1函数调用图 2.2.2流程图 3.功能测试 操作1 正常操作 错误操作——此处已有数据 错误操作——处理编号超过阈值 错误操作——通讯录已满 操作2 正常操作 错误操作——此处无数据 错误操作——处理编号超过阈值 操作3 正常操作 错误操作——此处无数据 错误操作——处理编号超过阈值 非菜单编号操作 4.应用集成 Gitee主页 5.参考资料 二维数组 字符数组 清屏函数 C语言中的暂停 getch()警告问题 结构体删除其中一组数据 strcpy()函数:字符串复制(拷贝)函数 来源: https://www.cnblogs.com/just-like-this/p/12356036.html

嵌入式C语言优化技巧

十年热恋 提交于 2020-02-24 13:32:10
精彩内容 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域。嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要。 目前,在嵌入式系统开发中可使用的语言很多,其中 C语言应用得最广泛。虽然用 C 语言编程具有许多优点,但基于嵌入式系统的C语言和标准 C语言又有很大区别。接下来《单片机与嵌入式系统应》小编结合嵌入式系统的特点和高手们的一些积累,给大家整理出在程序设计中代码优化的一些小技巧。 1 嵌入式C语言的特点 作为一种结构化程序设计语言,C 语言兼顾多种高级语言的特点,具有很强的功能性和可移植性。但在嵌入式系统开发中,出于对低价产品的需求,系统的计算能力和存储容量都非常有限,因此如何利用好这些资源就显得十分重要。开发人员应注意嵌入式 C语言和标准 C 语言的区别,减少生成代码长度,提高程序执行效率,在程序设计中对代码进行优化。 2 C代码在程序中的优化 现在的 C 编译器会自动对代码进行优化,但这些优化是对执行速度和代码长度的平衡。如果要获得更小且执行效率更高的代码,需要程序员手工对代码进行优化。 3 变量类型的定义 不同的数据类型所生成的机器代码长度相差很多,变量类型选取的范围越小运行速度越快,占用的内存越少。能够使用字符型(char)定义的变量

力扣(LeetCode)刷题,简单题(第4期)

喜夏-厌秋 提交于 2020-02-24 07:29:20
目录 第1题:只出现一次的数字 第2题:两数之和 第3题:Excel表列名称 第4题:数组中重复的数字 第5题:二维数组中的查找 第6题:替换空格 第7题:从头到尾打印链表 第8题:斐波拉契数列 第9题:青蛙跳台阶问题 第10题:旋转数组的最小数 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 第1题: 只出现一次的数字 试题要求如下: 回答(C语言): //按位异或,相同的数异或为0,任何数与0异或为原数不变 int singleNumber(int* nums, int numsSize){ int a = 0; for(int i = 0;i < numsSize ;i++){ a ^= nums[i]; } return a; } 第2题:两数之和 试题要求如下: 回答(C语言): /** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numbersSize, int target, int* returnSize){ int *res = malloc(sizeof(int) * 2); *returnSize = 2; int i = 0;

哈夫曼树(C语言)

谁都会走 提交于 2020-02-23 14:41:01
B站小甲鱼讲解他的代码的视频: https://www.bilibili.com/video/av21828275?p=53 其他网站讲解: http://data.biancheng.net/view/33.html 小甲鱼的代码中因为包含如何统计一段字符串中的权重,所以显得比较长,建议先看后者的代码,理解一下大概意思。 来源: CSDN 作者: 单单一个越字 链接: https://blog.csdn.net/qq_38122800/article/details/104457380

【C语言】简单片段输入多行

∥☆過路亽.° 提交于 2020-02-23 13:40:43
第一行输入数字:n表示 将输入n行句子 后续每行都输入句子 #include <stdlib.h> #include <stdio.h> #include <string.h> #define SLEN 128 int getStrings(char * str) { int num = 0; char c; do{ scanf("%c", &c); str[ num ++ ] = c; }while(c != '\n' && num < SLEN); str[num - 1] = '\0'; return num - 1; } int main(int argc, char ** argv) { int i = 0, j = 0; int num = 0; char **pStr; char tmp[SLEN] ; char cEnt; scanf("%d", &num); //第一行输入num行句子 scanf("%c", &cEnt); //回车键 //分配存储 num行句子的二维数组 pStr = (char **)malloc(num*sizeof(char *)); for(i = 0; i < num ; i++) { pStr[i] = (char *)malloc(SLEN*sizeof(char)); memset(pStr[i], 0, SLEN);

特殊回文数(C语言)

♀尐吖头ヾ 提交于 2020-02-23 11:52:34
123321 是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数 n, 编程求所有这样的五位和六位十进制数,满足各位数字之 和等于 n 。 输入格式 输入一行,包含一个正整数 n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定 1<=n<=54。 # include <stdio.h> int main ( ) { int i , n ; scanf ( "%d" , & n ) ; for ( i = 10000 ; i < 100000 ; i ++ ) { int a = i / 10000 ; int b = ( i % 10000 ) / 1000 ; int c = ( i % 1000 ) / 100 ; int d = ( i % 100 ) / 10 ; int e = i % 10 ; if ( a == e && b == d && a + b + c + d + e == n ) printf ( "%d\n" , i ) ; } for ( i = 100000 ; i < 1000000 ; i ++ ) { int a = i / 100000 ; int b = ( i % 100000 ) / 10000 ; int c = ( i

C语言的编译过程

柔情痞子 提交于 2020-02-23 09:22:22
C语言的编译过程 c语言的过程是:预处理->编译->汇编->链接 预处理 预处理主要是将宏定义,条件预编译指令,注释和头文件处理掉。 其中主要步骤包括: 将所有的#define删除,保留他所定义的内容; 处理条件预编辑指令,如#if,#ifed,#if,#elif,#endif 处理"#include"预编译指令,将包含文件插入到预编译指令,用递归方法进行,文件内可能包含其他文件。 删除所有注释。 添加行号和文件标识,以便编译时产生调试时使用的行号和编译错误警告行号。 保留#pragma编译指令,编译器需要使用它们。 预处理的使用: 首先创建一个名字为hello.c的文件 #include<stdio.h> int main() { printf("hello,world!\n"); return 0; } 以下代码用在Liunx系统中使用 预处理命令: gcc -E hello.c -o hello.i gcc -E -P hello.c -o hello.i 可以使用cat hello.i来查看预处理后的代码。 编译 主要作用:扫描,语法分析,语义分析,源代码优化,代码生成,目标代码优化。 编译就是通过词法分析和语法分析,在确认所有资料指令都符合语法规则之后,将其翻译成等价的中间代码或者汇编代码。 编译阶段会对代码进行优化处理,不仅涉及到编译技术本身,还涉及到机器的硬件环境