C语言基础班海贝课件.ppt
2012计算机C语言辅导,成功 文件位运算 结构体、链表 函数指针数组字符串 三种结构化程序设计 三种数据类型六大表达式,1、记笔记,我们为什么要记录?,学会记录,4、坚持不懈,再撑一百步 美国华盛顿山的一块岩石上,立下了一个标牌,告诉后来的登山者,那里曾经是一个女登山者躺下死去的地方。她距离当时正在寻觅的庇护所“登山小屋”仅一百步而已,如果她能多撑一百步,她就能活下去。,胜利者,往往是能比别人多坚持一分钟的人。即使精力已耗尽,人们仍然有一点点能源残留着,用那一点点能源的人就是最后的成功者!,倒下之前再撑一会儿!,倒下之前再撑一节课!,坚持不懈,三大数据类型(常量和变量)1.整型常量:三种表示形式 变量 int 内存格式:二进制位2.实型常量:两种表示形式 变量 float double内存格式:指数形式3.字符型(第六章单独介绍)常量:单引号 变量:char,算术表达式,赋值表达式,关系、逻辑表达式,求值规则,条件、逗号表达式,三大结构化程序设计,1.顺序结构 printf(输出)scanf(输入),2.选择结构 if if-else switch 嵌套,3.循环结构 while do-while for 循环嵌套,相关程序,1.常量和变量(1)常量:定义:在程序运行的过程中,不可改变的量 3(2)变量:x=2 x=3 定义:在程序运行的过程中,可以改变的量 实质:一个变量代表一个存储单元 原则:先定义后使用(3)标识符:变量名(文件名 函数名 数组名)组成:字母、数字、下划线 第一个字符:字母、下划线 分类:关键字(main、int、float、char)预定义标识符(printf、scanf)用户标识符(用户定义)注:标识符和用户标识符的区别只在于关键字(例如),例题,1.下面合法的用户标识符()A)abc.c B)int C)2b D)Main 2.下面合法的标识符()A)b*B)for C)&a D)1a,1.D)2.B),书写形式:八进制 07 0+有效数字 016 05 十进制 09 19 20 十六进制 09 a(A)f(F)0X(x)+有效数字 0X15 0 x141)二进制、八进制、十六进制转化为十进制:按权展开2)十进制转化为二进制、八进制、十六进制:除n求余,倒着写回去3)其中八进制和十六进制只能表示正整数题目:整型数 12 有那三种表示形式?,014 12 0 xc(C),整型变量(4个字节=4*8)int+变量名+;定义格式类型 1单个变量定义:int x;2多个变量定义:int j,k,m;3边定义边赋值:int a=2,b=3;注:1)当定义变量时,系统就会为该变量自动开辟存储空间。2)当定义变量时,如果不给该变量赋初始值,变量所代表的空间中存放是任意值(垃圾值).,1最小存储单位:位 21字节(B)=8个二进制位 3在内存中,存储空间右端代表低端,左端代表高端 4最高位是符号位 最高位存放1=负整数 最高位存放0=正整数 5正整数:原码 0000 0101 6负整数:补码(即:原码取反+1)题目:分别算一下5 和-5 在一个字节大的空 间的存储格式?,0000010111111011,1小数形式:带小数点.7 7.2指数形式:数学 C语言 5*109 5e9 8*100 8E0-2*10-3-2e-3 0*100 0e0 注:1)e或E均可 2)e(E)前后必须都有数字 3)e(E)后面是整型数 4)e与前后数字之间不能加空格例题:下面合法的C语言常量()A)-80.0 B)-023 C)-8e1.0 D)-80.0e E)080,实型变量 类型名 字节数 范围 小数位数 float 4B-1038.1038 6(单精度)double 8B-10308.10308 1516(双精度)(6位)注:1实型数据存在误差 float a=1.0;double b=0.0;,算术表达式(数学式子)算术运算符+数据:()、+/-、*/%、+/-(1)在算术运算中,如果运算符两端的类型都是整型数据,那么结果是整型数据 1/2 0 5/3 1 8/9 0 9/8 1(2)如果 两端的类型不一致,整-实 1/2 0 1/2.0 0.5(3)强制转化:(类型名)表达式(double)1=1.000000 1/2 0(double)1/2 1.0/2 0.5(4)%两边必须是整形数,运算符=格式:变量名=表达式(1)在赋值表达式中,赋值号的左端只能为变量名 5+b=a()(2)含义:把赋值号右边的值放进了左边的存储单元 x=5;(3)复合赋值表达式(一种简写)x=x+4;=x+=4(4)复合赋值有隐含小括号功能 a*=a-7=a=a*(a-7),3.条件表达式格式:表达式1?表达式2:表达式3(2)运算过程:表达式1为真,执行表达式2,并作为值。表达式1为假,执行表达式3,并作为值。4.逗号表达式(1)格式:表达式1,表达式2,表达式3,表达式4,表达式n(2)自左向右运算(3)最右边式子的值作为整个式子的值,5 关系表达式(结果:0或者1)=-9&x=9 x=9或x=9|x=-9(8)断路问题(只有0代表假,其他数都是真)&碰到假停止运算;|碰到真停止运算,1.求3.6-5/2+1.2+5%2表达式的值A)3.8 B)4.8 C)3.3 D)4.32.正确的赋值语句是A)x1=26.8%3 B)1+2=x2;C)x3=0 x12;D)x4=1+2 3.求(int)(double)9/2)-9%2的值A)0 B)3 C)4 D)54.Int a=2,b=3,c=4值为0的表达式是()A)ab?0:1 B)a&b C)a-b,c+a,c=1D)!(ab)E)a+F)-c,1.A2.C3.B4.D,+、-1功能:自动赋值+增1-减1 i+i i-i 表达式值 变量值 i=5 i+5 6 i=5+i 6 6 i=5 i-5 4 i=5-i 4 4 所有运算符的优先级()+/-!算术 关系 逻辑条件 赋值 逗号表达式,输出语句(从运行黑屏上输出数据)(1)输入和输出语句(#include stdio.h)2)格式:printf(“格式控制”,输出项);3)格式控制符:由输出项的类型决定.int:%d float double:%f4)格式控制中除掉控制符原样输出5)n:回车换行符6)宽度设置:设置小了无影响,大了补空格(一个数字和一个小数点各占一个宽度,实型数据默认六位小数),程序,输入语句(从运行黑屏上输入数据)1格式:scanf(格式控制,输入项)2格式控制符:由输入项的类型决定.int:%d float%f double%lf 3在格式控制中,除掉控制符外原样输入4输入项:&+变量名&(求地址符)5在黑屏幕中输入,输入数据时,各个数据中间以空格tab回车键作为间隔符,#includemain()double a=1.2;int b=3;float c;c=a*b;printf(a=%f,b=%d,c=%f,a,b,c);,if语句 格式:if(表达式)语句 1if是关键字 2语句:一条:以;作为结束 多条:以为开始,以为结束注:用括起来的语句组,称为复合语句。3 执行过程:表达式真(非0)执行语句 表达式假(0)不执行语句,程序,#includemain()double x,y;scanf(%lf%lf,if-else语句 格式:if(表达式)语句1 else 语句21if、else是关键字2语句1和语句2:一条:以;作为结束(复合):以为开始,以为结束3执行过程:表达式真=执行语句1 表达式假=执行语句2 4else的条件是if的反条件,else只能和if成对出现(没有if,else不可能单独出现)5else 与if的配对,坚持就近原则,程序,例如,#includemain()int x;scanf(%d,switch语句 格式:switch(表达式)case 常量表达式1:语句1 case 常量表达式n:语句n default:语句n+1 1switch、case 和default是关键字2语句1等:一条:;结束(复合):不用3执行过程:算出()里的值,去找对应的case,若找到就执行其后语句一直到,若找不到,再去找default,若找到执行其后语句一直到,找不到什么也不执行。4若碰到break,可提前结束switch的执行。,程序,#includemain()int x;scanf(%d,switch语句 格式:switch(表达式)case 常量表达式1:语句1 case 常量表达式n:语句n default:语句n+1 1switch、case 和default是关键字2语句1等:一条:;结束(复合):不用3执行过程:算出()里的值,去找对应的case,若找到就执行其后语句一直到,若找不到,再去找default,若找到执行其后语句一直到,找不到什么也不执行。4若碰到break,可提前结束switch的执行。,程序,#includemain()int x;scanf(%d,#includemain()int a=2,b=-1,c=2;if(ab)if(b0)c=0;else c=c+1;else c=c+3;printf(%d,c);,while语句 while(表达式)循环体 1while是关键字 2循环体:一条:以;作为结束 1 多条(复合):以为开始 为结束 3执行过程:只要表达式为真,执行循环体,直到表达式为假为止.4结束循环:表达式补集,程序,#includemain()int i=0,sum=0;while(i=5)sum=sum+i;i=i+1;printf(和:%dn,sum);,do-while语句 do 循环体 while(表达式);1do、while都是关键字2循环体:一条:以;作为结束 1 多条(复合):以为开始 为结束3执行过程:首先执行循环体,然后判断表达式,如果表达式为真,执行循环体,直到表达式为假为止.,程序,#includemain()int i=0,sum=0;dosum=sum+i;i=i+1;while(i=5);printf(“和:%dn,sum);,for语句格式:for(表达式1;表达式2;表达式3)循环体1for关键字2循环体:一条:以;作为结束 1 多条(复合):以为开始 为结束3执行过程:先执行表达式1,再判断表达式2,真就去执行循环体,然后执行表达式3,再去判断,直到为假退出循环。(表达式的补集退出循环),程序,#includemain()int i,sum=0;for(i=0;i=5;i+)sum=sum+i;printf(和:%dn,sum);,#includemain()int x;scanf(%d,#includemain()int i,j,n=0;for(i=1;i=3;i+)for(j=1;j=3;j+)n+;printf(循环了%d次,n);,break和continue的应用,continue:提前结束本次循环1 do-while和while的循环体中遇到continue,立刻转去执行表达式,如果表达式为真,继续循环体,如果表达式为假,结束循环。2 for的循环体中遇到continue,立刻转去执行表达式3,执行完表达式3,立刻执行表达式2,如果表达式2为真,继续执行循环体,如果表达式为假,结束循环。break:提前终止本层循环一句话概括:continue结束本次循环,break结束一层循环。,例如,#includemain()int sum=0,i;for(i=1;i=3;i+)if(i=2)break;sum=sum+i;printf(sum=%d,sum);,1.2+4+6+8+10+12的和值以及平均值2.对100以内所有奇数的和值和偶数的平均值3.输入一个实型数据x,求其整数部分和小数部分 15.23 15 0.234.1-1/2-1/3-1/4-1/55.1-1/2+1/3-1/4+1/5-1/66.求100以内的所有素数(只能被1和它本身除开的数字),Your Advice is welcome,Successs ahead!,下周再见,