我和我的C语言
不试试怎么知道不行呢
TwcatL_tree
我家二猫爱爬树
展开
-
gets()函数
gets()函数 1.描述 C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 gets(str) 约等于 scanf("%s",&str) 会把读到的字符串写入数组,但又不同。 ...原创 2021-10-25 23:06:20 · 813 阅读 · 0 评论 -
【C/C++】%2d,%02d是什么意思
1、%d就是普通的输出了2、%2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格:3、%02d,和% 2d差不多,只不过左边补0修饰符 格式说明 意义:1、M%md 以宽度m输出整型数,不足m时,左补空格2、0m%0md 以宽度m输出整型数,不足m时,左补零3、m,n%m.nf 以宽度m输出实型小数,小数位为n位原创 2021-10-25 23:05:43 · 14859 阅读 · 2 评论 -
C语言 getchar()函数详解
文章目录 一.getchar()系列1.getchar()工作原理及作用2.使用getchar()清理回车\n3.使用getchar()清理缓存4.混合scanf()与getchar() 一.getchar()系列 1.getchar()工作原理及作用 工作原理:getchar()是stdio.h中的库函数,它...原创 2021-10-25 23:04:54 · 40236 阅读 · 6 评论 -
C语言创建链表
一、链表中结点的存储 链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址。C语言中通常定义一个结构体类型来存储一个结点,如下: struct node{ int data; struce node *next; //下一个结点的类型也是struct node,所以后继指针的类型也必须是struct node *}; 二、让我们把结点连起来...原创 2021-10-25 23:02:03 · 904 阅读 · 0 评论 -
初次了解ListNode,针对ListNode的理解
关于ListNode public class ListNode{ int val; ListNode next; //链表指向的下一个值的指针 ListNode(int x){val = x;} //这个方式赋值} 我想到的几点事项 定义链表ListNode时,链表的首个值不能为0,当首个参数为0时,代表着链表为空。只需要定义一个ListNode xx = new Li...原创 2021-10-25 23:01:26 · 1322 阅读 · 0 评论 -
伪代码规范
在伪代码中,每一条指令占一行(else if 例外),指令后不跟任何符号 书写上的缩进表示程序中的分支结构;同一模块中的语句具有相同的缩进量,通常每个算法开始时都要描述它的输入和输出,而且算法中的每一行都给编上行号,在解释算法的过程中会经常使用算法步骤中的行号来指代算法的步骤。 1.变量的声明 算法中出现的数组、变量可以是以下类...原创 2021-10-25 23:00:55 · 1629 阅读 · 0 评论 -
C/C++按值传递和按地址传递
C/C++的按值传递和按地址传递有明显不同,下面对他们作个区别:按值传递:在调用函数中将原函数的值拷贝一份过去被调用的函数,在被调用函数中对该值的修改不会影响原函数的值。按地址传递:在调用函数的时候将原函数的值所在的地址拷贝一份过去,被调用函数对这个地址所作的修改会影响原来的值。鉴于本人表达能力有限,这样说可能有点迷惑,下面直接上图:一、按值传递#include<iostream>using ...原创 2021-10-25 23:00:24 · 994 阅读 · 0 评论 -
C++——system“pause”
C++使用system( “pause “);来暂停黑窗口 在编写的c++程序中,如果是窗口,有时会一闪就消失了,如果不想让其消失,在程序中添加: system(“pause”); 注意:不要再return 的语句之后加,那样就执行不到了。 分析: system()就是调用(DOS)系统命令(和shell命令)。 pause ,...原创 2021-10-06 22:54:46 · 13908 阅读 · 0 评论 -
C语言动态内存分配函数
目录 1.malloc()2.free()3.calloc()4.realloc()5.小结 在C中我们开辟内存空间有两种方式 :1.静态开辟内存 : 例如: int a;int b[10]; 这种开辟内存空间的特点是 所开辟的内存是在栈中开辟的固定大小的 ,如a是4字节 ,数组b是40字节 ,并且数组在申明时必须指定其长度 , 如果是全局数组的话,内存...原创 2021-10-06 22:48:41 · 292 阅读 · 0 评论 -
c语言malloc函数的用法和意义
当我们需要做一个成绩管理系统,人数可能为全校学生,也可能为一个班的学生,当我们开辟一个班的数组大小时,如果要存储整个学校的人数时,会出现内存不够用的情况;当我们开辟全校人数大小的数组时,输入一个班人数的大小时,会出现内存浪费的情况。 为了应对上述问题,我们引入malloc函数。 malloc时动态内存分配函数,用于申请一块连续的指定大...原创 2021-10-06 22:48:00 · 4505 阅读 · 0 评论 -
C/C++刁钻问题各个击破之细说sizeof
摘要:Sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的10个特性:(0)sizeof是运算符,不是函数;(1)sizeof不能求得void类型的长度;(2)sizeof能求得void类型的指针的长度;(3)sizeof能求得静态分配内存的数组的长度!(4)sizeof不能求得动态分配的内存的大小! (5)sizeof不能对不完整的数组求长度;(6)当表达...原创 2021-10-06 22:47:31 · 252 阅读 · 0 评论 -
int ** 的理解
int ** 的理解 int **p; int * p, 比较容易理解,就是定义一个指向int类型的指针。那么这里的int **p是什么呢? 对于这种特殊形式,首先可以确定的是p是一个指针,因为p前面不但有 * 号而且还有两个 * 号,所以肯定是指针。 那么两个 * 号又是什么意思呢? 把int **p分解为以下形式,和int *p...原创 2021-10-06 22:46:58 · 3235 阅读 · 0 评论 -
C语言中将二维数组作为函数参数来传递
c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一, 形参给出第二维的长度。例如:#include <stdio.h>void func(int n, char str[ ][5] ){ int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, s...原创 2021-10-06 22:46:27 · 2365 阅读 · 0 评论 -
int a; int* a; int** a; int (*a)[]; int (*a)(int)
a) int a;表示一个内存空间,这个空间用来存放一个整数(int);b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;d) int (*a)[4]...原创 2021-10-06 22:44:44 · 428 阅读 · 0 评论 -
约瑟夫环问题递归解法的一点理解
先说明一点,如果有什么不对的地方,欢迎大家批评指正。 先来看这个类型的某个题目描述: 约瑟夫生者死者游戏 约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从 他的下一个人数起,数到第9人,再将他投入大海中,如此 循环地进行...原创 2021-10-06 22:44:01 · 318 阅读 · 0 评论 -
在c语言中,数组 a[i++] 和数组 a[++i] 有区别吗?数组 a[0]++; 又是什么意思?
在c语言中,数组 a[i++] 和数组 a[++i] 有区别吗? 首先我们先看下面的内容: b = a++; //先计算表达式的值,即先把a赋值给了b;然后a再自加1。 b = ++a; //先a自加1后;然后把a自加后得到的赋值给b。 小结:谁在前面先计算谁!!! 有区别,举例说明: 在c语言中,数组 a[0]++; 又是什么意思? a[0]表示数组中的第一个值,可以把它看成一个变量x, a[0]++也就是数组中第一个值...原创 2021-10-05 22:55:20 · 2594 阅读 · 0 评论 -
史上最全ASCII码对照表0-255(%d)
十进制代码 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 0 0 NUL 空字符 1 1 SOH 标题起始 (Ctrl/A) 2 2 STX 文本起始 (Ctrl/B) 3 3 ETX 文本结束 (Ctrl/C) 4 4 EOT 传输结束 (Ctrl/D) 5 5 ENQ 询问 (Ctrl/E) ...原创 2021-10-05 22:54:34 · 43781 阅读 · 0 评论 -
一个函数两个return
一个函数中是可以包含任意多个return的, 不管执行流程触发了哪个return, 都会造成当前函数立即终止, 所以不存在执行两个或以上return的可能.return 就是退出当前函数, 入口只有一个, 但出口可以有很多个, 你一旦出了那个函数, 那函数里面的所有东西就全都跟你无关了.C/C++ 中的reutrn语句:通过在函数中使用返回语句,返回一个值给函数,同时终止函数的调用,返回主函数。格式:return (表达式);或return 表达式;功能:(1)计算表达式的值,将表达式的值原创 2021-10-05 22:53:01 · 5635 阅读 · 0 评论 -
C语言中函数形参与实参的区别
众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定的参数,在未出现函数调用时,他们并不占用内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元。在函数调用结束后,形参所占用的内存单元也被释放。 实参:即你调用函数时传递的参数。实参可以是常量、变量、表达式。 注意:形参和实参实际上占用的是两份不同的存储单元。 形参和实参之间的传递 在c语言中,实参与形参的数据传递是“值传递”,单...原创 2021-10-02 22:56:10 · 5416 阅读 · 0 评论 -
指针数组和数组指针的简单理解
图解 指针数组,重点在数组 数组指针,重点在指针 例子: include <iostream> using namespace std; int main(){int c[2][4]={1,2,3,4, 5,6,7,8};int *a[4]; //指针数组int (*b)[4]; //数组指针b=c;//将数组c中元素赋给数组afor(int i=0;i<4;i++){a[i]=c[i...原创 2021-10-02 22:55:38 · 133 阅读 · 0 评论 -
%C和%S区别
输入:1、赋值%c输入函数只会对一个字节空间赋值,而%s会一直赋值,直到输入中遇到空白字符为止。2、地址符输入的时候scanf("%c", &a);这里的&不能少,而scanf("%s",s);这里不能有&符号。输出:1、长度%c只能输出一个字符,%s输出的是一串字符,直到某一个字节内存的元素为字符’\0’时,输出此字符并且寻址结束。扩展资料转换说明符1、%a(%A):浮点数、十六进制数字和p-(P-)记数法(C99)2、%c:字符3、%d:有符号十进制整数原创 2021-10-02 22:55:05 · 903 阅读 · 0 评论 -
C语言各种变量的初始化
数值类变量初始化 整型、浮点型的变量可以在定义的同时进行初始化,一般都初始化为0。 int inum = 0; float fnum = 0.00f; double dnum = 0.00;123 字符型变量初始化 字符型变量也可在定义的同时进行初始化,一般初始化为'\0'。 char ch ...原创 2021-10-02 22:54:22 · 2781 阅读 · 0 评论 -
C语言不同数据类型间的混合运算+常见数据类型
在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下: 1. +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算; 2. 若int型与float或double型数据进行运算,先将int型和float型转换为double型,然后进行运算,结果为double型; ...原创 2021-10-02 22:53:47 · 5584 阅读 · 1 评论 -
C语言的数据的强制类型转换
定义:强制类型转换是把变量从一种类型转换为另一种数据类型。 强制类型转换算是C语言中常见常考的一项内容,如对于类型处理不好,将会产生错误结果。对于某些类型的转换编译器可隐式地自动进行,不需人工干预,称这种转换为自动类型转换;而有些类型转换需要编程者显式指定,通常,把这种类型转换称为强制类型转换 计算机硬件进行算术操作时,要求各操作数的类型具有相同的大小(存储位数)及存储方式。  ...原创 2021-10-02 22:52:32 · 2659 阅读 · 0 评论 -
JAVA中double转int类型按四舍五入取整(实用)
public static void main(String[] args) { System.out.println("向上取整:" + (int) Math.ceil(96.1));// 97 (去掉小数凑整:不管小数是多少,都进一) System.out.println("向下取整" + (int) Math.floor(96.8));// 96 (去掉小数凑整:不论小数是多少,都不进位) System.out.println("四舍五入取整:" + M原创 2021-10-02 22:51:52 · 2142 阅读 · 0 评论 -
C语言运算符优先级(超详细)
每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!(转载自https://blog.csdn.net/huangblog/article/details/8271791) C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 – () 圆括号 (表达式)/函数名(形参...原创 2021-10-02 22:50:57 · 529 阅读 · 0 评论 -
C语言之在多个文件中声明外部变量
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 问题: 用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。 Extern: 使用extern关键字来声明变量为外部变量。具体说就是在其中一个c文件中定义一个全局变量key,然后在...原创 2021-10-02 22:48:49 · 1169 阅读 · 0 评论 -
C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数
上一篇文章:返回指针值的函数+指向函数的指针+main()函数的参数 C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数 结构体引例结构体变量的定义结构体变量的使用结构体变量作为函数参数结构体变量的初始化 下一篇文章 结构体 引例 输出平均分最高的学生信息 #include &...原创 2021-10-02 22:48:18 · 891 阅读 · 0 评论 -
str[i] 数字强制转int型
str[i] 数字强制转int型X=(int)(str[i]-48);程序标注“将x转换成int型。”我不明白为啥减掉48,str是char型数组!因为ASC码48就是’0’,也就是说’0’的值是48,而后依次是’1’到’9’。这样正好是char型减去48就是它对应的int值不过这样写不好理解,直接写成str[i]-‘0’就好。如果str里面存放的是数字字符的话就是转成其数值类型比如说str[i]是’1’,其实ascii码值为0x31,而’0’的ascii码是0x30,用str[i]-'0’就得原创 2021-10-02 22:47:23 · 1128 阅读 · 0 评论 -
a+‘0‘ 和 a-‘0‘的区别
在C语言的使用过程中,会经常遇到与字符 ‘0’ 进行运算的情况,那他们的区别是什么,我在这个地方将它们记录下来: 在ASCII表中,可以查到字符’0’对应的十进制数为48. 然后进行如下的运算。 int a = 49; char b = 'a';printf("a = %c\n", a);printf("b ...原创 2021-10-02 22:46:33 · 890 阅读 · 0 评论 -
c语言文件读写操作
文件的打开函数fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针...原创 2021-09-26 22:31:30 · 307 阅读 · 0 评论 -
C语言fgetc和fputc函数用法详解
以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符。主要使用两个函数,分别是 fgetc() 和 fputc()。 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fgetc() 的用法为: int fgetc (FILE *fp);1 ...原创 2021-09-26 22:30:59 · 666 阅读 · 0 评论 -
%lf 和 %f 有什么区别
scanf函数是通过指针指向变量的。 %f告诉scanf函数在所传地址位置上存储一个float型值, 而%lf告诉scanf函数在所传地址位置上存储一个double型值。 这里float和double的区别是非常重要的。 如果给出了错误的转换说明,那么scanf函数将可能存储错误的字节数量 (没有提到的是,float...原创 2021-09-26 22:29:27 · 919 阅读 · 0 评论 -
C语言问题:%f和%lf的区别
%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。 其中: float,单精度浮点型,对应%f。 double,双精度浮点型,对应%lf。 在用于输出时: float类型可以使用%lf格式,但不会有任何好处。 double类型如果使用了%f格式可能会导致输出错误。 在用于输入时: double 类型使用了%f格式,会导致输入值错误。 float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。 所以在输入输出时,一定...原创 2021-09-26 22:28:42 · 1719 阅读 · 0 评论 -
c语言自定义输出小数点位数_c语言double类型默认输出小数几位
C语言中常用的小数有两种类型,分别是 float 或 double;float 称为单精度浮点型,double 称为双精度浮点型。不像整数,小数没有那么多幺蛾子,小数的长度是固定的,float 始终占用4个字节,double 始终占用8个字节。 c语言double类型默认输出几位小数? C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。 double a = 1; printf("%lf\n...原创 2021-09-26 22:28:07 · 4868 阅读 · 1 评论 -
C语言 文件读写的实现
关于C语言的文件读写,我将介绍下面这几种方式: 字符的读写:使用 fgetc() 函数 和 fputc() 函数; 字符串的读写:使用 fgets() 函数和 fputs() 函数; 格式化的读写(主要用于文本文件):使用 fscanf() 函数和 fprintf() 函数。 字符读写: 1. fputc()函数 fp...原创 2021-09-26 22:27:25 · 267 阅读 · 0 评论 -
feof()函数以及EOF
c 中的feof()函数,用来检测当前文件流上的文件结束标志,判断是否文件的尾部。 函数int feof(FILE *fp) 检测到文件结束符则返回一个非0值,否则返回0. Note:当文件内部的位置指针指向文件结束符时,并不会立即设置FILE结构中的文件结束标识,只有再执行一次读操作,才会设置文件结束标志,再调用feof()才会...原创 2021-09-24 22:47:22 · 1167 阅读 · 0 评论 -
C语言fgetc和fputc函数用法详解
以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符。主要使用两个函数,分别是 fgetc() 和 fputc()。 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fgetc() 的用法为: int fgetc (FILE *fp);1 ...原创 2021-09-24 22:46:45 · 1044 阅读 · 0 评论 -
字符数组的定义与赋值
今天写c程序时遇到这样的编译问题 char str [10]; str [] ="welcome"; 报语法错误 char str [10]; str="welcome"; 也报语法错误 这是为什么呢? 如果是其它的变量,比如:int a=1; 可以分写成两个表达式: int a; a=1; 可是字符数组 char str []="welcome";...原创 2021-09-20 22:29:25 · 1684 阅读 · 0 评论 -
字符串整体赋值和比较问题
目录 字符串整体赋值问题一、指针式赋值法二、用strcpy()函数法 字符串整体比较问题 字符串整体赋值问题 我们平常给一个字符串初始化了,但是后面我们想重新赋一个字符串却错误了,如下面的操作。 char a[10]="hello";a="word";//这里是错误的不能整体赋值12 因为:数组名的实质是指...原创 2021-09-20 22:28:32 · 416 阅读 · 0 评论