c语言

C语言进阶system函数

倾然丶 夕夏残阳落幕 提交于 2020-02-27 05:08:06
我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名:system 功 能:发出一个DOS命令 用 法:int system(char *command); system函数已经被收录在标准c库中,可以直接调用。 程序例: 又如:system("PAUSE")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。 例如:用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色 拿走不谢,我叫雷锋!前方高能!!注意躲避 举例 看了下面实例,相信你会对学到更多system在C程序设计中的应用。 示例一: 我们来试一试用C语言调用DOS命令实现定时关机,想想也很有趣,嘿嘿: 示例二: 用C语言删除文件,例如文件的位置是d:\123.txt 用system()函数执行windows命令。 更多干货笔记关注微信公众号 : 老九学堂 来源:

《C语言》—— 数组

馋奶兔 提交于 2020-02-27 03:45:24
书籍使我变成了一个幸福的人,使我的生活变成轻松而舒适的诗。——高尔基 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 点关注,不迷路!!! 前言  我本来准备C语言章节就写个指针就ok了,在我看来C语言的精华部分就是指针了。但是有很多同学就开始在群里各种拉扯C语言的其他问题,没办法,我是龙叔嘛,想想还是整理一下,把一些重要的C语言知识点都一一更新了吧。C语言指针的内容请点击 指针(上) 和 指针(下) , 记得点关注,不迷路 数组的基本概念  我们把一组数据的集合称为 数组(Array) ,它所包含的每一个数据叫做 数组元素 (Element),所包含的数据的个数称为 数组长度 (Length),数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为 下标 (Index),所包含数组的里面元素的类型叫做 数组类型 (Type)。  一句话就说清楚了数组的基本概念,就是这么简单,^_^。 数组底层结构探析 1int array[5]; 内存布局图  不要看这个图简单,底层就是这样的。数组是一个整体,它的内存是 连续 的;也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙。   这一点很重要,连续的内存为 指针 操作(通过指针来访问数组元素)和内存处理

C语言学习笔记(二)

拥有回忆 提交于 2020-02-27 03:44:32
字符串是一个或者多个字符的序列。C语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的字符数组里面。数组由连续的存储单元组成。字符串以字符\0作为结束标记。 scanf函数在遇到空格时会结束输入。 C99和C11标准专门为sizeof运算符的返回类型添加了%zd转换说明,这个对于strlen()同样适用。对于早期的C,sizeof和strlen()返回的实际类型通常是unsigned或unsigned long。 Sizeof的运算对象是类型时,圆括号必不可少,但如果是特定量,则可有可无。 用大写表示符号常量是C语言的一贯的传统。另一个不常用的命名约定是:在名称前加c_或k_前缀表示常量。符号常量的命名规则和变量相同,即可以使用大小写字母、数字和下划线,首字符不能为数字。 #define指令还可以定义字符和字符串常量。前者使用单引号,后者使用双引号。 C90标准新增了const关键字,用于限定一个变量为只读。 float.h和limits.h中定义了有关基本数据类型的一些明示常量,但是要注意的是,编译器要完全支持C99标准才能识别LLONG_MIN标识符。 在最开始的时候,printf()和scanf()函数并非C语言中的I/O函数,C语言将输入输出的实现留给了编译器的作者,这样可以针对不同的机器更好的匹配输入/输出。但后来考虑到兼容性问题

关于类型转换--C语言

不羁岁月 提交于 2020-02-27 03:03:15
#include <stdio.h> /** 类型转换 --在C语言中整型、实型和字符型三种数据可以进行类型转换而进行混合运算 --并不是所有的数据类型之间都可以进行类型转换,例如指针就不可以和这三种数据之间进行类型转换 --字符型数据和整型数据发生类型转换时,字符型必先转换为整数,C语言规定,字符型数据和整型数据之间可以通用,这也是下面把字符型和整型数据算作同一类型的依据 --short数据也是必先转为int型数据,他们同属于整型数据 --float数据在运算时一律转换为double类型,以提高运算精度 --不同类型的数据发生转换时,遵循低级类型向高级类型转换的规则, --int和double类型发生转换时,int类型转换为double类型再进行运算,结果为double类型 */ int main(void) { //定义和赋值变量 int a = 5; float b = 6.254894; double c = 9.254; char d = 'o'; double result; /** 同类型数据间进行运算并输出 -- 先解释一下char类型,char类型是整型数据之一,但是用来定义字符型变量; -- 整型和字符型相加,转换为整型,会把字符转换为ASCII值然后进行运算 -- 整型和字符型相加,转换为ASCII字元时,会把字符转换为ASCII值然后进行运算

C语言学习日记DAY1

与世无争的帅哥 提交于 2020-02-27 02:39:49
C语言是面对过程的计算机编程语言,Java和C++是面对对象的编程语言。 主要编译器有:Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。 C语言程序样本 #include <stdio.h> int main() { printf(“hello bit\n”); printf(“he he\n”); return 0; } //解释: //main函数是程序的入口 //一个工程中main函数有且仅有一个 数据类型 char 字符数据类型 short 短整型数据类型 int 整型数据类型 long 长整型数据类型 float 单精度浮点数 double双精度浮点数 C语言没有字符串类型,使用的是字符数组。 使用不同的数据类型是为了方便编程和管理,节省存储空间。 变量、常量 全局变量和局部变量:作用的作用域不同,全局变量的作用域是整个程序,局部变量的作用域是当前函数和循环。 局部变量和全局变量同名时局部变量优先级更高。 变量的生命周期 变量创建到销毁的时间段 1)局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。 2)全局变量的生命周期:整个程序的生命周期。 常量 C语言中常量分为以下几种情况: 字面常量 const修饰的常变量 #define定义的标识符常量 枚举常量 枚举变量、枚举常量 enum WEEKDAY{Monday

两数相加(C语言)

老子叫甜甜 提交于 2020-02-27 02:10:12
两数相加 给出两个 非空 的链表用来表示两个非负的整数。 其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 分析:首先,既然是两个非空链表,那么就不用考虑链表为空的情况了; 这道题我原本想先把两个整数相加,然后把相加后的和的位数按照逆序用链表存储一下,但是这样会有一个问题,如果链表特别长的话,整数就会特别大,就会溢出,显然这样做是行不通的。 因为两个整数的位数是按照逆序的方式存储的,那么每个链表的第一个元素都是个位,那么依次遍历两个链表从个位开始相加就可以,同时用 signal 来记录是否需要进位,若需要进位就把 signal 设置为1,计算更高一位的时候把 signal 的值也加上即可。 下边是代码实现: 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 10 struct ListNode

用C语言实现大小字母转换

笑着哭i 提交于 2020-02-27 01:52:53
#include <stdio.h> /** 主要就是利用ASCII值和ASCII字符之间的转换来实现这个功能 */ int main(void) { char n = 'a'; //printf("%d\n",n ); 解释一下,char类型是整型,只有一个字节,所以这里输出的值就相当于进行完类型转换的值,输出的是ASCII码的值 //随意输入大小写的字母 printf("请随便输入您想进行转换的值:"); scanf("%c",&n); //printf("%d\n",n); 测试;注意这里我输出的是%d,不是%c if (n <= 'z' && n >='a') { n = n - 32; //在本文最后再详细解释 }else if(n <= 'Z' && n >='A') { n = n + 32; } //输出n printf("转换后的值为:%c\n",n ); return 0; } /** %c 的意思是将整数转换为ASCII字元 */ 来源: https://www.cnblogs.com/starshine-zhp/p/12370170.html

嵌入式系统设计学习周记①——初步了解嵌入式技术

∥☆過路亽.° 提交于 2020-02-27 00:53:12
嵌入式软件与非嵌入式软件的区别 嵌入式:在已有的硬件上移植(需要修改操作系统源码,安装不需要)操作系统解决软硬件耦合导致的问题。 嵌入式软件和非嵌入式软件的区别即传统开发和嵌入式开发的优缺点: 传统开发的缺点:1.软硬件耦合度高导致软件移植性差 2.软件开发人员必须懂硬件 3.软件功能性差; 优点:简单,开发成本低。 嵌入式开发的优点:1.解决传统开发软硬件耦合度导致的问题 2.多任务机制 3.提供了丰富的网络协议栈4.提供了丰富的开源软件和工具 缺点:硬件成本高。 例如嵌入式与单片机区别 单片机: 软件 —— 硬件 嵌入式: 软件 ——操作系统——硬件 嵌入式操作系统的优势 可以移植的操作系统称为嵌入式操作系统。 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 嵌入式是通过操作系统,间接控制硬件。因此当硬件平台发生改变,但是依旧与操作系统兼容,那么软件程序就不会改变。并且软件开发人员不需要了解硬件,只要学会操作系统中功能的调用,极大地提高了效率,因此嵌入式引入了操作系统,具有以下几个优势: 提供了很多开源的软件,工具,库。 可以实现多任务(所谓的多任务就是快速切换)。 操作系统中有一些网络协议,因此嵌入式是可以上网的,提供了大量的网络资源

C语言实现反转链表 II(指定2个节点反转)

人走茶凉 提交于 2020-02-27 00:50:34
要求: 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 方法迭代链接反转 算法 在看具体算法之前,有必要先弄清楚链接反转的原理以及需要哪些指针。举例而言,有一个三个不同结点组成的链表 A → B → C,需要反转结点中的链接成为 A ← B ← C。 假设我们有两个指针,一个指向结点 A,一个指向结点 B。 分别记为 prev 和 cur。则可以用这两个指针简单地实现 A 和 B 之间的链接反转: cur.next = prev 这样做唯一的问题是,没有办法继续下去,换而言之,这样做之后就无法再访问到结点 C。因此,我们需要引入第三个指针,用于帮助反转过程的进行。因此,我们不采用上面的反转方法,而是: third = cur.next cur.next = prev prev = cur cur = third 迭代 地进行上述过程,即可完成问题的要求。下面来看看算法的步骤。 1.如上所述,我们需要两个指针 prev 和 cur。 2.prev 指针初始化为 None,cur 指针初始化为链表的 head。 3.一步步地向前推进 cur 指针,prev 指针跟随其后。 4.如此推进两个指针,直到