




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章最简单的C程序设计顺序程序设计内容提要:C语句概述
基本的数据输入/输出函数简单的C程序设计著名计算机科学家沃思提出:数据结构+算法=程序描述数据的类型、组织形式描述对数据的操作步骤3.1算法的概念
做事情都有---方法、步骤(顺序)---决定事情成败1、算法:计算机求解某一问题而采用的具体方法、步骤2、两大类计算机算法:数值运算算法、非数值运算算法(求数值解、成熟)(事务管理、广泛)3、算法的特性:有穷性、确定性、有效性等4、算法描述:描述算法的方法有多种归纳为二大类:①文字②图形(符号)3.2算法的描述方法常用的算法描述方法:(1)带序号的自然语言描述易懂却不直观,不严格(2)流程图:灵活、自由、形象、直观,可表示任何算法输入/输出处理判断起止连接点流程线(3)N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框(表示简单、符合结构化思想)(4)伪代码:用介于自然语言与计算机语言之间的文字及符号来描述算法(方便、易懂、便于向计算机语言过渡)例1:计算S=,写出其算法。自然语言描述:流程图描述:N-S图描述:伪代码描述:3.3结构化程序设计方法一、结构化程序的三种基本结构
1966年提出三种基本结构,用这三种基本结构作为表示一种良好算法的基本单元:顺序、选择、循环任何复杂的算法都是由这三种基本结构按一定规律组成。(1)顺序结构ABABa=3;b=4;c=a+b;操作步骤按书写顺序执行(2)选择结构PABTFABTFPif(x!=0)y=sin(x)/x;elsey=1;
(3)循环结构根据条件P决定是否重复执行循环体中的操作。sum=0;i=1;while(i<=100){sum+=i;i++;}sum=0;i=1;do{sum+=i;i++;}while(i<=100);二、三种基本结构的共同特点
(1)单入口单出口(2)结构内的每一部分都有机会被执行(3)不存在“死循环”三、结构化程序设计的优点用三种基本结构组成的程序是结构化程序优点:易编、易读、易懂、易维护强调程序设计风格和程序结构的规范化核心思想:自顶向下、逐步细化,模块化设计,结构化编码举例:张丘建《算经》中提出“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?(体会编程步骤)分析:cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100
其中:0≤cocks≤190≤hens≤330≤chicks≤100
思路:依次取cocks的值域中的值,然后求其余两数,看是否合乎题意算法描述:cocks=0当cocks≤19时
{找满足题意hens,chicks数
cocks加1}cocks=0当cocks≤19时{hens=0
当hens≤33时
{chicks=100-cocks-hens
如果(5*cocks+3*hens+chicks/3=100)则输出hens加1}cocks加1}cocks=0
当cocks≤19时
{hens=0
当hens≤33时
{找满足题意的chicks数
hens加1}cocks加1}细化细化用计算机语言写出程序
intmain(){intcocks=0,hens,chicks;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0==100)printf(“%d%d%d\n”,cocks,hens,chicks);hens++;}cocks++;}}025752077187813801181683124843.4C语句的概述一、语句用来对数据进行加工(完成操作任务),是构成程序的基本单位,通常一个C程序由若干个函数(系统、用户提供)组成。每一函数由若干条语句组成。每条语句总是以“;”结束。二、C语句的分类(简单语句、复合语句、空语句)(一)简单语句1)表达式语句:由一个表达式后跟“;”组成如:a=3(赋值表达式)a=3;(赋值语句)i++i++;2)函数调用语句:函数调用表达式加一个“;”如:printf(“Hello,world!\n”);3)结构控制语句:控制程序流程选择语句:if…else…switch
循环语句:forwhiledo…while…
转向语句:continuebreakreturngoto(二)复合语句:将一组语句括在一对{}中如:while(i<100){sum+=i;i++;}
说明:
1)复合语句的{}之后不能有“;”
2)复合语句中可以是简单语句、复合语句、空语句(三)空语句:;/*仅有一个;*/
空语句什么也不做。有时用作被转向点,或为循环语句提供空体。如:for(i=0;i<=10;i++);3.5字符数据的输入输出引言:C语言没有输入/输出语句,I/O操作通过调用系统函数实现。在程序开头要有:#include“stdio.h”
或#include<stdio.h>默认的输入设备——键盘默认的输出设备——显示器一、字符输出函数putchar()形式:putchar(c)作用:向显示器上输出一个字符(将c的值输出到显示器上,c可以是字符型和整型的常量、变量、表达式)#include<stdio.h>intmain(){charc1,c2;c1=‘b’;c2=98;putchar(c1);putchar(c2);putchar(‘b’);putchar(98);}#include<stdio.h>intmain(){putchar(‘\101’);putchar(‘\n’);putchar(‘\\’);}二、字符输入函数getchar()形式:getchar()作用:从键盘缓冲区读入一个字符注意:1)当输入多个字符时,多余字符作废
(按回车后才开始接收字符)例:#include<stdio.h>intmain(){intc;printf(“Enteracharacter:”);c=getchar();printf(“%c:%d\n”,c,c);}Enteracharacter:aa:972)用getchar()得到的字符可以赋给字符型变量、整型变量,或作为表达式的一部分。如:c=getchar()+32;putchar(c);
若输入是:A
则输出是:a例:#include<stdio.h>intmain(){putchar(getchar());}aa3.6格式输入输出一、格式输出函数printf作用:向终端输出若干个类型任意的数据。形式:printf(格式控制符,输出项列表)双引号括起来的字符串要输出的内容(常量、变量、表达式等)格式控制字符串:
i=%3df=%5.1f%5.1f引导符宽度小数位数精度类型符#include<stdio.h>intmain(){inti=5;floatf=32.345;printf(“i=%3df=%5.1f\n”,i,f);printf(“End.\n”);}i=5f=32.3End.格式控制符完整的格式:
%-Om.nl/h格式字符说明:1、格式字符:指定输出项的数据类型和输出的格式
1)d——十进制整数
2)o——无符号八进制数
3)x——无符号十六进制数
4)u——不带符号的十进制整数#include<stdio.h>intmain(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}a=-1,177777,ffff,65535b=-2,177776,fffe,65534有符号的整型数b可以用%u输出无符号的整型数a可以用%d输出5)c输出一字符6)s输出一字符串7)e以指数的形式输出实型数8)f以小数的形式输出实型数9)%输出%#include<stdio.h>intmain(){floatt;charb=‘a’;inti=97;t=28.333;printf(“%f\n”,t);printf(“%c,%d\n”,b,b);printf(“%c,%d\n”,i,i);printf(“%s,%%\n”,“china”);}28.333000a,97a,97china,%
%-Om.nl/h格式字符2、长度修正符
l:对整型指长整型long
例:%ld,%lx,%lo,%lu
对实型指双精度double
例:%lf3、域宽及精度的描述
m:域宽,即对应的输出项在输出设备上所占的字符数若实际数据宽度>m,按实际数据宽度输出若实际数据宽度<m,左边补空
n:精度,说明输出的实型数的小数位数几点说明:编译程序只是检查printf函数的调用形式,不分析格式控制字符串,如果格式字符与输出项的类型不匹配,不进行类型转换;格式字符要用小写字母;格式控制字符串中可以包含转义字符;格式控制字符串中的普通字符则原样输出;输出项的参数除了常数、变量外还可以是表达式、函数调用如:printf(“max=%d\ti=%d\n”,imax(a,b),i++);#include<stdio.h>intmain(){inti=321;floatf=123.456;printf(“%5d:”,i);
printf(“%5.2f\n”,i);
printf(“%5d:”,f);printf(“%5.2f\n”,f);}321:403022178.210:123.463.6格式输入输出二、格式输入函数scanf作用:按格式控制符的要求将数据从终端传送到变量地址所指定的内存空间形式:scanf(格式控制符,变量地址列表)1、变量地址:通过对变量名“求地址”运算得到形式:&变量名#include<stdio.h>intmain(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n”,a,b);}
&a得到2字节空间的首地址&b得到4字节空间的首地址2、格式控制符(1)格式说明项例:#include<stdio.h>intmain(){inta,b,c,d;scanf(“%d%d”,&a,&b);printf(“%d,%d\n”,a,b);scanf(“%3d%3d”,&c,&d);printf(“%d,%d\n”,c,d);}123412,34111222111,222(2)输入数据的分隔采用隐含的分隔符:空格、回车键、Tab键例:#include<stdio.h>intmain(){inta;floatb,c;printf(“inputa,b,c:”);scanf(“%d%f%f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}inputa,b,c:1234a=12,b=3.000000,c=4.000000根据格式中指定的域宽分隔数据项(不提倡)采用用户指定的分隔符例:#include<stdio.h>intmain(){inta;floatb,c;scanf(“%2d%3f%2f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}scanf(“%d,%f,%f”,&a,&b,&c);12,3,4a=12,b=3.000000,c=4.000000scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);a=12,b=3,c=4a=12,b=3.000000,c=4.000000注意:scanf中对unsigned型数据用u,o,x说明符输入输入数据时不能规定数据的精度如:scanf(“%4.2f”,&a);在“格式控制”字符串中,若有格式说明以外的其他字符,输入时应照原样输入如:scanf(“a=%d,b=%f”,&a,&b);
输入:a=123,b=45.678%c一次接收一个字符,无需单引号,空格字符是有效字符。思考:scanf(“Enteranumber?%d”,&n);的输入格式?3.7程序举例例:输入一个小写字母,打印该字母及其大写字母,以及它们的后续字母分析:大写字母的ASCII码比对应的小写字母小32
后续字母的ASCII码比该字母大1。#include<stdio.h>intmain(){charc;printf(“请输入任意一个小写字符:”);
c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}请输入任意一个小写字符:xx,yX,Y能否通过其他方法输入、输出?#include<stdio.h>intmain(){charc;printf(“请输入任意一个小写字符:”);
c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}可用putchar函数代替:putchar(c);putchar(c+1);若输入一个非字母字符,输出怎样?例:求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac>0。I处理O#include<stdio.h>
#include<math.h>
intmain()
{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*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}运行情况:
a=1,b=3,c=2↙
x1=-1.00
x2=-2.00习题3-6#definePI3.14#include<stdio.h>intmain(){inth; floatr,l,s,s1,v1,v2; printf("请输入圆半径和圆柱高:\n"); scanf("%f,%d",&r,&h); l=2*PI*r; s=PI*r*r; s1=4*PI*r*r; v1=4*PI*r*r*r/3; v2=s*h; printf("圆周长=%.2f\n圆面积=%.2f\n圆球表面积=%.2f\n圆球体积=%.2f\n圆柱体体积=%.2f\n",l,s,s1,v1,v2);}鸡兔同笼已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(要求通过输入语句给h和f赋值,并且在输入输出时加上必要的提示语句)例如:请输入总头数h,总脚数f:2,6鸡:1,兔:1#include<stdio.h>intmain(){ inth,f,x,y;printf(“请输入总头数和脚数h,f:”);scanf(“%d,%d”,&h,&f);y=f/2-h;x=h-y;printf(“鸡有%d只,兔有%d只\n”,x,y);}1、若floatx=1.234,则printf(“%6.2f”,x)输出的结果为()A.1.234 B.1.23C.1.23D.1.2342、已知I、j、k为int型变量,若从键盘输入:1,2,3《回车》,使I的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()A.scanf(“%2d%2d%2d”,&I,&j,&k);B.scanf(“%d%d%d”,&I,&j,&k);C.scanf(“%d,%d,%d”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数学等比数列试题及答案
- 2025年数字出版与电子信息知识考试测试题及答案
- 拍卖基础知识试题及答案
- 西方国家的文化政策对政治的影响试题及答案
- 西方网络政治与公民参与试题及答案
- 今日头条java校招面试题及答案
- 招聘护士试题及答案
- 南瑞集团java面试题及答案
- 2025年建筑材料与结构力学考试题及答案
- 软件设计师考试2025年专业技巧试题及答案
- DLT 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- 军事训练夏令营合同样本
- 2024年国家保安员资格考试题库及参考答案(完整版)
- 2023-2024学年江苏省连云港市新海实验中学英语七年级第二学期期末达标检测试题含答案
- 仓库管理实操培训
- 2024年南昌市高三二模(第二次模拟测试)物理试卷(含答案)
- 基础有机化学实验智慧树知到期末考试答案2024年
- 项目攻关方案
- 2024年北京控股集团有限公司招聘笔试参考题库含答案解析
- 劳动创造幸福主题班会
- 2024年移动网格经理(认证考试)备考试题库大全-下(判断题汇总)
评论
0/150
提交评论