c语言

C语言数据类型转换

房东的猫 提交于 2020-03-15 18:04:11
目录 一、自动类型转换 1、操作数中没有浮点型数据时 2、操作数中有浮点型数据时 3、赋值运算符两侧的类型不一致时 4、右值超出左值类型范围时 二、强制类型转换 三、课后作业 四、版权声明 计算机进行算术运算时,要求各操作数的类型具有相同的大小(存储位数)及存储方式,不能将char 型( 1 字节)数据与 int 型(2、4或8字节)数据直接参与运算;由于存储方式的不同,也不能将 int 型数据与 double 型数据直接参与运算。 然而,由于 C语言的灵活性,在一个表达式或一条语句中,允许不同类型的数据混合运算。 C语言的灵活性与计算机的机械性是一对矛盾,如处理不好,将会产生错误结果。对于某些类型的转换编译器可隐式地自动进行,不需程序员干预,称这种转换为 自动类型转换 ;而有些类型转换需要程序员显式指定,这种类型转换称为 强制类型转换 。 一、自动类型转换 一个表达式中出现不同类型间的混合运算,较低类型将自动向较高类型转换。 不同数据类型之间的差别在于数据的取值范围和精度上,一般情况下,数据的取值范围越大、精度越高,其类型也越“高级”。 整型类型级别从低到高依次为: signed char->unsigned char->short->unsigned short->int->unsigned int->long->unsigned long 浮点型级别从低到高依次为:

C语言字符串

本秂侑毒 提交于 2020-03-15 18:00:54
目录 一、字符串的概念 二、占用内存的情况 三、字符串的初始化 四、字符串与指针 五、字符串的结尾标志 六、字符串的输出 七、字符串越界 八、字符串常用的库函数 1、获取字符串的长度(strlen) 2、字符串复制或赋值(strcpy) 3、字符串复制或赋值(strncpy) 4、字符串拼接(strcat) 5、字符串拼接(strncat) 6、字符串比较(strcmp、strncmp) 7、字符查找(strchr、strrchr) 8、字符串查找(strstr) 九、应用经验 1、留有余地 2、变量初始化 3、位置(地址)偏移的用法 4、不要在子函数中对字符指针用sizeof 十、课后作业 十一、版权声明 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串。 因为字符串需要用\0结尾,所以在定义字符串的时候,字符数组的长度要预留多一个字节用来存放\0,\0就是数字0。这是约定。 char strname[21]; // 定义一个最多存放20个英文字符或十个中文的字符串 字符串也可以存放中文和全角的标点符号

C语言生成随机数

别说谁变了你拦得住时间么 提交于 2020-03-15 17:25:30
强烈建议阅读 → 重新整理后的文章 2012年的时候写过一篇C语言生成随机数的博客,点击量比较高。后来发现那篇博客描述的不是非常准确,这里重新整理一遍。写惯了高级语言,现在回看C的语法,真的是挺难的^o^。 一、方法介绍 生成随机数,需要用到两个函数 srand 、 rand ,头文件为 #include <stdlib.h> 1.1 void srand ( unsigned int seed ) 生成随机数种子,注意 如果使用相同的种子后面的 rand() 函数会出现一样的随机数 。常见的用法是使用一些动态的值来初始化这个种子: srand((unsigned) time(NULL));srand((int)getpid()); 1.2 int rand ( void ) 根据 srand 初始的随机数种子产生一个伪随机数(注意不是真正的随机),范围为 0 - RAND_MAX。RAND_MAX 至少为 32767,我电脑为 2147483647。可通过取模来产生不同范围的随机数,如: int randint = rand() % (MAX + 1 - MIN) + MIN; 1.3 举例实现 下面给出了一个举例的实现(POSIX.1-2001),帮助更好的理解其原理,每次调用 rand 的时候,其实是改变了一个全局变量,从而导致下一次调用返回了不同的值。 static

10个经典的C语言面试基础算法及代码

廉价感情. 提交于 2020-03-15 01:52:38
算法是一个程序和软件的灵魂,作为一名优秀的 程序员 ,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。 1、计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。 C语言实现的代码如下: /* Displaying Fibonacci sequence up to nth term where n is entered by user. */ #include <stdio.h> int main() { int count, n, t1=0, t2=1, display=0; printf("Enter number of terms: "); scanf("%d",&n); printf("Fibonacci Series: %d+%d+", t1, t2); /* Displaying first two terms */ count=2; /* count=2 because first two terms are already displayed. */ while (count<n) {

C语言实现单链表(带头节点)

北城以北 提交于 2020-03-14 14:41:27
C语言在实现单链表存储时需要注意的几点: 1.定义结构体,typedef:用于给结构体另命名 // 定义结构体类型 typedef struct Node{ int data; struct Node *next; }Node,*LinkedList; 2.链表初始化 // 链表初始化 LinkedList LinkedListInit(){ Node *Head,*L,*LNew; // 申请节点空间 Head = (Node *)malloc(sizeof(Node)); // 判断是否有足够内存空间 if(Head == NULL){ printf("申请空间失败\n"); exit(-1); } L = Head; L->next = NULL; for(int i=0;i<3;i++){ // 分配第一个节点 LNew = (Node *)malloc(sizeof(Node)); // 判断是否有足够内存空间 if(LNew == NULL){ printf("申请空间失败\n"); exit(-1); } LNew->data = i; L->next = LNew; LNew->next = NULL; L = LNew; } return Head; } 具体源码demo.c #include <stdio.h> #include <malloc.h>

C语言实现奇偶链表

这一生的挚爱 提交于 2020-03-14 11:17:53
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点和偶数节点的相对顺序。 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推 链接:https://leetcode-cn.com/problems/odd-even-linked-list 思路:把链表分成奇数链表,偶数链表两个链表,然后拼接。注意的是while循环的条件:因为even最后一点指向NULL或者是even->next指向NULL,但是while(条件 && 条件) typedef struct ListNode * PNODE; PNODE oddEvenList(PNODE phead){ if(phead==NULL) { return NULL ; } PNODE odd =phead;//odd表示奇数链表的尾指针,也用作迭代器

基本C语言的HELLO/HI聊天程序

风格不统一 提交于 2020-03-14 11:00:02
什么是 socket? socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。 socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户。 学习 socket,也就是学习计算机之间如何通信,并编写出实用的程序。 UNIX/ Linux 中的 socket 是什么? 在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。 你也许听很多高手说过,UNIX/Linux 中的一切都是文件!那个家伙说的没错。 为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如: 通常用 0 来表示标准输入文件(stdin)

c语言的第二堂课 5,17

▼魔方 西西 提交于 2020-03-14 09:44:11
作为第二堂的基础课程,本节课主要讲解了一些基本的C语言概念。 1、首先讲了数据的类型,常量和变量。着重讲解了整型和字符,并分别讲解了几个常用的转义字符的使用和含义。 2、接着讲解了一些基本的运算符号和运算顺序,并解释了跟我们初等数学中的同与不同。还有在我们常用的循环语句中的自增自减,说明字符是可以通过代码的加减相互转换的,书写一个简单的大小写字符转换的程序并编译出来。 3、c语句的分类;包括控制语句(包括条件语句,循环语句,中止语句等。。。),函数调用语句,表达式语句,空语句,复合语句。着重讲解了赋值语句语句,熟悉了符合语句的运算符。 4、对输入输出的语句scanf和printf函数的格式和应该注意的问题进行的分析,字符的输入输出getchar和putchar进行了简单的介绍。 5、最后通过列子来熟悉一下这些概念。 介绍我们潭州课堂的历史文化背景和我们课程的优势。 来源: https://www.cnblogs.com/serious123/p/10883984.html

5/30 c语言中的位运算

99封情书 提交于 2020-03-13 11:00:40
1、什么是位运算? 位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制的问题。储存单元中的各二进制位左移或者右移一位,两个数按位相加等。c语言灵活,接近底层,对程序员的要求高,不像其他语言对c语言进行了封装,出错性会高很多。 2、位运算符和位运算。 运算符&按位与 ~取反 |按位或 <<左移 ^按位或 >>右移。位运算中除了~以外,均为二元元运算符,即要求两侧各有一个运算量。 3、与&的应用。 清零,无论任何一个二进制的书与上一个00000000,与之后就全为0 了。 去一个数中某些指定位,假如哦们需要一个字型数据取出其低八位的值时, 11010101 01011011&00000000 11111111=00000000 01011011 来源: https://www.cnblogs.com/serious123/p/10952816.html

2020计算机二级C语言题库

放肆的年华 提交于 2020-03-13 01:52:54
[解析]软件设计中模块划分应遵循的准则是高内聚低偶 合、模块大小规模适当、模块的依赖关系适当等。模块的划 分应遵循一定的要求,以保证模块划分合理,并进一步保证 以此为依据开发出的软件系统可靠性强,易于理解和维护。 模块之间的耦合应尽可能的低,模块的内聚度应尽可能的 高。 #include <stdio.h> double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=3.0/4; /**********found**********/ while(x > e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=(t+1)/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); } #include <stdio.h> /************found************/ double fun ( int n ) { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k+