版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
必与你同行—顺序结构程序设计C语言程序设计第三章本章目录01.程序设计概述02.简单编程的好助手03.数据输出语句04.数据输入语句05.复合语句和空语句06.顺序结构程序设计07.趣味实例3.1程序设计概述了解程序设计的基本步骤、算法的概念和结构化程序设计思想程序设计的基本步骤需求分析明确需求、输入与输出,这是设计的第一步,也是最关键的一步。算法设计构思解决问题的具体方法和步骤,形成指令的有限序列。编码实现使用编程语言(如C语言)将设计好的算法转换为计算机可执行的代码。测试与调试运行并检查语法与逻辑错误,反复修改直到得到预期结果。整理文档(补充内容)编写说明文档,记录功能、使用方法及设计思路,方便维护。核心流程总结:需求分析→算法设计→编码实现→测试与调试→整理文档算法程序公式数据结构+算法=程序算法vs程序算法抽象的逻辑思想,解决问题的步骤。程序具体的代码实现,算法的物理载体。算法算法是对特定问题求解步骤的一种描述,是指令的有限序列。简单来说,算法就是解决问题的方法和步骤。结构化程序设计和模块化结构结构化设计原则自顶向下逐步细化模块化设计结构化编码三大基本结构顺序结构选择结构(分支)循环结构设计优势逻辑清晰待开发软件划分为若干独立模块易于维护模块工作单纯明确。可靠性高为较大软件打好基础。实例体验:最原始方法:步骤1:先求1×2,得到结果2。步骤2:将步骤1得到的乘积2乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。例3-1求1×2×3×4×5。改进的算法:步骤1:使t=1。步骤2:使i=2。步骤3:使t×i,乘积仍然放在变量t中,可表示为t×i→t。步骤4:使i的值+1,即i+1→i。步骤5:如果i≤5,返回重新执行步骤3以及其后的步骤4和步骤5;否则,算法结束。实例体验:如果n表示第i个学生学号,n〔i〕表示第i个学生学号,g表示第i个学生成绩,g〔i〕表示第i个学生成绩,则算法可表示如下:步骤1:1→i。步骤2:如果g〔i〕≥80,则打印n〔i〕和g〔i〕,否则不打印。步骤3:i+1→i。步骤4:若i≤50,返回步骤2,否则,结束。例3-2有50个学生,要求将成绩在80分以上的学号和成绩打印出来。实例体验:闰年的条件:①能被4整除,但不能被100整除的年份;②能被100整除,又能被400整除的年份。设y为被检测的年份,则算法可表示如下:步骤1:2000→y。步骤2:若y不能被4整除,则输出“y年不是闰年”,然后转到步骤6。步骤3:若y能被4整除,不能被100整除,则输出“y年是闰年”,然后转到步骤6。步骤4:若y能被100整除,又能被400整除,输出“y年是闰年”,否则输出“y年不是闰年”,然后转到步骤6。步骤5:输出“y年不是闰年”。步骤6:y+1→y。步骤7:当y≤2500时,返回步骤2继续执行,否则结束。例3-3判定2000~2500年中的每一年是否是闰年,将结果输出。3.2简单编程的好助手—流程图学习如何用流程图来描述算法流程图的基本组成元素流程图是用规定的图形、连线和文字说明来表示算法步骤的工具,能够直观展示逻辑流程。起止框(椭圆)表示算法的开始或结束,位于流程的首尾。输入输出框(平行四边形)表示数据的输入或运算结果的输出。处理框(矩形)表示对数据进行的具体处理或运算步骤。判断框(菱形)根据给定条件进行判断,并决定执行路径。流程线与连接点箭头表示执行方向,圆圈用于连接不同位置的流程线。三种基本结构的流程图表示顺序结构特点:各操作步骤按顺序依次执行,流程线单向连接,无分支。选择结构(分支)特点:根据条件P是否成立,选择执行路径A或B,形成逻辑分支。循环结构特点:包括当型(While)和直到型(Do-While),在条件满足时重复执行循环体。实例体验:例3-4有50个学生,要求将成绩在80分以上的学号和成绩输出。流程图如图3-7所示。实例体验:例3-5判断2000—2500年中的每一年是否为闰年并将结果输出。流程图如图3-8所示。3.3数据输出语句掌握putchar和printf函数的使用,实现数据的格式化输出字符输出函数putchar书写形式putchar(c);功能与参数功能:向标准输出设备(显示器)输出一个字符。参数c:可以是字符常量、变量或ASCII码值。代码示例与运行结果#include<stdio.h>main(){charch='A';putchar(ch);//输出'A'putchar('B');//输出'B'putchar(67);//输出ASCII67->'C'putchar('\n');//换行putchar('D');//输出'D'}运行结果:ABCD格式化输出函数printf(一)——常用格式控制书写形式printf(“输出格式串”,表达式列表);常用格式说明符%d:十进制整数%f:浮点数%c:单个字符%s:字符串%x:十六进制%o:八进制代码实战演示#include<stdio.h>main(){inta=100;floatb=3.14;charc='A';printf("整数:%d\n",a);printf("浮点数:%f\n",b);printf("字符:%c\n",c);printf("十六进制:%x\n",a);}功能与参数功能:向标准输出设备输出任意类型数据。参数:输出格式串为格式控制字符串,表达式列表为指定输出的数据。格式化输出函数printf(二)——进阶格式控制宽度与对齐
•宽度:%5d表示占5字符宽度,不足补空格•左对齐:%-5d(默认右对齐,使用'-'号改为左对齐)精度控制•浮点数:%.2f表示保留2位小数(如3.14)•组合使用:%8.2f表示总宽8字符,保留2位小数特殊标志
•+:强制显示正负号(如%+d输出+123)•0:用0填充宽度(如%05d输出00123)代码实战演示#include<stdio.h>main(){inta=123;//整数示例floatb=3.1415926f;//浮点数示例printf("默认输出:%d,%f\n",a,b);printf("宽度5右对齐:%5d\n",a);printf("宽度5左对齐:%-5d\n",a);printf("保留2位小数:%.2f\n",b);printf("显示正负号:%+d,%+f\n",a,b);}实例体验:#include<stdio.h>main(){chara='B',b='o',c='k';
putchar(a);
putchar(b);
putchar(b);
putchar(c);
putchar('\t');
putchar(a);
putchar(b);
putchar('\n');
putchar(b);
putchar(c);}例3-6输出单个字符。例3-7格式输出。#include<stdio.h>main(){inta=88,b=89;floatd=2.7;printf("%d%d\n",a,b);//输出的a、b值之间有一个空格printf("%d,%d\n",a,b); //输出的a、b值之间有一个逗号printf("%c,%c\n",a,b); //按字符型输出a、b值printf("a=%d,b=%d\n",a,b);//增加了非格式字符串a=、b=printf("d=%6.2f\n",d); //输出数据宽度为6,保留两位小数//点,右对齐,不足6位左边补空格printf("d=%e\n",d); //按科学记数法输出} 3.4数据输入语句掌握getchar和scanf函数的使用,实现从键盘获取数据字符输入函数getchar书写形式getchar();常用形式:变量=getchar();功能与参数从标准输入设备(键盘)读取一个字符。无参数。注意事项会读取输入缓冲区中的回车符(\n),混合使用时需注意清空缓冲区。代码示例与运行结果#include<stdio.h>main(){charc;printf("Inputacharacter:");c=getchar();//读取字符putchar(c);}运行结果:Inputacharacter:AA格式化输入函数scanf(一)书写形式与功能形式:scanf(“输入格式串”,地址列表);功能:从标准输入读取数据,按格式存储到指定的变量中。关键参数解析输入格式串:格式控制字符串(%d,%f,%c,%s)地址列表:变量的地址0(必须使用取地址符&)避坑指南(补充)变量前必须加&(取地址符),否则程序崩溃。输入多数据时,用空格/回车/Tab分隔。代码实战:多类型输入演示#include<stdio.h>main(){inta;floatb;charc;printf("请输入整数:");scanf("%d",&a);//注意&符号printf("请输入浮点数:");scanf("%f",&b);printf("请输入字符:");scanf("%c",&c);//空格跳过换行printf("整数:%d,浮点数:%f,字符:%c\n",a,b,c);}格式化输入函数scanf(二)普通字符必须原样输入若格式串含普通字符,输入时需严格匹配,否则读取失败。示例:scanf("a=%d,b=%f",&a,&b)输入:a=10,b=3.14输入缓冲区与%c的陷阱(补充)%d会跳过空白符,但%c不会,可能读取到残留的换行符'\n'。解决方案:在%c前加空格,主动跳过空白符。正确写法:scanf("%c",&ch);代码示例:缓冲区处理#include<stdio.h>main(){inta;charch;printf("请输入整数:");scanf("%d",&a);//输入10后按回车,//残留\nprintf("请输入字符:");//scanf("%c",&ch);//错误:读取到\nscanf("%c",&ch);//正确:跳过空白符printf("a=%d,ch='%c'\n",a,ch);}实例体验:#include<stdio.h>main(){charc;printf("inputacharacter\n");c=getchar();putchar(c);}例3-8输入单个字符。例3-9scanf()函数一般形式示例。#include<stdio.h>main(){inta,b,c;printf("inputa,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);}实例体验:例3-10输入三个小写字母,输出其ASCII码和对应的大写字母。#include<stdio.h>main(){chara,b,c;printf("inputcharactera,b,c\n");scanf("%c%c%c",&a,&b,&c);printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);}3.5复合语句与空语句理解复合语句和空语句的概念及用法复合语句定义与语法用一对花括号{}将若干个语句括起来形成的整体,也称为“语句块”或分程序。{语句1;语句2;...;语句n;}特点复合语句内,可以有定义部分,定义部分出现在可执行语句的前面。语法等价于单一语句,支持多层嵌套。(补充)定义了局部作用域:内部变量仅在块内有效。代码示例:作用域演示(补充)#include<stdio.h>main(){inta=10;//外部变量printf("外部a=%d\n",a);{//复合语句开始,新的作用域inta=20;//覆盖外部aintb=30;//局部变量bprintf("内部a=%d\n",a);}//复合语句结束,内部a和b销毁printf("外部a=%d\n",a);//恢复外部a的值}空语句定义与语法仅由一个分号“;”构成的语句,不执行任何操作,仅作为“占位符”。核心用途满足语法结构要求但逻辑无需操作时使用。在循环体内对程序起“延时”(消耗CPU时间或等待事件)作用。避坑指南警惕“if”/“for”后多余的分号,这会导致逻辑分离。例如:if(a>0);{...}//此处的花括号代码块将独立执行代码示例:循环延时与条件占位#include<stdio.h>main(){inti;printf("开始计数...\n");for(i=0;i<1000000;i++);//空循环体:消耗时间printf("结束!\n");if(5>0);//空语句占位,不做任何事}复合语句和空语句的使用。实例体验:例3-11复合语句和空语句的使用。#include<stdio.h>main(){inta=1;while(1){;//此语句为空语句,程序执行到此语句时不产生任何动作a++;//此行为空行if(a==10)break;}}3.6顺序结构程序设计通过具体实例,学习如何编写顺序结构的C语言程序实例:计算圆的周长和面积(补充)算法分析与思路问题描述:从键盘输入圆的半径,利用数学公式计算并输出圆的周长和面积。定义变量:半径(radius)、周长、面积及常量PI输入数据:通过scanf获取用户输入的半径值计算处理:周长=2πr,面积=πr²输出结果:格式化打印计算后的周长和面积C语言代码实现#include<stdio.h>#definePI3.14159main(){floatradius,perimeter,area;printf("请输入圆的半径:");scanf("%f",&radius);perimeter=2*PI*radius;area=PI*radius*radius;printf("周长:%.2f面积:%.2f\n",perimeter,area);}实例3-12:x=20.5,y=10.2,如何交换两个变量的值?问题描述已知x和y的值,求Z的值。核心算法定义变量x,y,zz=3x+5y-8进阶方法(无中间变量)(补充)算术运算:a=a+b;b=a-b;a=a-b;位运算:a^=b;b^=a;a^=b;(效率高)数学分析实例3-12:x=20.5,y=10.2,如何交换两个变量的值?流程图C语言代码实现#include<stdio.h>main(){intx,y,t;printf("请输入两个整数:");scanf("%f%f",&x,&y);printf("交换前:x=%f,y=%f\n",x,y);t=x;//第一步x=y;//第二步y=t;//第三步printf("交换后:x=%f,y=%f\n",x,y);}实例3-13:计算表达式:z=3x+5y-8。问题描述已知x和y的值,求Z的值。核心算法定义变量x,y,zz=3x+5y-8C语言代码实现#include<stdio.h>main(){intx,y,z;scanf("%d,%d",&x,&y);z=3*x+5*y-8;printf("%d",z);}流程图实例3-14:求ax2+bx+c=0方程的根,a、b、c由键盘输入,设b2-4ac>0。问题描述已知a,b,c的值,求方程的根。核心算法定义变量a,b,c,disc,p,q,x1,x2一元二次方程的求根公式C语言代码实现#include<math.h>#include<stdio.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}3.7趣味实例:数据的输入和输出通过趣味实例正确掌握顺序结构的编程趣味实例实训目的1.熟练掌握scanf()、printf()函数的语法格式,正确使用各种输入/输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年乌什县带编教师招聘考试参考题库及答案解析
- 2026年曹县带编教师招聘考试备考试题及答案解析
- 2026年建湖县带编教师招聘考试参考题库及答案解析
- 2026年肇源县带编教师招聘考试备考题库及答案解析
- 2026年海晏县带编教师招聘考试备考题库及答案解析
- 2026年永春县带编教师招聘笔试备考试题及答案解析
- 2026年洛扎县带编教师招聘考试模拟试题及答案解析
- 2026年天等县带编教师招聘考试模拟试题及答案解析
- 2026年高职单招综合素质测试真题试卷(含答案+详细解析)
- 吉水县园区开发建设有限公司及下属子公司2026年第二批面向社会公开招聘的笔试备考题库及答案详解
- 2026年国家药品监督管理局药品审评中心聘用制人员公开招聘14人(第二批)笔试参考题库及答案详解
- 第一章 特殊平行四边形 问题解决活动:作内嵌于正方形的正八边形 教学课件 初中数学北师大版 九年级上册
- (正式版)DB11∕T 850-2024 《建筑墙体用腻子施工及验收规程》
- 2026年中医科规培考试题库及完整答案
- 2026年辽宁省中考英语试题(含答案)
- 2026年秋季开学大学面试技巧生涯规划课件
- 新版2026年秋新版九年级上册道德与法治知识点全面梳理1合集
- 2026-2027学年第一学期青岛版新教材小学数学一年级上册教学计划及进度表
- 第1课《开天辟地的大事变》第二课时课件2026-2027学年统编版五年级上册道德与法治
- (高清版)DZT 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼
- 中建施工临时用电施工方案
评论
0/150
提交评论