




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、for(循环变量起点;持续循环条件;每次循环变量增量)循环操作for(i=0;i10;i+)循环操作0 1 2 3 4 5 6 7 8 910falseture循环体外的程序注意,每次循环体内语句执行结束后,才对循环变量增量i每次的增量值,也称之为步长(循环条件成立?循环操作的程序体truefalse设置循环变量的初值循环变量增值for(i=0;i0;i-=5)循环操作10 5 0falseture循环体外的程序i增量步长= -5起点=10自41班中有10名同学自愿献血,因为要求献血的年龄必须大于20岁,已知报名组年龄数据是19,18,19,20,21,18,20,20,19,20,我们从中挑
2、出年龄大于等于20岁的同学数目,并输出到屏幕。int main()int x=0, age0=19,age1=18,age2=19,age3=20,age4=21, age5=18,age6=20,age7=20,age8=19,age9=20; if(age0=20)x+; if(age1=20)x+; if(age2=20)x+; if(age3=20)x+; if(age4=20)x+; if(age5=20)x+; if(age6=20)x+; if(age7=20)x+; if(age8=20)x+; if(age9=20)x+; coutx= xendl; return(0);部分
3、和的初值=0定义10个年龄变量,并赋初值逐个检验10个年龄变量的数值,满足条件者,部分和加一功能满足了,但是程序结构太差!类似用循环结构处理重复操作语句一样,我们这里是否可以采用循环结构?可是仔细看看每条语句,它们的操作是否完全相同?形式类似,但是操作的对象-变量是不同的,需要分别检验10个对象,无法采用for语句。能否把10个变量综合成一个对象?输出部分和,它是满足大于20岁条件的同学个数。同类型的变量、聚集在一起,称为串它是载体20000 1 2345 620022004200C内存是数据的载体多个相关联的字符类型的数据一串整型数连续的在内存中排列称为整数数组数组的第一个数据所在的地址,叫
4、数组的地址这个整型数组表述为:0,1,2,3,4,5,6该数组变量声明为:int array20;其中:array是数组变量名;起始地址在2000单元;连续可用 个字节;实际占用了 字节。array1440它和字符串的区别在哪里?对数组内的每个元素初始化赋值int age10=19,18,19,20,21,18,20,20,19,20;int x=0;for(i=0;i=20)x+;循环变量从0开始从i =10出口步长 =1i在这里表示什么?age是一个整型变量的数组,也就是说,有一组整型数据类型的变量连续的排列在一起。age0,age1, age2, age3,age4, age5, age
5、6,age7, age8,age9age0就是数组的第1个变量元素, age1就是数组的第2个变量元素, age9就是数组的第10个变量元素。 所以,i就是数组元素的下标。agei就是数组age的第i个元素定义了有10个元素变量的整型数组把10个年龄变量抽象成一个矢量,称之为数组。数据类型基本类型构造类型指针类型空类型整数型字符型实数型(浮点型)枚举型单精度双精度长整型短整型数组型结构体型共用体型图2.1 C语言数据类型布尔型(逻辑型)整型基本的数据类型构造类型由基本数据类型组合而成,简化了程序结构数组,就是由同一种基本数据类型变量顺序的排列而成。int s10;逻辑说明了一个名字为s的整型数
6、据类型的数组,长度为10计算机的内存s0123456789数组s占用的长度,顺序排列下标从零开始s0 s1 s2 s3 s4 s5 s6 s7s8 s9通过定义数组的方法,把同类型的一组变量说明成一个对象,通过下标变化,可以找到、并操作数组中的任何一个元素变量。编译后分配内存空间int main()int x=0,age10=19,18,19,20,21,18,20,20,19,20;for(int i=0;i=20)x+;coutx=x=20 x值加一计数age数组的10个元素中,有5个大于、等于20编程,求方程3x+7y=901的所有正整数解 y=(901-3*x)/7;显然x为整数且=0
7、)其次,(901-3*x)被7整除整除?意思是说 (901-3*x)模7的余数为零if(901-3*x) % 7=0)x是方程整数解符号“%”是求模运算x从0开始至300,遍历正整数数轴,可求得使(901-3*x)模7余数为零的所有正整数解for(i=0;i301;i+)if(901-3*i)%7=0)coutx=iendl;求模运算若余数为零它就是满足题意的解限定在一个范围之内已经学习过的运算符其余运算符将在例题中,按循序渐进的方式演示用法逻辑运算中最容易混淆的地方王萍年底发奖金,有三等奖级:7000元、5000元和3000元,她想用这笔钱买一个手机和MP3,她盘算着:如果奖金是7000元钱
8、,可以买一个SONY NW-MS11(128M,3000元)和三星T208(全中文双屏双频彩色屏幕16和弦铃声GPRS手机,3180元);如果奖金是5000元钱,可以买一个SONY NW-MS7(64M,2400元)和三星T108彩屏手机(2580元);如果奖金是3000元钱,她就只能买一个三星T108彩屏手机(2580元);很多时候一个任务需要一段程序语句来完成,即一个代码块。为此,使用花括弧将这个代码块封装在一起,从语句外部看来,就好像一条语句的作用,我们称之为复合语句。 int bonus,balance;char mobile20;char mp320;scanf(input you
9、bonus=%dn,&bonus);bonus=7000?strcpy(mp3,SONY NW-MS11);strcpy(moblie,SAMGSUNG T208);balance=7000-3000-3180;yesnobonus=5000?strcpy(mp3,SONY NW-MS7);strcpy(moblie,SAMGSUNG T108);balance=5000-2400-2580;yesnostrcpy(mp3,no money);strcpy(moblie,SAMGSUNG T108);balance=3000-2580;printf(mp3=%s,moblie=%sn,
10、mp3,moblie);printf(balance%dn,balance);exit复 合 语 句 问 题设置能买的MP3型号能买的手机型号余款每一步骤都需要一个代码段,使用复合语句,使得从if-else看过去,仍然相当于一条语句。int main(void)char mp320;int bonus,balance;char mobile20; printf(pleas bonus=); scanf(%d ,&bonus); if(bonus=7000)strcpy(mp3,SONY NW-MS11); strcpy(moblie,SAMGSUNG T208); balance=70
11、00-3000-3180; else if(bonus=5000)strcpy(mp3,SONY NW-MS7);strcpy(mobile,SAMGSUNG T108);balance=5000-2400-2580;elsestrcpy(mp3,no money);strcpy(mobile,SAMGSUNG T108);balance=3000-2580;printf(mp3=%s,moblie=%sn,mp3, mobile);printf(balance%dn,balance);return(0); 复合语句,从if语句看,这段程序相当于一条语句花括弧是成对的出现系工会供应月饼,同一种
12、类的七星伴月分别有紫金便利店、清华超市、月巢、宫颐府等,价钱分别是120元、90元、160元和220元,设从键盘输入店名,请检索其价格,并将店家、价格输出到屏幕。int main()char s40,s140=紫金便利店,s240=清华超市,s340=月巢,s440=宫颐府;int cost40=120,90,160,220;cout请输入厂家:s;if(strcmp(s,s1)=0)couts1,cost0endl;elseif(strcmp(s,s2)=0)couts2,cost1endl; else if(strcmp(s,s3)=0)couts3,cost2endl; else if(
13、strcmp(s,s4)=0)couts4,cost3endl; else couterrorendl; return(0);定义4个数组各店家对应的价格是紫金?是清华?是月巢?是宫颐府?都不是?那么输入错误这个程序结构是不是有些繁琐?因为有多个字符串,需要分别操作。如果有20家店,程序需要些多少行?店家名称和单价被分成两个数组,处理不便是否可以、或者如何引入循环来改善程序结构?struct cakechar name40; int cost; ;struct cake A4;逻辑说明一个名字为cake的结构类型计算机的内存cake中包含一个字符串name结构说明cake中还有一个整型变量说明
14、一个名字为A的数组A的类型是cake的结构类型通过定义结构的方法,把不同类型的一组变量说明成一个对象A0A1A2A3数组A占用的长度,顺序排列name40 costAname40 cost name40 cost name40 costcake结构类型数组A的每一个元素,包含有2个成员分量name,cost访问、操作结构元素分量的方法是:A,或者Ai.cost结构变量名成员分量名struct cake char name40; int cost;int main()struct cake A4= 紫金便利店,120,清华超市,90,月巢,160,宫颐府,220;char s20;c
15、out请输入厂家:s;for(int i=0;i4;i+)if(strcmp(s,A)=0)coutA,Ai.costendl;break;if(i=4)couterrorendl;return(0);结构体说明结构体名字cake结构中包含的数据变量说明一个名字为cake的结构类型一个类型为cake的结构数组A初始化数组的第一个元素第二个元素第三,四个元素操作结构数组A的第i个元素里的字符串name输出A的第i个元素里的字符串name输出A的第i个元素里的单价cost匹配之后退出for循环,break是退出语句i=4,说明程序没有经过break语句,匹配失败结构数组的作
16、用,与整型数组类似,把数据与循环结构,统一起来,成为程序设计的方法。struct studentcharnum20;charname40;char class40;int sex;char birthday20;char tel20;怎样在程序中说明这张表?首先定义结构类型studentstruct student A100;其次定义结构数组A0就是表的第一行,A1就是表的第2行,最大允许100条记录表示结构变量成员的一般形式是: 结构变量名. 成员名 A0A1A2A3A4这就是程序中处理表格的方法计算机语言与程序设计选课名单中有自动化系、土木系的同学,并且自动化系同学中还有留学生。请分析学号
17、与系别的关系,设计一个程序,要求如下三个功能入口:输入一个学号,给出他所属的系别,如果是自动化系的同学,请注明是否是留学生;输入系别检索信息(自动化系、土木系),给出该系的选课学生人数;输入“留学生”或“中国”,程序给出留学生选课人数或者是中国学生选课人数; struct studentchar name40; char code40; char Dept40; /封装数据cout1:检索系 2:某系选课人数 3:国籍k;k =1?输入学号检索系turek =2?输入系名检索选课人数turek =3?检索国籍tureexit可以用if-else语句,但多级嵌套使得程序结构不清晰cout1:检索
18、系 2:某系人数 3:国籍k;switch(k) case 1: coutendlstudent code?s; for(i=0;i10;i+)if(strcmp(s,arrayi.code)=0) coutarrayi.Dendl; break; case 2: x=0; coutendl自动化 or 土木?s; for(i=0;i10;i+)if(strcmp(s,arrayi.Dept)=0)x+; cout选课人数=xendl; break; case 3: x=0;coutendl留学生 or 中国?s; for(i=0;i10;i+)ch=arrayi.
19、code2; if(ch=W)x+; if(strcmp(s,留学生)=0)cout留学生数=xendl; else cout中国学生数=10-xendl; break;执行完毕,退出switch语句输入参数k=?若k=1若k=2若k=3根据参数值匹配关系,选择程序执行流向,是一种并列结构,比多级嵌套的结构清晰如果k参数值不是1,2,3,则程序不执行任何case语句菜单选项提示输入参数:2检索土木系还是自动化系的选课学生?输入土木系,得到该系的选课学生人数执行完毕,退出switch语句执行完毕,退出switch语句Switch语句体coutA:检索系 B:某系人数 C:国籍endl; swit
20、ch(ch=getche() case A: coutendlstudent code?s; for(i=0;i10;i+)if(strcmp(s,arrayi.code)=0) coutarrayi.Dendl; break; case B: x=0; coutendl自动化 or 土木?s; for(i=0;i10;i+)if(strcmp(s,arrayi.Dept)=0)x+; cout选课人数=xendl; break; case C: x=0;coutendl留学生 or 中国?s; for(i=0;i10;i+)ch=arrayi.code2; if(
21、ch=W)x+; if(strcmp(s,留学生)=0)cout留学生数=xendl; else cout中国学生数=10-xendl; break;输入参数也可以是ASCII码,一般用非缓冲输入形式若ch=A若ch=B若ch=C菜单选项提示输入参数:B输入土木系,得到该系的选课学生人数k1是一个常量表达式值KK=k1分支1K=k2分支2K=kn分支n若K匹配失败执行缺省语句项defaultbreakbreakbreakbreak出口语句段中的break语句,使程序跳出整个switch 语句。若没有缺省语句项,则程序直接退出k逐个与case的k1,k2,kn值比较;当k值与某个值ki相等时,称
22、之为配对,即执行其后的语句段。计算代数表达式值kcoutSD:检索系 SS:某系人数 SN:国籍c;switch(c) case SD: coutendlstudent code?s; for(i=0;i10;i+)if(strcmp(s,arrayi.code)=0) coutarrayi.Dendl; break; case SS: x=0; coutendl自动化 or 土木?s; for(i=0;i10;i+)if(strcmp(s,arrayi.Dept)=0)x+; cout选课人数=xendl; break; case SN: x=0;coutendl
23、留学生 or 中国?s; for(i=0;i10;i+)ch=arrayi.code2; if(ch=W)x+; if(strcmp(s,留学生)=0)cout留学生数=xendl; else cout中国学生数=10-xc ) cink; switch(k)case 1: break; case 2: break; case 3: break; 无需初值仅当c=E时结束循环每一次循环完毕,读取一个c值是否有更简洁的循环结构?while(c !=E) cink; switch(k)case 1: break; case 2: break; case 3: break; cinc; while()不用设置初值while()只有一个循环条件如果满足循环条件,则执行循环体若c =E执行循环体外的程序在while()的循环体内,设置循环条件while(持续循环条件)循环操作;循环条件设置;(循环条件成立?循环操作的程序体truefa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北鄂州市2024-2025学年普通高中毕业班质量检查语文试题含解析
- 山东省利津县联考2025届初三下学期九月份统一联考语文试题含解析
- 西安音乐学院《地球物理测井与生产测井》2023-2024学年第一学期期末试卷
- 厦门海洋职业技术学院《医药英文文献阅读与论文撰写》2023-2024学年第二学期期末试卷
- 淮北师范大学《影视动画灯光设计》2023-2024学年第一学期期末试卷
- 江西省赣州市大余县2025届初三下学期期末质量抽测生物试题含解析
- 环境污染治理与大数据应用考核试卷
- 卫生服务机构财务管理的考核试卷
- 碳排放减少与绿色生活方式考核试卷
- 果蔬销售终端服务技巧与礼仪考核试卷
- 2023年河南建筑职业技术学院单招综合素质考试笔试题库及答案解析
- 模具保养记录表
- 高考化学专题复习:探究“暖宝宝”的主要成分及发热原理
- 2022《义务教育数学课程标准(2022年版)》解读课件
- 小学生理财小知识主题班会精编ppt
- DBJ∕T 15-104-2015 预拌砂浆混凝土及制品企业试验室管理规范
- 互联网开放平台解决方案
- 腺样体肥大诊疗与腺样体切除术(概述、临床表现与危害、诊断、治疗及腺样体切除术)
- 贾宝玉形象分析PPT课件(PPT 30页)
- 建筑工程质量通病课件
- 阿坝州果蔬产业发展现状及展望
评论
0/150
提交评论