浮点数
float x=123.45e-2F; //x的值为1.2345
123.45e-2 默认为double型
3、常量
整数是以补码的形式转化为二进制代码存储在计算机中的
实数是以IEEE754标准转化为二进制代码存储在计算机中的
字符的本质实际也是与整数的存储方式相同
4、代码规范化
(1)换行原则:
一个程序分为三部分:
定义变量
对变量进行操作
输出值
5、printf的四种用法
printf("字符串");
printf("输出控制符",输出参数);
printf("输出控制符1,输出控制符2,...",输出参数1,输出参数2); printf("输出控制符 非输出控制符",输出参数);
输出控制符包含如下:
%d
%ld //长整型
%f
%lf //双精度浮点型(double型)
%x(或者%X或者%#X)
%o
%s
Printf("%#X\n",i); //输出结果为0X2F
6、字节
内存的最小存储单位:位 bit
硬件能访问到的最小单位:字节 byte
7、ASCII
ASCII不是一个值,而是一种规定
ASCII规定了不同的字符是使用哪个数值去表示
8、运算符
优先级:算数 > 关系 > 逻辑 > 赋值
(1)算数运算符
除法:被除数和除数都为int,则商是int
被除数和除数中只要有一个为浮点型,则结果为浮点型
16/5==3 16/5.0==3.20xx0
取余:
余数的符号与被除数相同
13%-3==1 -13%3==-1 -13%-3==-1
(2)逻辑运算符
非零为真,零为假
int k=20;
m=(2>3)&&(k=5);
结果:m=0,k=20
分析:逻辑与的左边为假,则不再执行右边的表达式
scanf中尽量不要使用非输入控制符
例题:
1 、判断一个数是否为素数
2、 判断一个数是否为回文数
3、 编程实现求一个十进制数字的二进制形式
4、 求一个数字的每位是奇数的数字取出来组合形成的新数字
5、求一个数字倒过来的数字
浮点数的存储所带来的问题:
float和double都不能保证可以精确的存储一个小数
VC文件类型
.dsw Developer Studio Workspace 最高级别的配置文件,
用来把多个工程组织到一个WorkSpace中
记录了整个工作空间的配置信息,是一个纯文本文件,在vc创建新项目时自动生成
.dsp Developer Stdio Project 为配置文件
记录一个项目的所有配置信息,是纯文本文件
.opt 与.dsw和.dsp配合使用的配置文件,
记录了与机器硬件有关的信息,同一个项目在不同的机器上的.opt文件是不同的
.plg 是超文本文件,可以用Internet Explorer打开,
记录了Build的过程,是一个日志型文件
.ncb No Compile Browser 无编译浏览文件,是vc++自动创建的跟踪文件, 其中存放了供Class View 、 Wizard Bar 和 Component Gallery使用的信息, 由VC自动生成,build编译工程后会自动生成
.clw 记录了跟Class Wizard 相关的信息,如果丢失了.clw文件,
那么在Class View 面板里就没有类信息
逗号表达式
从左到右执行
最终表达式的值是最后一项的值
Int i;
Int j = 2;
i = (j++, ++j, j+2, j-3);
Printf("%d\n",i);
输出结果为1
Alt + F8 自动对齐
break 虽然是if内部的语句,但是break终止的却是外部的for循环
e.g
for(i=1; i<=3; ++i)
{
if(3 > 2)
break;
printf("hello");
}
结果: 不输出hello
在多层循环中,break只能终止距离它最近的一个循环
在多层switch嵌套中,break只能终止距离它最近的switch
continue
用于跳过本次循环余下的语句,转去判断是否需要执行下次循环
C-->Java SE-->Java Web
SHIFT + TAB 一次移动多行
对二维数组排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘
函数
return 用来终止函数
输入一个数,输出1到这个数之间的所有素数
指针
int * p; //p是变量的名字,int * 表示p变量存放的是int类型变量的地址
cpu对内存条的控制,通过3根线:控制线、数据线、地址线
第一章 C语言的基础知识
l 熟悉Visual C++
l 编辑(.c)——>编译(.obj)——>运行(.exe)
l 函数是构成C程序的基本单位,程序从main函数开始,在main函数结束,一个程序只有一个main函数
l C语言中用到的函数分:系统函数和用户自定义函数
l C语言函数体分为两部分,定义部分和执行部分,任何变量必须先定义后使用
l 分号是C语句结束的标志
l 标识符:1.只能由字母(区分大小写)、数字、下划线组成;2.开头必须是字母或下划线
l C语言中标识符分:关键字、预定义标识符,用户标识符(见名之意)。关键字不能用于其它场合,预定义标识符可以做用户标识符用,但不提倡
l 常量:程序运行过程中不改变的量。(整形常量、实型常量、字符常量、字符串常量),以及用标识符命名的符号常量(宏定义):#define PI 3.1415926
l 变量:程序运行过程可改变的量。变量的命名遵守标识符命名规则,变量必须先定义后使用
l 位Bit,字节 Byte 1B=8bit 1kB=1024B 1MB=1024kB 1GB=1024MB
l 数制转换:十进制到二进制、八进制、十六进制;二进制、八进制、十六进制到十进制;二进制到八进制、十六进制 8421码
l 整形常量:十进制整形常量:0~9 八进制整型常量:0~7 以数字0开头 十六进制整形常量:0~9,A~F或a~f 以数字0x或0X开头
l 内存中的存储形式:有符号正整数:原码存放,最高位为符号位;负整数:补码存放,最高位为符号位;无符号正整数:最高位不是符号位
l 补码的求法:1.求正整数对应的原码 2.原码求反 3.求反后结果加1
l 补码求负整数:1.各位求反 2.结果加1 3.所得二进制转化为十进制 4.加负号
l 整形变量:定义:short(2)、int(4)、long(4)、unsigned short、unsigned、unsigned long
l 实型常量:表示形式:小数形式(小数点前面或者后面可以没有数据)和指数形式(前后两部分都不可缺,指数为带符号的整数)
l 实型变量:float、double 实型变量只能存放实型值
l 算数表达式:算数运算符:+、—、*、/、%,作为运算符时都是双目运算符,%取余运算符要求两边全是整数;+、—做正负号时是单目运算符;算数运算符两边运算对象必须一致才能运算,若不一致先转换在运算,运算结果的类型与运算对象一致(5/2、5/2.5)。优先级:( ) > +、—正负 > *、/、% > +、—
l 赋值运算符和赋值表达式:变量名=表达式 1.左边必须是变量;2.赋值表达式的值是赋值号左边变量被赋值后的值;3.赋值号的结合顺序为从右到左;4.不同于数学上的等号;5.赋值号两边的类型不一致,系统会自动进行类型转换;
l 复合赋值表达式:+=、—=、*=、/= 运算方向:自右向左
l 强制类型转换:(类型名)表达式 例(int)2.36 转化后为整型值2
l 自加自减运算符:++、——;1.运算对象只能为变量;2.位置决定运算顺序;3.结合方向为从右到左;4.记住这两个运算符的优先级
l 逗号运算符和逗号表达式:逗号运算符从左到右结合,逗号运算符的优先级最低,最后一个表达式的值是整个逗号表达式的值
l 空语句:不做任何动作
l 复合语句:用花括号括起来的多个语句
l C语言中的基本结构:顺序结构、选择结构、循环结构
l 注释:注释可以加在程序的任何位置说法不对,例:int /*…*/ a;正确 in/*…*/t a;不对,注释不能嵌套
l 字符常量:1.字符常量占一个字节,存放的是其对应的ASCII码;2.用当引号括起来;
l 转义字符:1.一般转义字符:’\’开头;2.八进制转义字符:“\”加一到三位八进制数组成,该八进制数不需要以0开头;3.十六进制转义字符:“\x”加一到两位十六进制数字组成
l 字符变量:char 变量名;字符型数据可以参与任何整数运算,表示的就是与之相对应的ASCII码的值,记住字符‘A’的ASCII码为65 ‘a‘的ASCII码为97,对应的大小写字母相差32
l 位运算:~、<<、>>、&、^、| 其中 ~ 为单目运算符结合性自右向左,其余为双目运算符结核性为自左向右;左移时:右端补0,左端溢出部分舍弃,右移时:无符号整数或正整数左端补0,负整数左端补1(移动是其对应的补码的移动);按位与、按位异或、按位或3种运算符满足交换律;位数不同的运算数运算规则:1.右端对其2.往高位扩充,无符号数与正整数补0,负数补1
第二章 数据输出与输入
l printf函数:printf(“说明信息+格式转换说明”,输出数据列表);格式转换说明带有%,与输出列表一一对应,要求个数相同,类型匹配,多余的输出项不予输出,多余的格式转换说明输出不定值。%d:有符号的十进制整数;%f:有六位小数的实数;%c:字符;%o:八进制无符号整型数(不带前导0);%x或%X:十六进制无符号整型数;%u:无符号十进制整数等。%md、%m.nf、%o、%#o、%#x:控制输出数据的格式。PS:如果要输出%,应该在格式控制中用两个连续的%。
l putchar函数:putchar(c);c可以是字符变量名或字符常量,输出字符型数据。
l scanf函数:scanf(“格式说明”,输入数据列表);格式说明与printf函数的格式说明相同,与输入数据列表个数相同,一一对应,输入数据列表时一个或多个合法的地址表达式。‘&’是C语言的求地址运算符。输入数值数据之间用分隔符(空格、制表符、回车)隔开(不包含逗号),可以用一个整数指定输入数据所占的宽度(%md),可以用%*跳过输入的数据,若格式说明部分除了格式转化部分还有其他字符,输入时应一一对应原样输入。
l getchar函数:c=getchar();无需任何参数,空格符、回车符都能被读入。
第三章 选择结构
l 关系运算:关系运算符:>、>=、<、<=以及==、!= 前四个优先级相同,后两个优先级相同,且前四个的优先级高于后两个。算数运算符>关系运算符>赋值运算负 关系运算的结果有两个:0和1
l 逻辑运算:C语言中有两个逻辑值:真(非0)、假(0)。逻辑运算符:||、&&、! 优先级逐渐增高。!(逻辑非) > 算数运算符 > 关系运算符 > && > || > 赋值运算符。说明:&&左边的运算对象值为0时,不再对右边对象进行运算,直接的出表达式结果为0,||左边的运算对象值为1时,不再对右边的运算对象进行运算,直接的出表达式结果为1。
l if语句:1. if(表达式)语句 2. 含else的if语句 3.if-else-if语句结构4.嵌套的if语句 说明:else总是与前面最近的未配对的if语句配对,组成if-else语句。(易错)
l 条件表达式:表达式1 ? 表达式2 :表达式3
l Switch语句:switch(表达式)
{
case 常量表达式1: 语句块1;break;
case 常量表达式2: 语句块2;break;
case 常量表达式3: 语句块3;break;
……
default:语句块n+1;break;
}
注意switch语句的执行顺序。圆括号中表达式的值必须是整型或字符型,不能为实型,常量表达式中不能含有变量。注意break语句的作用。
l 语句标号、goto语句:非重点
第四章 循环结构
l While语句:while(表达式){ 循环体语句 }
l Do-while语句:do { } while 注意while语句与do-while语句的区别
l for语句:for(表达式1;表达式2;表达式3){ 循环体语句 } 1.表达式之间分号隔开,可以缺省 2.循环体语句可以是空语句 3.死循环
l 循环结构的嵌套:1.内层的循环在语法上是外层循环的循环体的一部分;2.外层循环执行一次,内层循环要完成整个循环过程
第五章 函数
l 函数的定义:
函数返回值的类型名 函数名(类型名1 形式参数名1,类型名2 形式参数名2,……)
{
说明部分
语句部分
}
l 库函数:C语言自己提供的函数称为库函数,包含库函数的方式 #include<……>或#include“……”常用的库函数 stdio.h、math.h
l 函数调用: 函数名(实参列表)
1. 函数调用时不写返回值的类型和实参类型,实参类型、个数、顺序与函数定义时形参一致,实参可以是常量、变量、表达式或函数的调用
2. 函数应先定义后调用,或先声明后调用,最后定义(若函数在后面定义,又想在前面调用函数就需要对函数进行声明),函数声明的形式就是比函数定义时函数首部多一个分号,或者甚至可以省略形参名,只有类型名
3. 函数声明位置,在所有函数外部声明,声明之后的任何位置都可以调用该函数,在函数内部函数体的说明部分声明,只能在该函数中调用
4. 函数可以直接或间接的调用自己(难点、易考点)递归调用
第六章 指针(非常重要、必考)
l 指针变量:用来存放指针(即地址)的变量,我们称为指针变量
定义形式:类型名 *指针变量名1,*指针变量名2,……
二级指针: 类型名 **指针变量名;
1. vc6.0系统中,任何指针变量均占用4个字节的内存空间
2. 通过求地址运算符“&”给指针变量赋地址值
3. 相同类型的指针变量之间可以相互赋值
4. 赋值号两边的指针变量的基类型必须相同
5. C语言中有些函数的返回值就是地址值,如malloc、calloc
6. 可以给指针变量赋空值NULL、0、‘\0’,此时应在程序前加上#include “stdio.h”
7. 指针变量必须赋值后才能使用,使用时用间接访问运算符“*”,注意指针变量定义时用的“*”与指针访问时用的“*”有本质上区别
8. 记住:间接访问运算符“*”的优先级比 ++、- -运算符的优先级低
9. 可以对指针变量加上火减去一个整数,使其指向相邻的存储单元(数组中用的最多)
l 传值与传址:通过传送地址值,在被调用函数中可以改变调用函数中的变量值,视情况而定,不是总会改变。
l 函数返回地址值:函数定义是,函数名前面加上“*”表示函数的返回值的类型是指针类型
第七章 数组(必考)
l 数组:1.具有相同类型的数据的集合;2.占用连续的存储空间;3.元素的名字由的数组名和下标构成;4.根据下标个数可分为一维数组、二维数组和多维数组
l 一维数组: 定义形式: 类型名 数组名[常量表达式];1.数组名是用户定义标识符;2.方括号内必须是常量表达式,值必须是正的整形常量;3.数组的下标从0开始
l 一维数组初始化:1.定义时直接把各个元素放在赋值号后面的花括号中,逗号间隔;2.赋值元素的个数可以少于数组的长度,默认用0补满,或定义时省略数组长度,数组长度由赋值元素的个数确定,赋值元素的个数不允许多余数组的长度,并且类型必须与数组元素类型一致;3.数组名[下标表达式]引用数组元素,其中下标表达式可以是整型的常量或变量构成的表达式;4.引用时注意上下限,不能越界
l 二维数组:定义形式: 类型名 数组名[常量表达式1][常量表达式2];1.数组名是用户定义标识符;2.方括号内必须是常量表达式,值必须是正的整形常量;3.数组的行下标和列下标都是从0开始;4.内存中按行的顺序依次存放各个元素;5.可把二维数组看做一个特殊的一维数组。
l 二维数组初始化:1.定义时赋初值,属于同一行的元素放在一对内层花括号中,逗号间隔,或者省略内层花括号,按行的顺序(存储顺序)给数组元素赋值,不足补0;2.类型必须一致;3.数组名[行下标][列下标],引用数组元素;3. 引用时注意上下限,不能越界
第八章 字符串
l 字符串常量:C语言中没有字符串类型,通过字符数组以及指针来处理字符串,字符串最后自动以’\0’结尾,注:字符串的长度比它在内存中的长度少1;
l 一维字符数组存放字符串:每个数组元素都是一个字符,最后一个字符是’\0’ 1.通过单个数组元素赋值,存放字符串,要求字符数组够大,字符串末尾’\0’结束;2.直接整体赋值 例:char str[10]={‘h’,’i’,’!’,’\0’};后面元素自动补’\0’;3.直接把字符串常量赋给字符数组 例:char str[10]={“hello”}或 char str[10]=”hello”;只能在定义时这样赋值。
l 使用指针指向字符串:例:char *p=”hello”; 或 char *p; p=”hello”;将字符串“hello”在内存中存放位置的首地址赋给指针p
l 二维字符数组存放字符串数组:例:char name[4][20]={“I”,”am”,”a”,”teacher”};或
char name[][20]= {“I”,”am”,”a”,”teacher”};
name[0]、name[1]、name[2]、name[3]代表的就是这四个字符串常量的首地址
l 指针数组处理字符串数组:例:char *pname[4]= {“I”,”am”,”a”,”teacher”};或
char *pname[]= {“I”,”am”,”a”,”teacher”};
可以通过pname[i]来引用上述的字符串,通过pname[i][j]来引用该字符串中的字符
l 字符串的输入输出:输出:1.printf(“%s”,”hello”);或char str[]=”hello”;printf(“%s”,str); 2.char str[]=”hello,xiaoyuan”;printf(“%s”,str+6); 3.puts(字符串的首地址); 输入:1.gets(待输入字符串首地址);gets函数可读入空格和回车符,并自动用‘\0’取代最后的回车符,区别于scanf函数
l 对字符串的操作:#include”string.h” 1.拷贝:strcpy(char *d,char *s);2.求长度:strlen(char *s);长度比实际所占的自己数少1;3.连接:strcat(char *d,char *s);4.比较:strcmp(char *s1,char *s2);
第九章 文件
l 文件指针:FILE *fp;
l 打开文件;fopen(文件名,文件打开方式); 记住最常用的几个文件打开方式“r”、“w”、“r+”、“w+”、“rb”、“a”、“a+”等
l 关闭文件:fclose(文件指针);
l 文件的操作:1.判断文件是否结束:feof(文件指针);文件结束返回1,否则返回0;2.设置文件的位置指针的位置:fseek(文件指针,位移量,移动起始点);
移动起始点:SEEK_SET 0 文件开始,SEEK_CUR 1 文件当前位置,SEEK_END 2 文件末尾;3.获得文件位置指针的当前位置:ftell(文件指针);4.将文件位置指针移回到文件开头:rewind(文件指针);等价于fseek(fp,0,SEEK_SET);5.cp=getc(fp); putc(ch,fp);6.fscanf(文件指针,格式控制字符串,输入列表); fprintf(文件指针,格式控制字符串,输出项表);7.fgets(str,n,fp);注:读入的字符长度为n-1;fputs(str,fp);8.fread(buffer,size,count,fp); fwrite(buffer,size,count,fp);
第十章 对C语言的深入讨论
l 用户定义类型:typedef 类型名 标识符;
l 编译预处理:凡是以“#”开头的行都称为编译预处理命令行,不能直接编译,而是由预处理程序在编译前做出响应处理,这些命令行后不加“;”。
l 宏:1.不带参数的宏;2.带参数的宏:即宏名后带有参数列表的宏定义;编译预处理阶段宏展开,即替换,宏替换不占运行时间。特别注意括号的使用
l 文件包含:一个源文件可以将另外一个源文件的全部内容包含进来
l 存储分类:C语言提供了4个关键字,auto(自动)、register(寄存器)、static(静态)、extern(外部),变量有局部变量和全局变量之分,它们的作用域不同。
l 动态存储分配:1.分配内存单元:malloc(size);例int *p;p=(int*)malloc(sizeof(int));2.释放内存单元:free(p);3.分配多个同一类型的连续的存储空间:calloc(n,size)例:int *pint;pint=(int*)calloc(10,sizeof(int));
l Main函数的参数与函数指针(了解)
l 函数的递归调用:要求能读懂递归函数;
第十一章 结构体与共用体
l 结构体:struct 结构体名
{
类型名 1 成员名1;
类型名 2 成员名2;
……
}
结构体变量中成员的引用:1.结构体变量名。成员名;2.结构体指针变量->成员名;3.(*结构体指针变量)。成员名
l 共用体、链表
第十二章 数组与指针(必考)
l 一维数组与指针:1.数组名就是数组的首地址,是常量,不可改变;2.通过指针引用一维数组的元素;3.可以通过数组的首地址计算数组其他元素的地址;4.分清指针变量变化时,它所表示的元素是哪一个;
l 二维数组与指针:1.数组名是数组的首地址,常量不可改变,它是行地址,加1表示的是下一行的地址;2.二维数组可以看成是由一维数组组成的,举例有二维数组a[2][3],它由名为a[0]、a[1]的两个一维数组组成,a[0]、a[1]是地址值,是列地址。它们加1是改行的下一个元素的地址。3.学会通过指针引用数组用的元素,通过指针求数组元素的地址值
l 指针数组: 类型名 *指针数组名[常量表达式];例 int *p[3]; 这里p加上1,1表示4个字节大小 []的优先级大于* 行指针: 类型名 (*指针数组名)[常量表达式]; 例 int (*p)[3]; 这里的p加上1,1标识的是3*4个字节的大小,行指针指向的是一行的元素
l 数组与函数:1.一维数组名作实参时,函数首部可以写成fun(int *a)、fun(int a[])、fun(int a[N]);2.一维数组元素地址作实参相似于一维数组名作实参;3.二维数组名作实参,函数首部可以写成fun(double (*a)[N])、fun(double a[][N])、fun(double a[M][N]);4.指针数组作实参,函数首部可写成 fun(double *a[M])、fun(*a[])、fun(double **a);这些函数不要求会写,但是必须能读懂程序
总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)读程序都要从main(…
好老师重庆市二级C语言基础知识点总结以及题目订正第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;…
浮点数floatx=123.45e-2F;//x的值为1.2345123.45e-2默认为double型3、常量整数是以补码的形式…
二级C语言基础知识点总结第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;2,一个程序的编译是从第…
二级C语言公共基础知识部分知识点总结~来源:吕濛??的日志数据结构与算法1算法算法:是指解题方案的准确而完整的描述。算法不等于程序…
1.每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,并在main()函数中结束。2.在C语言中,用…
C语言复习资料(到循环)第六章总体上必须清楚的:1)程序结构是三种:,三个循环结构),和switch)2)读程序都要从main()…
C语言知识点总结C语言知识点总结1一常量2二标识符2三变量2四表达式3五输入输出函数4六C语言的语句5七C程序的基本结构5八选择结…
C语言基础知识要点C语言知识要点复习资料总体上必须清楚的1程序结构是三种分支结构2读程序都要从main入口然后从最上面顺序往下读碰…
C语言基础知识总结主要内容1C数据类型2简单的算术运算和表达式3键盘输入和屏幕输出4选择控制结构总结风格分条罗列主要是知识点有例题…
总体上必须清楚的:1)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.2)bit是位是指为0或者1。byte…