C语言程序设计案例教程(慕课版)全套课件_第1页
C语言程序设计案例教程(慕课版)全套课件_第2页
C语言程序设计案例教程(慕课版)全套课件_第3页
C语言程序设计案例教程(慕课版)全套课件_第4页
C语言程序设计案例教程(慕课版)全套课件_第5页
已阅读5页,还剩807页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

01搭建C语言环境.pptx02C语言基础.pptx03C语言核心技术.pptx04C语言常用的算法案例.pptx05模拟ATM机界面程序.ppt06单词背记闯关.ppt07学生成绩管理系统.pptx08企业雇员管理系统.pptx09STU火车订票助手.ppt10手机通讯云管家.pptx11趣味俄罗斯方块游戏.pptx12防空大战游戏.pptxC语言的发展史程序语言简述机器语言BasicFortranALGOLCOBOLLISPPascalPROLOGCC++VCJavaVBC语言的历史丹尼斯•里奇(DennisRitchie)(KenThompson)肯•汤普逊C语言C语言MS-DOSMicrosoftWindowsLinuxC语言的特点主要内容高效性1灵活性2功能丰富3表达力强4移植性好5高效性访问物理地址可读性位、字节操作编写性复合,复合,复合灵活性C语言功能真多功能丰富想写什么程序尽管说表达能力强移植性好搭建C语言开发环境熟悉DevC++开发工具C语言基础

关键字关键字autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternunionreturnconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledowhilestaticif(VC6中关键字显示的效果)

标识符标识符的概念A_8名字不能放在第一位不能为关键字lastNamecountcount2MyCity_money有效命名COUNT无效命名2count汉字Count%static不能以数字开头非法字符关键字不允许汉字标识符命名举例我们不同建议标识符命名应直观、易懂建议标识符的命名不要太长建议常量所有字母应大写MaxValuezdzIsTemporaryValueTmpValue#defineMAX100;更直观更简洁更彰显标识符通用命名规则数据类型6101-116.1101.1-11.1“helloworld”整数浮点数字符串猜猜这是什么类型数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空间,而内存就像一个宾馆。请问需要单人间、双人间、四人麻将间还是总统套房呢?两个人就住双人间吧内存如何放数据类型与房间charshortintdouble单人间双人间四人麻将间总统套房内存空间旅店房间对应对应对应对应1字节2字节4字节8字节类型要知道的类型关

字类

型数的范围字

数short短整型-32768~32767即-215~215-12unsignedshort无符号短整型0~65535即0~216-12int整型-2147483648~2147483648即-231~231-14unsignedint无符号整型0~4294967295即0~232-14longint长整型-2147483648~2147483648即-231~231-14unsignedlong无符号长整型0~4294967295即0~232-14char字符-128~127即0~28-11float单精度-3.4e38~3.4e38即-3.4X1038~3.4X10384double双精度-1.7e308~1.7e308即-1.7X10308~1.7X103088整型浮点型字符型char香水上的字母int一个汽车有多少个零部件short筐中苹果的个数long宇宙中天体的个数float一杯橙汁有多少毫升double两个城市的距离果盘中的水果enum猜猜我是谁?charintshortlongfloatdoubleenum单精度短整型双精度字符整型长整型枚举关键字类型构造类型012345iArray[6];数组

structStudent{

charcName[20];

charcSex;

intiGrade;}student1={“HanXue”,“W”,3};结构体unionDataUnion{

intiInt;

charcChar;

floatfFloat;}variable;共用体指针类型&ip5i*p空类型void

put()

{

语句;}常常有这个字样常量r圆面积:S=π*r2固定不变常量什么是常量整型变量实型变量字符型变量整型常量数据类型长度取值范围unsignedshort16位0~65535signedshort16位-32768~32767unsignedint32位0~4294967295signedint32位-2147483648~2147483647signedlong64位-9223372036854775808~9223372036854775807整型常量八进制(每位取值0~7)十六进制(0~9以及A~F或a~f)0作为八进制的前缀0x或0X作为十六进制的前缀01601010127346096038×××0x160X2F0XFF0X3N9A056×××-2551024527-2724默认int类型11的二进制11取反11取反后加1整形数据存储方式1*20+1*21+0*22+1*23=11实型常量实型常量-255.12.10245.50.27-2724.21.2e20指数表示法1.2X1020

小数表示法默认double类型科学计数方式指数方式SciNum=134.521SciNum1=1.34521e2SciNum2=5.458e-11.34521*

102=134.5215.458*

10-1=0.5458字符型常量字符常量‘M’‘a’‘9’‘?’‘F’‘A’字符串常量“hello”“sunshine”“”“One”“A”单个字符“A”‘A’‘\0’=+(1)字符常量只能包括一个字符,不是字符串(2)字符常量是区分大小写的(3)字符常量是用单引号作为定界符转义字符转义字符意义ASCII值\n回车换行10\t横向跳到下一制表位置9\v竖向跳格0x0b\b退格8\r回车13\f走纸换页12\\反斜杠“\”47\'单引号符39\a鸣铃7\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符转义字符符号常量符号常量#definePAI3.14实例求圆的面积变量

房间名字

房间类型

入住的客人

变量名

变量类型

变量值对应为什么需要变量房间变量内存地址不好记,怎么办?内存就像旅馆,通过内存中房间的别名找到数据存储的位置。[C@60e128[D@60e123一个变量一个房间xyintshort一个字节5000050042“魔术盒子”变量=变量的声明inta=1;longb=2L;charc=‘X’;示例变量的值是可以更改的a=3;b=30000L;c=‘文’;更改变量的值数据类型变量名称=变量值语法整数变量整型变量longstarNumber=99876543;intpartNumber=96789;shortapple=26;宇宙中有多少个天体?一个汽车有多少个零部件一个箩筐有多少个苹果年龄shortage=18;intage=18;或者整数的四种声明类型byteshortintlong单人间双人间四人麻将间总统套房内存空间旅店房间取值范围:-128-127取值范围:-32768-32767取值范围:-2147483648-2147483647取值范围:-9223372036854775808-9223372036854775807对应1字节2字节4字节8字节shortintlongShort值总是可以装进int或者long中Long值可能装不进int或者short中longa=123456789*987654321;整数的默认类型默认是int

型123+456计算结果是int值longa=123456789L*987654321L;实型变量浮点类型变量doubledistance=12299876543.8;A市和B市的距离floatvolum=211.3f;一杯果汁有多少毫升浮点数的两种声明类型floatdouble四人麻将间总统套房内存空间旅店房间取值范围:1.4E-45-3.4028235E38取值范围:4.9E-324-1.7976931348623157E308对应4字节8字节创建浮点类型变量floata=1.1F;floata=1.1F,b=-2.4f;示例doublea=3.1415926;doublea=3.1415926,b=-123.00005;doublec1=1.1D,c2=1.2d,c3=1.3;float修饰的值必须加F或者f后缀double修饰的值可以加D、d后缀或者什么后缀都不加默认类型!根据身高和体重计算BMI值输出数学圆周率的值字符型变量使用char关键字定义字符,并且字符只能用单引号括起来的单个字符charch1=‘m’;语法字符类型变量char

ch2=‘a’;char

ch3=‘g’;char

ch4=‘i’;char

ch5=‘c’;‘M’‘5’‘男’‘bool’‘5.2’“ch”×××检查下面这些是否是合法的字符×字符变量值在内存中存储的是字符的ASCII码,即一个无符号的整数,所以允许字符数据进行算术运算charch1=‘b’-’a’;char

ch2=‘c’+1;char

ch3=‘a’-32;古怪的整型DecHex字符6541A6642B………905AZ………976Aa986Bb………1227Az1‘d’‘A’性别charsex=‘M’;(M:男F:女)如何给char变量赋值单引号?这还不简单?写三个单引号不就行了。chara=‘’’;这位同学你错了,如果出现三个单引号,编译器就不知道从哪开始,从哪结束,肯定会报错啊。用转义字符\’变量存储类别auto变量

static变量register变量extern变量auto变量修饰一个局部变量是自动的auto变量auto变量static变量static变量

将始终保持它的值,初始化只在第一次执行时起作用static变量停车场还剩多少停车位register变量register变量可以提高运行的速度register变量entern变量extern变量将要用到但尚未定义的外部变量extern变量混合运算混合运算10+'a'-1.5+3.2*6肿么办运算符与表达式表达式5+5表达式表达式表达式表达式返回结果表达式放在赋值语句的右侧放在函数的参数中赋值运算符不要混淆“=”和“==”===我是赋值我是恒等Wearenotthesame赋值运算符=量值做读取操作,可以是常量、公式做写的操作,被赋予等号右侧的值变量赋初值语法变量赋初值类型变量名=常数/表达式intiInt=1314;示例int是类型iInt是变量名1314是常数将一个常数或者一个表达式的结果赋值给一个变量赋值运算符示例k=i+j;5=k;finalintval=5;inti=1,j=2,k=3;

i=6;i+j=k;变量=表达式变量=常数不能赋值给常量右值不能被赋值定义整型变量i、j、k定义整型常量vala=b=c=5;变量=变量=变量=常量实例模拟钟点工的计费数据类型转换“勿以小杯盛大物”不同的类型占用的内存空间不同byteintlongbyte<int<long两种转换方式

自动转换强制转换自动类型转换自动类型转换byteshortintlongfloatdoublechar自动转换的兼容顺序图bytea=8;intb=a;longc=b;doubled=c;示例强制类型转换强制类型转换(类型名)要转换的值语法inta=100;byteb=(byte)a;示例强制转换导致精度损失floatf=(float)3.1415926;inti=(int)f;byteb=(byte)129;数据失准小数点丢失数值越界溢出算术运算符算术运算符符号功能符号功能+单目正%取模-单目负+加法*乘法-减法/除法

算术运算符7%4=3示例运算符“-”作为减法运算符,此时为双目运算符,如5-3。“-”也可作负值运算符,此时为单目运算,如-5等!其中的单目正运算符是冗余的,也就是为了与单目负运算符构成一对而存在的。单目正运算符不会改变任何数值算术表达式(+)一元正号+100(+)加法运算符x+y(-)一元负号-100(-)减法运算符x-y加法与减法运算符乘法、除法和取余运算符(*)乘法运算符inta=3*4;(/)除法运算符intb=16/8;(%)取余运算符doublec=12.4%5.2;使用除法运算符与取余运算符,0不能做除数!2==5/21==5%2优先级与结合性算术运算符的优先级*

、/、%>+、-R=x+y*z示例如果表达式中有括号,那要先计算括号里面的表达式,因为括号在运算符中的优先级别是最高的算术运算符的结合性a-b+c示例自左向右自增自减运算符自增和自减运算符自增运算符自减运算符语法++a--a前置形式a++a--后置形式a+1a-1计算的结果(a+b)++--(x+y)单目运算符不可以放在圆括号之外。b=a++;b=++a;b=a;a=a+1;a=a+1;b=a;前置与后置的区别关系运算符关系运算符符号功能符号功能>

大于<=小于等于>=大于等于==等于<

小于!=不等于符号“>=”(大于等于)与“<=”(小于等于)的意思分别是大于或等于、小于或等于关系表达式不要串接使用关系运算符数学中连续小于:a<b<cC语言中这么写可以吗?C语言中的写法:a<b&&b<c如何同时使用多个关系运算符?逻辑运算符,表示“并且”关系表达式真1假0YESno关系表达式

7<=5

7!=57>=57>5

7<57==5真真假假假真优先性和结合性if(Number=NewNum!=10){…}优先性和结合性if((Number=NewNum)!=10){…}判断一个数是奇数还是偶数提示:偶数可以被2整除。奇数无法被2整除,且余数肯定是1。逻辑运算符运算符含义&&逻辑与||逻辑或

!逻辑非逻辑运算符逻辑与运算符“&&”和逻辑或运算符“||”都是双目运算符逻辑表达式逻辑运算的结果1&&1==11&&0==00&&0==01||1==11||0==10||0==0!1==0

!0==1

0&&……&&……当0结果一定为1||……||……当1结果一定为C语言中“1”代表“真”;“0”代表“假”优先级与结合性优先性和结合性优先级!>&&>||结合性自左向右位逻辑运算符位逻辑运算符运算符含义举例&位逻辑与a&b|位逻辑或a|b~取反~a^位逻辑非a^b位逻辑运算符位逻辑表达式位逻辑表达式if(Field&BITMASK){

语句块;}位逻辑运算结果ABA&BA|BA^B~A000001100110010111111100逗号运算符与表达式Value=

2+5,1+2,5+7;结果为7Value=(2+5,1+2,5+7);结果为12想一想为什么都是“逗号”惹的祸语法表达式1,表达式2,…,表达式n逗号运算符和表达式实例计算a=b+c,b*a,c-b复合赋值运算符+=+=x=x+y;x+=y;复合运算符效果运算符说明举例等价效果+=相加结果赋予左侧a+=b;a=a+b;-=相减结果赋予左侧a-=b;a=a–b;*=相乘结果赋予左侧a*=b;a=a*b;/=相除结果赋予左侧a/=b;a=a/b;%=取余结果赋予左侧a%=b;a=a%b;&=与结果赋予左侧a&=b;a=a&b;|=或结果赋予左侧a|=b;a=a|b;^=异或结果赋予左侧a^=b;a=a^b;<<=左移结果赋予左侧a<<=b;a=a<<b;>>=右移结果赋予左侧a>>=b;a=a>>b;>>>=无符号右移结果赋予左侧a>>>=b;a=a>>>b;复合赋值运算符复合赋值运算符的优势与劣势优势a=a+2;a+=2;

在没有进行强制转换的条件下,a+1的结果是一个int值,无法直接赋给一个byte变量。

创建一个变量bytea=1;让a的值加2。想一想复合运算符可以自动完成类型转换。复合赋值运算符的优势与劣势劣势

创建一个变量a,让a等于一个复杂公式的结果。想一想a=(2+3-4)*92/6;a+=2;a+=3;a-=4;a*=92;a/=6;简洁易读冗长复合赋值运算符计算顺序自右向左选择结构程序设计if语句决策:就是人们为某件事拿主意,下决心做出合理的选择的过程决策分支到达终点,流程结束01if语句02if

…else语句03elseif语句04switch语句if语句形式流程图表达式语句下一条语句真假if(表达式){

语句;}语法1if(表达式)

语句;语法2if语句的用法if(中了500W){

账户有500W;

买豪车;}该吃饭吃饭该睡觉睡觉;流程图500W?账户有500W买豪车吃饭,睡觉真假if语句的范例流程图模拟到银行取钱的场景。code==404328输出可以取钱输出密码真假if(中了500W);{

账户有500W;

买豪车;}if(中了500W)

账户有500W;

买豪车;if(表达式)后面多加分号没加大括号{}if…else语句公司战略面临的选择if…else语句流程图表达式语句1语句2真假if(表达式){

语句1;}else{

语句2;}语法if..else语句的用法举例if(中了500W)买豪车;else买自行车;该吃饭吃饭该睡觉睡觉;真假流程图500W?买豪车买自行车吃饭睡觉流程图真假num<=8安排相应座位餐桌豪华包房选择餐桌就餐if(中了500W)if(今天到账)

今天买豪车;else买自行车;语句加大括号{}else(没中500W)else不能单独使用,必须和关键字if一起出现。买自行车;判断何年是闰年商品竞猜游戏if…elseif语句遇到多种选择的情况怎么办?语法if(表达式1){

语句1;}elseif(表达式2){

语句2;…}elseif(表达式m){语句m;}else{语句n;}if...elseif语句

流程图表达式1表达式2…表达式m语句1语句2…语句m语句n真真真真假假假假举例>=500200~50050~2000~50兰博基尼卡宴奔驰奥迪再接再厉真真真假假假假设计过关类游戏老师测试同学的立体感和反应速度if语句的嵌套判断语句中还有判断语句if(表达式1){ if(表达式2)

语句1; else

语句2;}嵌套语句if(表达式1){ if(表达式2)

语句1; else

语句2;}else{ if(表达式3)

语句4; else

语句5;}多重嵌套语句每天在做什么“时间去哪儿啦”条件运算符条件运算符返回值=判断公式?结果1:

结果2;语法一个返回真/假值的公式如果公式返回的是“真”,运算符结算返回结果1如果公式返回的是“假”,运算符结算返回结果2inta=1;intb=a<3?2:3;示例示例等价于:inta=1;if(a<3){b=2;}else{b=3;}条件运算符返回值=判断公式?结果1:

结果2;intb=a<3?2:3;示例

a<3?2:3;?switch语句的基本形式9988776655ExcellentVerygoodgoodpassfail一般形式switch(表达式){case常量表达式1:

语句1;

break;case常量表达式2:

语句2;

break;

…case常量表达式n:

语句n;

break;

default:

语句n+1;

break;}表达式是一个算术表达式,需要计算出表达式的值,该值应该是一个整型数或是一个字符。switch语句expr=表达式1expr=表达式2

…expr=表达式ndefaultswitch(expr)语句1语句2…

语句n语句n+1真真真真假假假假实例根据输入字符来判断该成绩所对应的等级。A:优秀

B:良好

C:及格

D:不及格多路开关模式想一想switch(用于判断的参数){case常量表达式1:语句1;break;case常量表达式2:case常量表达式3:语句2;break;

......case常量表达式n:语句n;break;

default:语句n+1;break;将break去掉之后,会怎么样?这就是switch多路开关模式判断某个月份属于哪个季节switch和if的比较if语句switch语句判断的类型真/假值整型值、字符或字符串使用的场景判断关系表达式判断逻辑表达式判断浮点值多整数值判断多字符串值判断switchifswitchif生活中的场景1.2

循环语句饿了吗?吃包子吧!体力值=20;吃包子;在满足条件下(包子>0),重复的做这件事:包子=8;体力值+10;包子少一个;876543210没有了,别吃了体力值=20;包子=8;入口出口要满足条件(包子>0)吃包子;包子-1;体力值+10体力值=100;包子=0;while语句少年高斯(1777年4月30日~1855年2月23日)1+2+3+……+100=50501+100=1012+99=101...50+51=101101X50=5050while语法格式:while(表达式

)

{

语句;}while关系或逻辑饿了吃包子体力值=20;包子=8;满足条件(包子>0){

吃包子;

包子减少一个;

体力+10;}while(i>0)printf(“吃包子\n”);i--;Strength+=10;intstrength=20;inti=8;printfPK少年高斯使用while循环计算从1到100的累加。初始条件:i=1;sum=0;循环条件:i<=100循环体:sum=sum+i;i++;三个注意1.表达式不允许为空2.非0为真,0为假3.循环体中必须有改变条件表达式值的语句,否则将成为死循环。while(0){...}while(1){...}inti=1;while(i<=2){ printf(“%d\n”,i);}无限循环永不循环死循环do…while语句上帝创世的秘密61perfect*2*31+2+3==完数do…whiledo…….while语法格式:do{

语句;}while(表达式);

关系或逻辑上帝创世的秘密谁和“6”一样完美?--1000以内的完数Pk少年高斯1.控制循环的变量—2~10002.求一个数的因子3.因子的和=这个数本身五个注意1.表达式不允许为空2.非0为真,0为假3.循环体中必须有改变条件表达式值的语句,否则将成为死循环。4.如果循环条件不成立,循环体已经执行一次了。5.注意循环语句后要有分号“;”。与while的注意事项相同whiledo…whileVS可能从未被执行至少执行一次inti=0;intstrength=20;while(i>0){ printf("吃包子"); i--; strength+=10;

}printf(""现在体力值是%d\n",strength);inti=0;intstrength=20;do{

printf("吃包子"); i--; strength+=10;

}while(i>0);printf(""现在体力值是%d\n",strength);whiledo…whileVS不符合条件不符合条件不执行执行一次strength=20strength=30for语句百钱买百鸡=5元=3元100个

=?+?母鸡+?小鸡=1元100元=?+?母鸡+?小鸡for

循环for

循环语法格式:for(表达式1;表达式2;表达式3){

语句;}赋值关系赋值百钱买百鸡Pk少年高斯0~200~330~99总钱数100总个数100小鸡数必须是3的整数倍for循环的变体for循环可以省略表达式for循环的变体省略表达式1省略表达式2省略表达式3无限循环无限循环intsum=0;inti=0;//将循环控制变量拿到循环语句外声明并赋初值

for(;i<=10;i++){ sum+=i;}

printf(“%d”,sum);省略表达式1intsum=0;inti

;

for(i=0;;i++){ sum+=i;}

printf(“%d”,sum);省略表达式2while(1){...}省略表达式3intsum=0;inti;//赋初值

for(i=0

;i<=10;){ sum+=i; i++;//改变循环变量}

printf(“%d”,sum);for语句中的逗号应用逗号应用for(i=0,j=1;j<100;j++){ i=i+j;}

for(j=1;j<100;j++,j++){ i=i+j;}

for(j=1;j<100;j+2)3种循环语句的比较3种循环比较inti=1;intsum=0;do{sum+=i;i++;}while(i<=100);inti=1;intsum=0;while(i<=100){sum+=i;i++;}intsum=0;inti;for(i=1;i<=100;i++){sum+=i;}printf(“%d\n”,sum);循环嵌套互相嵌套while循环do…while循环for循环while(…){while(…){……}}while(…){for(…){……}}do{while(…){……}}while(…);for(…){do{……}while(…);}循环嵌套的执行顺序for(inta=1;a<=2;a++){printf(“%d\n”,a);

for(intb=1;b<=3;b++){printf(“%d\n”,b);}}12345先从外面进入把里面的执行完再出去678循环嵌套实例打印九九乘法表转移语句break语句1continue语句2goto语句3break语句情景一8个牛肉包子,吃啊吃,吃到第5个包子的时候,发现是素馅的,没胃口了,不想吃了!情景二8个牛肉包子,吃啊吃,吃到第5个包子的时候,发现是素馅的,跳过素馅的包子,继续接着吃!continue语句中断循环跳出本次循环,执行下一次循环goto语句goto

标号;inti=1;intstrength=20;label:

i++; strength+=10;if(i<=8)

goto

label;12345678910普通for循环for(inti=1;i<=10;i++){

printf(“%d\n”,i);}12345678910for循环中有判断for(inti=1;i<=10;i++){

if(i%2==0){

printf(“%d\n”,i);}}12345678910for循环中有continuefor(inti=1;i<=10;i++){

if(i%2==0){

continue;}

printf(“%d\n”,i);}输出输出输出输出输出12for循环中有breakfor(inti=1;i<=10;i++){

if(i%2==0){

break;}

printf(“%d\n”,i);}345678910循环结束了!输出数组一群小鸡住酒店4只小鸡住酒店2000H80C2H60A2H1002H一个一个的去定房间100只小鸡住酒店50B0H8CA2H……7065H1002H一个一个的去定房间?崩溃崩溃100只小鸡住酒店组团定制房间小鸡战队2000H2004H204CH2250H……申请了一块连续的房间0号1号98号99号……统计班级学生的数学成绩intscore1;intscore2;intscore3;intscore4;intscore5;……此处省略567个字100个学生肿么办?数组来解决!!!程序结构庞大,机械重复一维数组1、2、3、4、5整型数组1.1、2.1、3.1、4.1、5.1浮点型数组A、B、C、D、E、F字符数组“张三”、”李四”、”王五”字符串数组常见的一维数组创建一维数组数组元素类型数组名字[常量表达式];语法inta[10];数组名方括号数组长度注意inti=5;inta[i];inti=5;inti[2]={1,2};只能是常量表达式重名一维数组引用的一般格式:数组名[下标]举例:inta[5]; a[0]a[1]a[2]a[3]a[4]a[5]a[0]=1;a[4]=2;12一维数组的引用一维数组初始化一维数组初始化数值初始化:就是给数组赋初值。inta[3]={1,2,3}a[0]=1; a[1]=2; a[2]=3;第一个元素从0开始inta[6]={1,2,3}inta[]={1,2,3,4,5}只给一部分元素赋值不指定数组长度赋初值三种初始化方法132745arr[3];arr[0]=13;arr[1]=27;arr[2]=45;内存中的数组intarr[3]={13,27,45}arr[0]=13; arr[1]=27; arr[2]=45;第一个元素从0开始第三个元素的索引是2,不是3intarr[3]={13,27,45};intarr[]={13,27,45};132745arr[3];arr[0]=13;arr[1]=27;arr[2]=45;内存中的数组int[3]={5,1,7};intarr[3]={5,1,7};charch[]={‘a’,’b’,’c’};ch[3]=‘c’;abc0123?语法错误下标越界下标从0开始一维数组应用示例012345将数组隔位输出intindex; intiArray[6]={0,1,2,3,4,5};for(index=0;index<6;index+=2){printf("%d\n",iArray[index]);}iArray[6];iArray[0];iArray[2];iArray[4];二维数组abc什么是二维数组?123789456数组a数组b数组c一维数组二维数组数组x什么是二维数组?行列数组元素类型数组名字[常量表达式1][常量表达式2];语法创建二维数组inta[3][4];长度=3*4a[0]a[1]a[2]首元素inta[3,4];inta[3:4];二维数组初始化inttdarr1[2][2]={1,2,3,4};二维数组的初始化inttdarr2[][3]={1,2,3,4,5,6};inttdarr3[2][3]={{1,2,3},{4,5,6}};二维数组的四种初始化方法inttdarr4[2][3];tdarr4[0][0]=1;tdarr4[0][1]=2;二维数组两个下标inta[3][4];a[0][0]=0;a[1][2]=1;inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};010列1列2列3列0行1行2行注意若定义二维数组时不进行初始化,则每一维的长度都不能省略。如下列均不合法:inta[][4];inta[3][];inta[][];二维数组应用将二维数组行列对换123425782595127834252595字符数组创建字符数组char数组名字[常量表达式];语法charpWord[11];单一赋值:pWord[0]=‘H’;pWord[1]=‘E’;聚合赋值:charpWord[12]={'H','E','L','L','O'};charpWord[12];pWord={'H','E','L','L','O'};字符数组引用字符数组初始化字符数组初始化charcArray[5]={‘H’,’e’,’l’,’l’,’o’};charcArray[]={‘H’,’e’,’l’,’l’,’o’};charcArray[]={“Hello”};三种初始化方法逐个字符赋给数组中个元素省略数组长度利用字符串赋值charcArray[]=“Hello”;或a[]内存中的字符数组chara[]=“Hello”;Hello\0\0是C编译系统自动加上的chara[]={‘H’,’e’,’l’,’l’,’o’,’\0’};相当于chara[5]={‘H’,’e’,’l’,’l’,’o’};这种写法也是合法的字符数组的结束标志使用字符串为字符数组赋值:chara[]=“hello";‘\0’=stophello\0字符串开端字符串结束数组长度》>》实际长度字符数组的输入和输出字符数组输入输出int

iIndex; char

cArray[12]="MingRiKeJi";for(iIndex=0;iIndex<12;iIndex++){

printf("%c",cArray[iIndex]);}printf("\n%s\n",cArray);

逐个输出字符数组中的字符直接将字符串输出字符数组应用统计单词个数ILOVECHINA一共几个单词多维数组多维数组的声明和二维数组相同,只是下标更多。其一般格式如下:数据类型数组名[常量表达式1][常量表达式2]…[常量表达式n];举例:intiArray1[3][4][5];intiArray2[4][5][7][8];多维数组多维数组一维数组bytea[1];二维数组shortb[2][2];三维数组intc[3][4][5];四维数组chard[6][7][8][9];五维数组doublee[10][11][12][13][14];数组的排序2冒泡法排序选择法排序1交换法排序3插入法排序4折半法排序5选择排序打擂台领奖台冠军打擂台12345初始数组资源【63 4 24 1 3 15】

第一趟排序后【15 4 24 1 3】 63第二趟排序后【15 4 3 1】 24 63第三趟排序后【1 4 3】 15 24 63第四趟排序后【1 3】 4 15 24 63第五趟排序后【1】 3 4 15 24 63选择排序的过程冒泡排序冒泡排序气泡在水中向上涌数据在数组中不断的向前移动初始数组资源【9 6 15 4 2】

第一趟排序后2【9 6 15 4】

第二趟排序后2 4 【9 6 15】

第三趟排序后2 4 6 【9 15】

第四趟排序后2

4 6 9

【15】

冒泡排序的过程交换法排序交换法排序的过程起始值961542第一次

291564第二次241596第三次246159第四次246915-691542491562插入法排序插入法排序的过程元素【0】元素【1】元素【2】元素【3】元素【4】起始值961542第一次9第二次69第三次6915第四次46915第五次2469156比9小,插入到9前面15比9大,插入到9后面4比6小,插入到6前面2比4小,插入到4前面从小到大排序折半法排序折半法排序的过程起始值961542第一次962415第二次624915第三次246915中间值中间值-排序算法的比较

选择法排序冒泡法排序交换法排序插入法排序折半法排序

优点选择法排序在排序过程中共需进行n(n-1)/2次比较,互相交换n-1次。选择法排序简单、容易实现,适用于数量较小的排序最好的情况是正序,因此只要比较一次即可;最坏的情况是逆序,需要比较n2次。冒泡法排序是稳定的排序方法,当待排序列有序时,效果比较好交换法排序和冒泡法排序类似,正序时最快,逆序时最慢,排列有序数据时效果最好此算法需要经过n-1次插入过程,如果数据恰好应该插入到序列的最后端,则不需要移动数据,可节省时间,因此若原始数据基本有序,此算法具有较快的运算速度折半法排序对于较大的n时,是速度最快的排序算法;但当n很小时,此方法往往比其他排序算法还要慢。折半法排序是不稳定的,对应有相同关键字的记录,排序后的结果可能会颠倒次序字符串处理函数字符串都用到哪些地方了呢?C语言中的字符串charch1=‘A’charch2=‘MingRi’但是……创建字符charstring[]=“MingRi”;字符串复制馒头店的故事馒头一文一个十壹复制字符串壹将字符串复制strcpy

(目的字符数组名,源字符数组名)语法charstr[]=“馒头一文一个”;strcpy(“一”,”壹”);示例忘记密码怎么办?重新设置密码strcpy

(原来的密码,新设置密码)语法charstr1[]=“abc67463878”;charstr2[]=“26478632aaa”;strcpy(str1,str2);示例字符串连接有些文字不是固定的内容“奥巴马,您好”“赵二蛋,您好”“王小二,您好”变量常量连接两个字符串字符串的连接使用“strcat函数”可实现连接字符串的功能。语法strcat(目的字符数组名,源字符数组名)字符串的连接charstr1[20]=“Ming”;charstr2[20]=“Ri”;strcat(str1,str2);运行结果MingRi字符串比较如何判断字符串内容是否相等strcmp(字符数组名1,字符数组名2);语法返回值如下:字符串1=字符串2,返回值为0。字符串1>字符串2,返回值为正数。字符串1<字符串2,返回值为负数。被比较的字符串字符串大小写转换strupr();strlwr();大小写转换strupr(字符串);语法charstr[20]="abcDEF";

strupr(str);

strlwr(str);示例strlwr(字符串);语法将字符串变成大写:将字符串变成小写:获取字符串长度我们注册qq账户的时候,可以看见有这样一条提示:注册账号时碰到的问题

“12345678”什么是字符串的长度长度为8如何获取字符串长度strlen(字符数组名)语法intnum;charpassword[20]="1234567890";num=strlen(password);示例反转输出字符串将字符串反转RKJMKRMJ函数函数的概述

数学中的函数什么是函数?汽车厂商制造汽车车轮车厢底盘发动机ABCD分工与合作

为什么需要函数提高效率,减少重复编写程序的工作量。一个较大的程序不可能完全由一个人完成,更不可能把所有代码放在一个主函数中。函数的定义的形式这是小孩儿这是公鸡这是猎豹世间万物皆定义函数定义函数就是能够实现特定功能的程序模块。1.main函数,主函数,所有程序运行的入口。是由系统调用。其实已经知道2.库函数,别人写好的存放在库里的库函数。还不知道的是用户自定义函数DIY函数一般形式类型标识符函数名(形式参数列表){

语句(怎么做);}类型说明符:用来标识函数的返回值类型。Eg:int,double…函数名:“见名知意,常用取简”形参列表:各种类型变量组成的列表,各个参数用逗号间隔。函数体函数的定义榨汁(水果)果汁{}将橙子打碎20分钟。。。返回一个杯果汁函数的定义与声明函数定义语法返回值类型

函数名(参数列表){

函数体(函数实现特定功能的过程);}无参函数语法返回值类型函数名(){

函数体}voidShowTime() {printf("It'stimetoshowyourself!");}示例空函数语法返回值类型函数名(){

}voidShowTime() {

}示例函数声明语法返回值类型

函数名(参数列表);无返回值函数无返回值函数voidShowNumber(intiNumber) {

printf("d\n",iNumber);}常常有这个字样返回值函数returnintAdd(intx,inty){return(x+y);}表达式类型必须与函数的返回值类型相同,或者是能够隐式转换成函数的返回值类型的类型。有返回值函数

[返回值类型]函数名

(参数列表){

函数体

return

返回值;}

函数的返回值1.如果有返回值,一定要使用return关键字返回相应类型的数据。2.return会强制中断方法。intsum(){

return0;}凡是可以用来创建函数的类型,都可以被返回方法返回一个int值NeedToKnow1.函数返回值类型和函数定义中的类型应一致,如果不一致,以函数类型为准。intSetIndex(intx){return5.2;}类型不一致时,自动进行类型转换,如果是不可转换的类型,则程序报错。2.不返回函数值的函数,可以明确定义为“空类型”,标识符为“void”。voidShowMessage(){printf(“明日科技\n”);}函数参数

函数的参数intadd(intx,inty){x=x+y;//对x进行加y操作

returnx;//返回x}参数值参数数组参数指针参数参数的种类1.参数可以有多个,不限类型2.每一个参数都必须声明参数类型3.调用方法时,注意参数的顺序形式参数和实际参数Intfunction(inta,intb);Voidmain(){intsum;sum=function(3,4);}Intfunction(inta,intb){returna+b;}形参形参形参形参实参实参形式参数与实际参数形式参数与实际参数按照名称进行理解就是形式上存在的参数在定义函数时,函数名后面括号中的变量名称为“形式参数”。形式参数按照名称进行理解就是实际存在的参数函数的调用者提供给函数的参数叫实际参数。实际参数数组作函数参数数组作函数参数数组名作为函数参数可变长度数组作为函数参数指针数组名作为函数参数voidDisplay(intiArrayName[10]){

int

i;

for(i=0;i<10;i++){printf("themembernumberis%d\n",iArrayName[i]);}}数组名作函数参数可变长度数组作为函数参数可变长度数组作函数参数运行结果使用指针作为函数的参数voidFunction(int*pPoint);

/*声明函数*/intiArray[10];

/*定义整型数组*/Function(iArray); /*将数组名作为实参进行传递*/

main函数的参数main函数的参数main(intargc,char*argv[])语法argc参数保存命令行的参数个数,是整型变量。2.argv参数是一个指向字符指针数组的指针,这个数组中的每一个元素都指向命令行实参。函数调用上网聊天听音乐打游戏看视频当菜板照相3G上网充电函数调用嵌套调用递归调用函数调用方式函数调用的方式函数语句调用把函数作为参数使用

表达式中调用函数

嵌套调用嵌套调用总裁经理职员目标上述嵌套关系总裁经理经理职员职员目标主要代码实现intmain(){ CEO();

return0;}void

CEO(){ printf("TheCEO'sworkingistellingManager\n"); Manager();}void

Manager(){

printf("TheManager'sworking'sworkistellingAssistantManager\n"); AssistantManager();}void

AssistantManager(){

printf("TheAssistantManager'sworkistellingClerk\n"); Clerk();}void

Clerk(){ printf("TheClerk'sworkismakingit\n");}

递归调用递归调用-汉诺塔问题ABC汉诺塔问题ABC汉诺塔问题ABC(1)把A上的n-1个圆盘移动在B上(2)把A上的一个圆盘移动在C上(3)把B上的n-1个圆盘移到C上内部函数内部函数好处内部函数语法static返回值类型

函数名(参数列表);内部函数静态函数staticchar*name(char*str1);

外部函数外部函数语法extern返回值类型

函数名(参数列表);externintAdd(intNum1,intNum2);示例变量作用域局部变量这里iNumber2和iNumber3就是局部变量在语句块内声明的变量仅在该语句块内部起作用,当然也包括嵌套在其中的子语句块。如果在函数内定义一个变量,那么这个变量被称为局部变量int

iNumber1=1;if(iNumber1>0){

int

iNumber2=2;

if(iNumber2>0){

intiNumber3=3;printf("%d%d%d\n",iNumber1,iNumber2,iNumber3);

}}

局部变量的有效范围局部变量的有效范围变量的作用域声明结束有效范围两个人同名怎么区分?我叫钢镚儿我也叫钢镚儿一班二班不同区域的同名变量局部变量的屏蔽作用全局变量全局变量定义全局变量一个变量在所有函数的外部声明,就是全局变量。

函数应用数学库函数abs函数:整数的绝对值函数labs函数:长整数的绝对值函数fabs函数:返回浮点数的绝对值函数数学库函数sin函数:正弦函数cos函数:余弦函数tan函数:正切函数字符分类函数isalpha函数:检测字母大写或小写isdigit函数:检测数字isalnum函数:检测字母或数字指针什么是指针还有房间吗?有,双人间房间号有:201,322,509,请问住哪间?

地址与指针

地址与指针变量与指针

变量与指针&ip5i*p指针变量指针变量语法类型说明*变量名int*p示例指针变量指针变量的两种赋值方法inta;int*p=&a;inta;int*p;p=&a;&变量名;一般形式定义指针变量的同时就进行赋值先定义指针变量之后再赋值注意这两种赋值语句的区别,如果在定义完指针变量之后再赋值注意不要加“*”。指针变量的引用语法*指针变量*p示例&和*运算符例如p=&i;例如q=*p;“&*”与“*&”的区别例如inta;p=&a;指针的自增自减指针自加自减运算什么情况指针自加自减运算一维数组与指针一维数组与指针例如int*p,a[10];p=a;例如int*p,a[10];p=&a[0];一维数组与指针示例一维数组与指针二维数组与指针二维数组与指针二维数组与指针&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址a+n表示第n行的首地址*(*(a+n)+m)表示第n行第m列元素*(a[n]+m)表示第n行第m列元素字符串与指针字符串与指针例如char*string=“hellomingri”;char*string;string="hellomingri";输出Adayisaminiatureofeternity利用指针实现字符串连接字符串数组字符串数组语法类型名*数组名[数组长度]char*month[]={"January","February","March","April","May",

"June","July","August","September","October","November","December"};

示例指向指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论