c语言学习笔记

发布 2021-05-12 01:50:28 阅读 2480

study notes of c language

make the impossible possible 不一样的成功体验。

c语言数据类型分为基本类型,构造类型,指针类型和空类型。其中基本类型又分为整型,字符型,实型和枚举举型;构造类型分为数组类型,结构类型和联合类型。

注意求余运算时,余数与被除数同符号,如35%8=3, 35%(-8)=3, (35)%8=-3.自增和自减运算只能用于变量,不能用于常量或表达式。由于c语言变异程序尽可能自左向右将更多的运算符组成一个运算符,故r=w+++1;等价于r=(w++)1;

逗号运算符号:”,表示用逗号隔开多个表达式,先求出各个表达式的值,结果为最后一个表达式的值,如z=(10,20+3,90);则z的值为90。逗号表达式使用逗号预算符号将两个表达式连接起来的式子。

<,>分别表示将数据按位左移、右移指定二进制位。左移时右边补二进制0,左边丢弃;右移时右边补二进制0,左边丢弃。

字符常量用单引号括起来,字符串用双引号括起来,字符串包括一个结尾字符’\0’。在c语言中有三种转义字符,它们是:一般转义字符、八进制转义字符和十六进制转义字符。

一般转义字符虽然在形式上由两个字符组成,但只代表一个字符。常用的一般转义字符为,\b;八进制转义字符由反斜杠”\”和随后的1~3个八进制数字构成的字符序列,例如\60,\141;十六进制转义字符由反斜杠和字母x或x及随后的1~2个十六进制数字构成的字符序列。转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

c语言本身不提供收入输出语句,其输入和输出操作是由其编译系统提供的库函数来实现的,最基本的输入输出函数有printf(),scanf(),getchar(),putchar(),gets(),puts()等。

格式输出函数,格式:printf(“格式控制字符串” [输出项表]);该函数具体包括以下功能:1.

可以指定对不同类型的数据输出;2.给数据类型指定长度修正说明;3.指定输出数据的域宽和精度;4.

给输出数据添加需要的说明性字符;5.为输出数据给定对齐方式;6.根据数据的正负为输出数据项添加+,-或空格。

printf()可以输出常量、变量和表达式的值,但格式控制中的格式说明符,必须安装从左向右的顺序,与输出项表中的每个数据一一对应,否则出错。格式字符x,e,g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。

除此之外,其他格式字符必须小写。

格式字符串也成转换控制字符串,可以包含3种字符:格式指示符,转义字符和普通字符。

格式指示符,形式为:%[标志][宽度][.精度][h|l][类型]。

标志字符。宽度:用十进制整数类表示输出地最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

精度:精度格式符以“.”开头,后跟十进制整数。

本项的意义是:如果输出数字,则表示小数的位数;如果输出地是字符,则表示输出字符的个数;若实际位数大于所定义的精度,则截去超过的部分。

长度:长度格式符分为h,l两种,h表示按短整型量输出,l表示按长整型量输出。类型:类型字符用以表示输出数据的类型。

基本类型字符。

putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。

scanf()按规定的格式从键盘输入若干数据到相应的内存单元中。格式字符串的一般形式为 %[宽度][h|l]类型字符。在输入数据时,格式说明字段中的类型字符以及类型修饰所指定的类型必须与地址参数的类型一致。

宽度指定该项输入数据所占列数为n,跟在%之后,用十进制整数指定;赋值抑制字符*表示本输入项对应的数据读入后,不赋给相应的变量,即跳过该输入值(该变量由下一个格式指示符输入)。scanf()没有精度控制,要求给出变量地址,给出变量名则会出错。在输入多个数字数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,tab键或回车作间隔。

c编译在碰到空格,tab键、回车或非法数据时即认为该数据结束。

getchar()从系统隐含的输入设备(如键盘)输入字符。从功能角度来讲,scanf()函数可以完全代替getchar()函数。

字符串输入/输出函数gets()、puts()。函数原型char *gets(char *string)用来输入一个字符串,以按回车键作为结束(换行符””不包含在字符串中),并自动在尾部加空字符’\0’。gets()函数返回指向string的指针。

函数参数中char *string是指向char类型的指针,等价的写法是char string.

puts()函数原型int puts(const char *s)。puts()函数用来输出一个字符串,以空字符’\0’结束,并在输出时自动换行。如果成功执行,返回最后所写的字符,否则返回eof(eof内部值为-1,表示文件结束标志)。

当const修饰符用在函数参数表中的指针型参数时,在函数体中将不能修改该指针说指向的变量。

对齐规则:1)当指定宽度大于要输出位数时,数右对齐,左端补空格。

当前缀'-'号时,想要数左对齐,右端补空格。

大大的前提:只有当“指定宽度”存在时,前缀'-'才有意义。

经验:一般来说,左端对齐的形式看上去要美观整齐一点。

输出正负号的技巧:(记住)例如:

printf("%d %+d %+d",-5,0,5);

只要在中间加个“+”号就行。作用是输出符号位(即,数的正负号)

如果不希望正数的前面出现‘+’号,可用下面的方法。

只要在中间加个“ ”号(即:空格)就行。(记住)例如:

作用:如果一个数是非负数,就在它的前面插入一个空格。

int i;

for(i=-3;i<=3;i++)

printf("%d",i); 注意%和d之间有一个空格。

输出结果如下:

问题:如果‘+’和‘ ’同时出现在“中间”时,要以‘+’为准。

两个符号的共同点:用于对齐输出的数:(尤其对于小数来说)

数组是由相同类型的元素构成的数据类型。在处理多个同类型的事物时,用数组处理会带来很大的方便。数组可以分为一维数组/二维数组/多维数组等。

一维数组格式:存储类型数据类型数组名[常量表达式];存储类型一般有三种形式,即外部数组、自动数组和静态数组。外部数组是定义在函数之外的数组;自动数据用auto表示,一般省略;用static修饰的数组叫静态数组。

初始化就是给数组中的元素赋以初值。可以在定义时用=的形式表示。如int a[5] =如果赋全部元素的初值,可省略常量表达式,如int a=

下标分别用0,1,2,…,常量表达式-1)来表示。下标是一个整数表达式(单个的整数也属于整数表达式)。不能引用整个数组,只能引用数组中的元素。

二维数组格式:存储类型数据类型数组名[常量表达式1][常量表达式2];常量表达式1和常量表达式2分别表示第一维和第二维的大小,可以理解成矩阵的行和列。

初始化:可按行给二维数组赋初值:int a[3][4]=,可以去掉里层的{},写成int a[3][4]=;可以对部分元素赋初值,但需用{}把数组的每一行表达清楚,如static int a[3][4]=,

在初始化多维数组时,只有第一维的大小才是可以省略的。

字符数组是一种特殊的一维数组,字符数组的特征是以空字符’\0’结束。格式:存储类型 char 数组名[常量表达式];若字符多于元素个数,则语法出错。

字符数组可以用字符串常量来初始化,字符串常量用””括起来的若干个字符,结尾由字符’\0’结尾。static char x 数组长度为15+1=16,其中x[15]存放’\0’。{可以省略,一般写成 static char x=i am a student.

”;字符数组初始化是一维数组初始化的特殊情况,可以用字符串代替用花括号和逗号的办法。把字符数组单独拿出来讲解,是因为字符串是以空字符’\0’结尾的。

在实际生活中有许多需要由不同类型的数据共同描述的实体,比如一条通讯录,c语言提供了结构体这样一种数据类型来表示上述实体。

struct是用来声明类型为结构体的关键字,其后是声明的结构体类型名,它们两者组成了定义结构体类型的标识符。定义结构体变量有3种形式:1.

先定义结构体类型,再定义结构体变量struct 结构体类型名变量列表;2.在定义结构体类型的同时定义结构体变量;3.定义无名结构体类型的同时定义结构体变量,但这种定义方式不适合需要在程序中再定义此种结构体类型变量的情形。

结构体类型和结构体变量时两个不同的概念,不能混淆。结构体类型只是描述一个结构体形式,c编译系统并不对其分配内存空间。只有当变量被定义为这种类型的结构体时,才对该变量分配内存空间。

定义结构体类型和变量时,关键字struct和结构体类型名必须同时出现,因为结构体类型是由struct和结构体名组合成一起构成的整体。成员名可与程序中的其他变量同名,互不干扰。

在c语言中允许具有相同类型的结构体变量之间进行相互赋值,但对结构体变量的使用,包括赋值/输入/输出和运算都是通过结构体变量的成员来实现的。”.是结构体成员的运算符,它在所有的运算符中优先级最高。

与数组类似,在定义结构体变量的同时,可以对其进行初始化,但要注意结构体成员的数据类型与初值一致。

结构体数组的定义:struct 结构体名结构体数组名[长度];初始化雨普通数组一样,结构体数组也可以在定义的时候进行初始好,其方法是定义结构体数组之后紧跟等号和初始化数据,比如:

struct student

int id;

char name[20];

char sex;

float score;

stu[2] =102, “wang fei“,’f’, 90}

c语言学习笔记

一元二次方程详解。不管我们写什么样的程序,首先要建起构架。c语言的构架是 include intmain void 我们首先需要把三个系数保存到电脑里面,怎么保存呢?我们会以变量的形式保存到电脑里面。比如说 inta 1 intb 2 intc 3 这个 的意思是赋值的意思,不是相等的意思。什么叫变...

C语言学习笔记

a.1.需要成对敲入的符号。2.文件名不要出现。号,否则无法生成。c或。cpp文件,所以不能编译和运行。3.分号 代表一个语句,只有一个 的语句是空语句,所以下面的 不会报错,但表示若条件成立只执行空语句,并且条件语句结束 if a b 等价于 if a b 空语句。4.格式化输出中,建议用 x输出...

C语言学习笔记

求余 求mod 运算符。变量命名规则 只能以字母数字下划线三种字符组成,且第一个字符必须为字母或下划线。scanf d a prindf d a c语言中,变量名是区分大小写的。int 范围 32768 32768 float的指数部分有8bit 2 8 由于是有符号型,所以得到对应的指数范围 12...