《基本控制结构与导出数据类型.ppt》由会员分享,可在线阅读,更多相关《基本控制结构与导出数据类型.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022-9-51现在学习的是第1页,共52页 2022-9-52现在学习的是第2页,共52页 高级语言高级语言C+程序设计程序设计 第第 4 章章 基本控制结构与导出数据类型基本控制结构与导出数据类型 2022-9-53现在学习的是第3页,共52页.2022-9-54现在学习的是第4页,共52页 C+语句语句(1)赋值与表达式语句赋值与表达式语句i+;a=10;(2)变量声明语句变量声明语句int a,b,;char str80;(3)函数调用语句函数调用语句printf(“a+b=%d”,a+b);(4)程序控制语句程序控制语句if-else for(;)while()(5)复合语句复合语
2、句 语句语句1;语句;语句2;.语句语句n;(6)其它语句其它语句 文件包含语句文件包含语句#include 宏定义语句宏定义语句#define PI3.1415926 函数声明语句函数声明语句int fun(int,int);自定义类型语句自定义类型语句typedef float REAL(7)空语句空语句;2022-9-55现在学习的是第5页,共52页 程序控制语句程序控制语句(1)分支语句分支语句 if(x=60)if(x=0)if(x=90&x=80&x=70&x=60&x 70)n4+;else n5+;2022-9-56现在学习的是第6页,共52页(2)switch语句语句【例例】
3、switch(x/10)case 10:case 9:printf(“成绩优秀成绩优秀.“);break;case 8:printf(“成绩良好成绩良好.“);break;case 7:printf(“成绩中等成绩中等.“);break;case 6:printf(“成绩及格成绩及格.“);break;default :printf(“成绩不及格成绩不及格.“);2022-9-57现在学习的是第7页,共52页(3)for 语句语句【格式格式】for(表达式表达式1;表达式;表达式2;表达式表达式3)语句语句;【例例】#include main()int i,n,x;n=0;for(i=1;i=
4、30;i+)cout x;if(x=60)n+;coutn;2022-9-58现在学习的是第8页,共52页(4)while语句语句#includeusing namespace std;void main()int n=0;char str80=Abc+mNp-xyZ;cout str=a&strn=z?strn-a+A:strn;cout strendl;2022-9-59现在学习的是第9页,共52页(5)dowhile语句语句#includeusing namespace std;main()int x,n1=0,n2=0;do coutx;if(x=60)n1+;else n2+;whi
5、le(x=0);coutPassed:n1 No passed:n2-1 endl;2022-9-510现在学习的是第10页,共52页(6)break 语句语句 功能功能:强制结束当前的循环,或结束:强制结束当前的循环,或结束switch语句。语句。格式格式:break;【例例】switch(整数或字符常量表达式整数或字符常量表达式)case 常量表达式常量表达式1:语句语句1;【break;】case 常量表达式常量表达式2:语句语句2;【break;】.case 常量表达式常量表达式n:语句语句n;【break;】default:语句语句n+1;2022-9-511现在学习的是第11页,共
6、52页(7)continue;功能功能:跳过:跳过continue后面的语句,继续下一轮循环。后面的语句,继续下一轮循环。格式格式:continue;【例例】输出数组中的正数。输出数组中的正数。#includevoid main()int a6=2,5,-6,4,-9,10,i;for(i=0;i6;i+)if(ai 0)continue;cout ai ;2022-9-512现在学习的是第12页,共52页 (8)return 语句语句功能功能:将函数的运算结果返回到调用函数。将函数的运算结果返回到调用函数。格式格式:return 表达式表达式;或或 return (表达式表达式);【例例】#
7、includefloat temp(float c)float f;f=(9.0/5)*c+32;return f;void main()float c;cinc;couttemp(c);2022-9-513现在学习的是第13页,共52页一一.数组的主要特征数组的主要特征 1.数组下标从数组下标从 0 开始,至(下标上界开始,至(下标上界 减减1););2.一维数组从下标一维数组从下标 0 开始依次排列;二维数组按先行后列方式依次排列;开始依次排列;二维数组按先行后列方式依次排列;3.数组名为数组第一个数组元素数组名为数组第一个数组元素a0或或 b00的地址的地址,可以代替指针使用可以代替指针
8、使用,如:如:*(a+i)相当于相当于 ai.4.利用下标变量可以逐一地引用数组元素利用下标变量可以逐一地引用数组元素,但不能对整个数组操作但不能对整个数组操作;5.便于循环处理:便于循环处理:for(i=0;i10;i+)cin ai;-输入输入for(i=0;i10;i+)coutai “”;-输出输出二二.数组的主要用法数组的主要用法一维数组一维数组:统计同一类数据:最大值,最小值,平均值,总和,排序统计同一类数据:最大值,最小值,平均值,总和,排序.字符处理:大小写字母的转换,逆序排列,字符串复制,字符处理:大小写字母的转换,逆序排列,字符串复制,.二维数组二维数组:矩阵的处理;矩阵的
9、处理;班级多门成绩的统计:班级多门成绩的统计:2022-9-514现在学习的是第14页,共52页 数组数组-指由若干相同类型的数据按一定顺序指由若干相同类型的数据按一定顺序组成的数据集,使用一个数组名和下标唯一地确定组成的数据集,使用一个数组名和下标唯一地确定数组中的某一个数组元素。数组中的某一个数组元素。一一.一维数组的定义一维数组的定义格式:格式:数据类型名数据类型名 数组名数组名长度长度 ;功能:按指定数据类型,定义若干数据为一个数组,分功能:按指定数据类型,定义若干数据为一个数组,分 别为:别为:数组名数组名0,数组名数组名1,数组名数组名2,.数组名数组名长度长度-1,例:例:int
10、 a10;char s1100;a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 2022-9-515现在学习的是第15页,共52页 1.一维数组的初始化一维数组的初始化-在定义的同时为数组元素赋值。在定义的同时为数组元素赋值。格式:格式:数据类型数据类型 数组名数组名下标上界下标上界=初值表初值表 ;方式方式1:对全部数组元素赋初值对全部数组元素赋初值 例:例:int a10=0,1,2,3,4,5,6,7,8,9;方式方式2:省略数组下标,省略数组下标,对全部数组元素赋初值对全部数组元素赋初值 例:例:int a =0,1,2,3,4,5 ;(相当于相当于 i
11、nt a6)方式方式3:全部初值为全部初值为 0.例:例:int a10=0;方式方式4:对部分数组元素赋初值对部分数组元素赋初值,其余为其余为 0.例:例:int a10=0,1,2,3 ;2.一维数组元素的引用一维数组元素的引用1.引用格式:引用格式:数组名数组名 下标下标 (下标为整型表达式,取值下标为整型表达式,取值 0 长度长度-1 )2022-9-516现在学习的是第16页,共52页2.一般一维数组处理方式一般一维数组处理方式-单循环方式单循环方式 (1)输入数组元素值输入数组元素值for(i=0;i N-1;i+)cin ai ;(2)输出数组元素值输出数组元素值for(i=0;
12、i N-1;i+)cout ai “”;3.一维数组程序设计举例一维数组程序设计举例【例例】从键盘输入从键盘输入10个字符,然后按相反方向输出。个字符,然后按相反方向输出。#include using namespace std;void main()char a10;int i;for(i=0;i ai;for(i=9;i=0;i-)cout ai“”;2022-9-517现在学习的是第17页,共52页【例【例5-6】求斐波那契数列中前】求斐波那契数列中前20个元素个元素.#include#includeusing namespace std;void main()/数组的应用数组的应用in
13、t fibonaci20=0,1;coutsetw(6)fibonaci0setw(6)fibonaci1;for(int n=2;n20;n+)fibonacin=fibonacin-2+fibonacin-1;if(n%5=0)coutendl;coutsetw(6)fibonacinsetw(6);cout endl;输出结果:输出结果:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 41812022-9-518现在学习的是第18页,共52页二二.二维数组二维数组1.二维数组的定义二维数组的定义 格式:格式:数据类型数
14、据类型 数组名数组名行下标上界行下标上界 列下标上界列下标上界;0行行 例:例:int a3 5;功能:定义一个功能:定义一个 3 行行 5 列的整型数据类型的二维数组。列的整型数据类型的二维数组。(行下标和列下标都从(行下标和列下标都从 0 开始。)开始。)二维数组元素以先行后列的次序排列。二维数组元素以先行后列的次序排列。(如图所示如图所示)2.二维数组数组元素的初始化二维数组数组元素的初始化 格式:格式:数据类型数据类型 数组名数组名行下标上界行下标上界 列下标上界列下标上界 1行行=行初值表行初值表1,行初值表行初值表2,.;(1)全部元素赋初值全部元素赋初值 分行方式分行方式 int
15、 a23=1,2,3,4,5,6 ;不分行方式不分行方式 2行行int a23=1,2,3,4,5,6 ;省略行下标方式省略行下标方式int a 3=1,2,3,4,5,6 ;a0 0a0 1a0 2a0 3a0 4a1 0a1 1a1 2a1 3a1 4a2 0a2 1a2 2a2 3a2 42022-9-519现在学习的是第19页,共52页(2)部分元素赋初值部分元素赋初值-其余为其余为 0 只为每行前几个元素赋值只为每行前几个元素赋值 int a23=1,4,5 ;或:或:int a 3=1,4,5 ;/*行下标可以省略行下标可以省略 */只为前几行的前几个元素赋值只为前几行的前几个元素
16、赋值 int a23=1,2 ;3.二维数组元素的引用二维数组元素的引用 引用格式:引用格式:数组名数组名行下标行下标 列下标列下标 4.二维数组程序设计举例二维数组程序设计举例【例例5-12】矩阵转置矩阵转置 1 2 3 1 4 A矩阵:矩阵:4 5 6 B矩阵矩阵 2 5 3 6 基本算法:基本算法:bij =aji;/*行变为列,列变为行行变为列,列变为行 */2022-9-520现在学习的是第20页,共52页程序:程序:void main()int a23,b32,i,j;for(i=0;i2;i+)for(j=0;jaij;/赋值赋值 for(i=0;i3;i+)for(j=0;j2
17、;j+)bij=aji;/*矩阵转置矩阵转置*/for(i=0;i3;i+)for(j=0;j2;j+)cout setw(8)bij ;/*输出矩阵输出矩阵*/coutendl;2022-9-521现在学习的是第21页,共52页 数组名即数组的首地址;指针即地址!数组名即数组的首地址;指针即地址!-指向一维数组的指针变量的使用指向一维数组的指针变量的使用 1.定义指向一维数组的指针变量:定义指向一维数组的指针变量:格式:格式:数据类型数据类型 *指针变量指针变量=一维数组名;一维数组名;例:例:int a10,*p=a;/相当于相当于 p=&a0;(或者在程序中为指针赋值:或者在程序中为指针
18、赋值:p=a;)2.一维数组元素的引用一维数组元素的引用(1)下标法:下标法:pi 或或 ai(2)指针法:指针法:*(p+i)或或 *(a+i)/数组名是地址常量!故数组名是地址常量!故 a+,P=&a非法!非法!3.指向一维数组的指针变量的运算指向一维数组的指针变量的运算(1)指针变量和整数的运算指针变量和整数的运算 指针变量指针变量+整数整数 n -相当于指针向后移动了相当于指针向后移动了n个数组元素的位置个数组元素的位置 指针变量指针变量-整数整数 n -相当于指针向前移动了相当于指针向前移动了n个数组元素的位置个数组元素的位置 指针变量指针变量+-先用指针的值,然后向后移动了先用指针
19、的值,然后向后移动了 1 个数组元素的位置个数组元素的位置 指针变量指针变量-先用指针的值,然后向前移动了先用指针的值,然后向前移动了 1 个数组元素的位置个数组元素的位置 +指针变量指针变量-指针向后移动了指针向后移动了 1 个数组元素的位置个数组元素的位置 -指针变量指针变量 -指针向前移动了指针向前移动了 1 个数组元素的位置个数组元素的位置4.3.2 4.3.2 数组与指针的关系数组与指针的关系 2022-9-522现在学习的是第22页,共52页【例【例5-7】/使用数组名作指针的例子使用数组名作指针的例子#includeusing namespace std;void main()i
20、nt a=1,2,3,4,5;*(a+4)=34;for(int i=0;i5;i+)cout“ai:”ai“或或*(a+i):*(a+i)endl;coutendl;运行结果:运行结果:ai:1 或或*(a+i)1/即可用下标方式,也可用指针方式即可用下标方式,也可用指针方式 ai:2 或或*(a+i)2 ai:3 或或*(a+i)3 ai:4 或或*(a+i)4 ai:34 或或*(a+i)34 2022-9-523现在学习的是第23页,共52页【例【例5-8】/数组与指针的关系数组与指针的关系#includeusing namespace std;void main()int a=1,2
21、,3,4,5,*p=a;for(int i=0;i5;i+)/演示演示3 种输出方式种输出方式coutai *(a+i)*(p+i);coutendla,pendl;/演示演示a 即数组即数组地址地址for(int i=0;i5;i+)/演示指针使用下标演示指针使用下标coutpi ;for(;pa+5;+p)/演示从演示从a0 开始输出至开始输出至a4cout*p=a;-p)/演示从演示从a4 开始输出至开始输出至a0cout*p ;coutendl;输出结果:输出结果:1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 0012FF6C,0012FF6C 1 2 3 4 5 1 2
22、 3 4 5 1 2 3 4 52022-9-524现在学习的是第24页,共52页一一.字符数组字符数组定义格式:定义格式:char 数组名数组名 长度长度 =初值表初值表 ;举例:举例:char ch3=a,b,0 ;二二.应用举例应用举例【例例5-17】从键盘输入一行字符,将其中小写字母改为大写字母,然从键盘输入一行字符,将其中小写字母改为大写字母,然后逆向输出。后逆向输出。设计思想设计思想:(1)小写字母小写字母 ch 的识别的识别 方法:方法:if(a=ch&ch=z).(2)将小写字母将小写字母 ch 改为大写字母改为大写字母方法方法1:ch-=32;方法方法2:利用字符处理函数利用
23、字符处理函数 ch=toupper(ch);程序设计:程序设计:4.3.3 4.3.3 一维字符串一维字符串数组数组 2022-9-525现在学习的是第25页,共52页#include#includeusing namespace std;void main()char a40;int i,n;cin a;n=strlen(a);for(i=0;in;i+)if(a=ai&ai=z)ai-=32;for(i=0;in;i+)coutai;cout字符串名字符串名;(2)字符串输入函数字符串输入函数gets(字符串名字符串名);(注意二者区别注意二者区别)3.字符串复制函数字符串复制函数strc
24、py(str1,str2);/*将将str2复制到复制到 str1*/strncpy(str1,str2,n);/*将将str2的前的前n 个字符复制到个字符复制到 str1*/4.字符串输出字符串输出 (1)coutstr);(2)字符串行输出字符串行输出 puts(str);(输出字符串后自动换行输出字符串后自动换行)2022-9-527现在学习的是第27页,共52页5.指针与字符串指针与字符串-用指针可以显示部分字符串,也可以访问串中的某一个字符用指针可以显示部分字符串,也可以访问串中的某一个字符.(1)指向字符串的指针的初始化指向字符串的指针的初始化方式方式1:char s100=“1
25、234567890”,*p=s;方式方式2:char *p=“1234567890”;方式方式3:char *p;p=“1234567890”;(2)访问字符串中的单个字符访问字符串中的单个字符 或或 部分字符串部分字符串例:例:int i;char s11=“1234567890”,*p=s;for(i=0;i10;i+)cout*(p+i);cout p+i endl;输出结果是:输出结果是:2022-9-528现在学习的是第28页,共52页【例例5-21】将输入的字符串将输入的字符串 s1 复制到字符串复制到字符串 s2 中。中。#include using namespace std;
26、#include void main()char s1100,s2100;int i=0;cin s1;while(s1i!=0)s2i=s1i;i+;s2i=0;couts1endls2 str2 返回值返回值 0 -str1=str2 负整数负整数 -str1 str2 格式格式2:strncmp(str1,str2,n);-只比较前只比较前 n 个字符。个字符。6.字符串连接函数字符串连接函数strcat(str1,str2);-将两个字符串连接起来,存入字符串将两个字符串连接起来,存入字符串 str1.2022-9-530现在学习的是第30页,共52页五五.字符数组程序设计举例字符数组
27、程序设计举例1.将一字符串中的小写字母改成大写字母。将一字符串中的小写字母改成大写字母。#includeusing namespace std;main()int i=0;char str80;cin str;while(stri!=0)/*第一空第一空*/if(a=stri&stri=z)/*第二空第二空*/stri-=a +A;i+;/*第三空第三空*/coutstrendl;2022-9-531现在学习的是第31页,共52页2.从键盘输入一个字符串(长度小于从键盘输入一个字符串(长度小于80),统计该字符串的长度并输出。),统计该字符串的长度并输出。#includeusing names
28、pace std;void main()char s80;int n,i;cin _;/*第一空第一空*/i=0,n=0;/*第二空第二空*/while(si+!=0)n+;/*第三空第三空*/cout n p;-输入字符串输入字符串cout p;-输出字符串输出字符串(2)处理字符串中的单个字符处理字符串中的单个字符 char *p=“abcdefgh”;while(*p)*p -=32;p+;2022-9-535现在学习的是第35页,共52页3.指向存放字符串的字符数组的指针变量的使用指向存放字符串的字符数组的指针变量的使用(1)定义定义 char s100,*p=s;(2)引用字符数组元
29、素引用字符数组元素 *(p+i)(i 相当于下标相当于下标)应用举例:应用举例:2008年年(上上)31 题:将从键盘输入的字符串逆序显示出来题:将从键盘输入的字符串逆序显示出来.#includeusing namespace std;#include/用于用于gets(str)void main()int n;char str80,*p;cout=str)cout*p;/*第三空第三空*/p-coutendl;2022-9-536现在学习的是第36页,共52页三三.应用举例:应用举例:1:设:设 static int a3=1,2,3;int*p =&a0,&a1,&a2;则与数组元素则与数
30、组元素a1等价的是等价的是 ()A.*p1 B.p1 C.*p+1 D.P+1 2:设:设 double*p6;则则 p 是是()A.指向指向double型的指针型的指针 B.Double型数组型数组C.指针数组指针数组 D.数组指针数组指针2022-9-537现在学习的是第37页,共52页.2022-9-538现在学习的是第38页,共52页.2022-9-539现在学习的是第39页,共52页.2022-9-540现在学习的是第40页,共52页#include/预处理部分预处理部分./全局变量说明部分全局变量说明部分main()/主函数主函数 变量定义部分;变量定义部分;/*如:如:int a
31、,b;float x,y;char ch,str100;*/数据处理部分;数据处理部分;/*如:如:cin a b;cout a+b;*/函数类型函数类型 函数名函数名(形式参数表形式参数表)变量定义部分;变量定义部分;/*如:如:int a,b;float x,y;char ch,str100;*/数据处理部分;数据处理部分;return 返回值;返回值;C+结构化程序设计结构结构化程序设计结构 2022-9-541现在学习的是第41页,共52页.2022-9-542现在学习的是第42页,共52页.2022-9-543现在学习的是第43页,共52页.2022-9-544现在学习的是第44页,共52页.2022-9-545现在学习的是第45页,共52页.2022-9-546现在学习的是第46页,共52页.2022-9-547现在学习的是第47页,共52页.2022-9-548现在学习的是第48页,共52页.2022-9-549现在学习的是第49页,共52页.2022-9-550现在学习的是第50页,共52页 2022-9-551现在学习的是第51页,共52页 2022-9-552现在学习的是第52页,共52页