第3章顺序程序设计课件_第1页
第3章顺序程序设计课件_第2页
第3章顺序程序设计课件_第3页
第3章顺序程序设计课件_第4页
第3章顺序程序设计课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第3章顺序结构程序设计§3.1结构化程序设计方法一、结构化程序设计方法:自顶向下、逐步求精、模块化二、三种基本结构§3.2C语句概述

语句:C程序的最小单位。执行语句实现一定的功能:赋值、输入、输出,构成程序的执行部分;非执行语句起说明作用。C语句可分为四类:简单语句(包括函数调用语句、表达式语句)、空语句、复合语句、控制语句。1.简单语句(1)表达式语句

一般形式:表达式;如:y+i;/*无意义*/

i++;/*自增1语句*/

x=3;/*赋值语句*/

(2)函数调用语句一般形式:函数名(实参表);如:printf(“******\n”);一、c语句分类2.空语句一般格式:;空语句常用于下面两种情况:(1)循环语句中空循环体,起延迟作用。(2)模块化程序中未实现的模块及暂不连入的模块,为增加函数预留位置。3.复合语句:{一条或多条语句}

使用一对{}将多个语句括起来构成的语句结构。例如,{

x=y+z;

a=b+c;

printf(“%d%d”,x,a);}是一条复合语句。4.控制语句控制程序的流程,实现程序的基本结构,由特定语句组成。C语言有9种控制语句。分成以下两类:

1.结构化语句

1)

条件判断语句:if、switch;

2)

循环执行语句:

do……while、

while……、

for……;

2.非结构化语句:break、goto、continue、return。二、赋值语句格式:赋值表达式;功能:为变量提供确定的匹配值例如x=6;√x=y=z=0;√x=y+z=5;×

辨析下面各项:1.4+(y=3)√2.4+(y=3;)×3.inta=b=c=5;×4.inta=5,b=5,c=5;√5.

a=b=c=5;√6.

a=3,b=5,c=6;√7.a=2;b=5;c=6;√§3.3程序的注释注释语句的语法/*注释文本*/遵循以下原则:(1)一个程序至少有一条注释语句,对整个程序的功能进行说明。(2)对主要变量加注释,说明其作用。例如:intmain()/*求三角形面积*/{

floata,b,c;/*三角形三边*/

return0;}

输入输出以计算机为主体。c语言使用“标准输入输出函数”实现。共6个:输出一个字符:putchar接受一个字符:getchar格式输出:printf格式输入:scanf输出一个字符串:puts()接受一个字符串:gets()§3.4数据的输入与输出标准函数头文件数学:math.h

字符:string.h

输入输出:stdio.h

参见p371-377。自定义函数。

预编译命令#include格式:#include<stdio.h>或

#include"stdio.hҤ

3.5字符数据输入与输出函数一、字符输出函数putchar1.格式:putchar(ch)2.功能:将ch的值以字符(不加定界符‘’)形式输出到屏幕上。返回值类型:字符型,函数值:所输出的字符。说明:ch一般是字符或数值型常量、变量、表达式,实型自动截去小数,大于255时取该数与256相除的余数,小于0时取该数与-256相除的余数。例如:charch1=‘A’;

putcher(ch1);putcher(ch1+1);#include“stdio.h”intmain(){chara;a='B';putchar(65);putchar('\n');putchar(a);putchar('\101');

return0;}运行结果:A

BA【例3-1】注意:输出的字符不带定界符单引号。二、键盘输入函数getchar1.格式:

getchar()2.功能:使程序运行暂停。在执行界面当前光标处等待用户从键盘上输入字符数据回车后,放入缓存,程序继续执行。返回值类型:字符型,函数值:从键盘上输入的第一个字符。用途:从键盘上提供字符数据。常用形式:

charc;

c=getchar();

注意:1.输入的字符不加定界符单引号。2.输入的任何内容都做字符【例3-2】输出一个字符。#include“stdio.h“voidmain(){charc;printf("inputacharacter\n");c=getchar();putchar(c);return0}说明:1)输入不加定界符单引号。2)程序最后两行可用下面任意一行代替:

putchar(getchar());printf(“%c”,getchar());inputacharacterAA定界符双引号不输出1.格式:printf(“格式控制”

[,

输出表列])2.功能:按格式控制指定的格式,将输出表列各项输出。

如:将字符串******输出到屏幕上,并使光标回车换行的输出语句:

printf("******\n");可省。各种类型的变量、表达式,西文逗号间隔。§3.6格式输入输出函数一、格式输出3.参数说明(1)格式控制:用于指定输出格式,是用双撇号括起来的字符串,也称“转换控制字符串”,它包括以下两种信息:①格式说明格式说明由“%”和格式字符组成,如%d、%f等。其作用是将输出的数据转换为指定的格式输出。格式说明总是以“%”开始。②普通字符普通字符即需要原样输出的字符。(2)输出表:输出表列是需要输出的数据,可以是任意形式的表达式。

例如:inta=3,b=4;

printf("a=%d,b=%d",a,b);

注意:格式字符串和各输出项在数量和类型上应一一对应。4.格式字符串的一般形式:

%[标志][输出最小宽度][.精度][长度]格式符

[]中的项为可选项,最简单形式:%格式符。1)类型格式符:决定对应输出项说明类型和输出形式。格式字符对应输出项输出结果dint、char带符号的十进制整数(正数不输出+号)oint、char无符号的八进制整数(不输出前缀0)x,Xint、char无符号的十六进制整数(不输出前缀Ox)uint、char无符号的十进制整数f单、双精度小数形式的单、双精度实数e,E单、双精度指数形式的单、双精度实数g,G单、双精度单、双精度实数(取%f或%e中较短的宽度)cint、char单个字符s字符串常量字符型数组字符串说明e、f、g格式符输出的有效位:单精度6~7位;双精度15~16位;长双精度18~19位。只有e、g、x可大写2)附加符标志意义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号L或l长整型:%ld,双精度:%lf±

m输出最小宽度。如%10f,决定左(-)右(+,可省)对齐n如果输出的是数字,则表示小数的位数;如果输出的是字符串,则表示输出字符的个数;如果实际位数大于所定义的精度数,则截去超过的部分辨析下面输出语句中各部分的名称及作用:printf(”a=%4d,%4d”,a,b);printf(“%ld”,b);printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);注意:①格式字符与输出表列中的表达式在数量和类型上应一致

②圆括号、双引号、逗号都必须是西文形式【例3-3】有符号十进制数的输出形式

/*exp3-3*/ #include"stdio.h" intmain()

{ inta=97; printf("a=%d,%o,%x,%u,%c\n",a,a,a,a,a); return0; }【例3-4】判断下面程序运行的结果#include"stdio.h"voidmain(){floata=38.45,b,c;b=(int)a;

c=a-b;printf(“%d,%d,%d\n",a,b,c);}注意:由于格式串与输出项类型不匹配,运行后会出错误。运行结果:

38.450001,380.450001【例3-5】字符数据的输出。

/*exp3-4*/ #include"stdio.h" intmain()

{ chara,b; a=120; b=121; printf("%c,%c\n",a,b); printf("%d,%d\n",a,b);

return0; }程序运行结果:【例3-6】设整型变量a、b的值分别是3、4,字符变量c的值是'A'。编程序,按下面的输出形式设计输出结果的格式:#include"stdio.h"intmain(){ inta=3,b=4; charc='A'; printf("a=%2db=%2d\n",a,b);

printf("Letter%candASCII:%d\n",c,c); return0;}【例3-7】求下面程序最后一个printf语句的输出结果。

#include"stdio.h" intmain() { inti,j; i=3; j=4;

printf("%d%d\n",i++,++j); printf("%d,%d\n",i,j); printf("%d,%d\n",-i++,-++j); return0; }程序运行结果:二、格式输入函数scanf

1.一般格式:

scanf(“格式说明",地址表列)

如:scanf("%d",&a);

scanf("%d,%d",&a,&b);

(&为取地址运算符)格式说明与printf语句的格式控制基本相同,地址表列由若干个地址组成,可以是变量的地址,也可以是字符串的首地址功能:

按照格式控制字符串所规定的格式,从键盘上输入数据,并依次赋给地址表所指各变量。注意:格式字符串和地址表各项在数量和类型上应一一对应。

当格式控制串之间有间隔符时,输入必须与间隔符完全相同,没有时,数值可用空格、回车键、Tab键间隔,字符也没有间隔符。2.格式说明格式说明形式上与printf函数的基本相同,但格式字符、附加符的含义区别较大。scanf格式字符的一般形式为%[附加符][输入宽度][长度]格式字符

3.scanf()函数常用格式符类型字符对应变量的说明类型接受输入数据dint有符号十进制oint无符号八进制x,Xint无符号十六进制uunsigned、int、int无符号十进制cchar单个字符ffloat实型数:小数或指数E、e、g、Gfloat实型数:小数或指数附加说明功能m指定输入数据所占宽度L或l用于输入长整型数据,加在d、o、x、u之前*读入的数据,不赋给对应的输入项,用于跳过一些数据

4.scanf()函数常用附加符3.使用scanf函数应注意的几个问题(1)scanf的格式说明中可以插入普通字符,非格式字符的使用原则是尽量少用。例如,使用逗号、空格等,作为数据的间隔,如"%d,%d"。(2)格式符可以没有间隔。例如,%d%d,输入数值数据时,任选空格键、Tab键、回车键间隔数据即可。(3)使用%c输入一个字符时,空格字符和“转义字符”都必须作为有效字符输入。例如,scanf(”%c%c”,&a,&b);输入:ab↙则变量a、b得到的值是字符a和空格,空格也作为一个字符输入,b被忽略。输入:ab↙则变量a、b得到的是字符a和字符b。注意对变量a的值是字符a的理解,其意义是把字符'a'赋给变量a。(4)scanf函数输入时,格式说明符中尽量不要指定宽度。用%f格式输入实型数据时,不必指定宽度;用%c输入一字符型数据时宽度不起作用,用%d输入一个整型数据时,尽量不要指定宽度。例如,scanf(”%3d%3d”,&a,&b);输入123456↙则a实际获得123,b实际获得456。输入12456↙则a实际获得12,b实际获得45,6被忽略。非格式字符的使用原则是尽量少用。(5)如果输入的数据类型与输出的数据类型不一致时,编译能够通过,但结果不正确。【例3-8】从键盘上输入两个数正整数a和b,求出这两个数相除的整数

#include"stdio.h" intmain()

{ inta,b;

printf("\nPleaseinputtwointeagers:\n")

scanf("a=%d,b=%d",&a,&b); printf("a=%d,b=%d,a/b=%d\n",a,b,a/b); }输入a=5,b=4,程序的运行结果:【例3-9】使用不同的格式符实现八进制、十六进制与十进制与之间的转换。

#include"stdio.h" intmain()

{

unsigneda,b,c; printf("\nPleaseinputthreeinteagers:\n");

scanf("%d%o%x",&a,&b,&c); printf("a=%d,b=%d,c=%d\n",a,b,c);

return0; }程序运行结果:【例3-10】常用类型说明符的长度测定

#include"math.h" #include"stdio.h" intmain() { inta; longb; floatf; doubled; charc; printf("\nint:%d\nlong:%d",sizeof(a),sizeof(b));

printf("\nfloat:%d\ndouble:%d",sizeof(f),sizeof(d));

printf("\nchar:%d\n",sizeof(c));

return0;

}程序运行结果:【例3-12】编写程序,任意输入一个3位整数,输出个位、十位和百位数字。算法分析:(1)变量说明:根据题意,需要定义四个整型变量,分别设为num、a、b和c,num存放3位数,a、b和c分别存放百、十、个数字,类型符:int(2)数据采集:需要赋初值的变量并确定赋值方式:变量num未知,需用scanf函数。(3)加工数据:计算百位、十位和个数字,依次存放在变量a、b和c中:c=num%10;

b=num/10%10;a=num/100;(4)输出计算结果:为使输出结果更加清晰,在输出结果之前将原始数据num输出,因均是整型数值数据,选用printf函数输出,格式符均为%d。/*exp3-12*/#include"stdio.h"intmain(){intnum,a,b,c; /*定义变量*/

printf("pleaseinputaintegernumber:");/*提示输入数据*/

scanf("%d",&num) /*输入数据*/

c=num%10;

b=num/10%10;

a=num/100; /*计算*/

/*输出结果*/

printf("%dHundred,ten,an,",num);

printf("alldigitalrespectively:%d,%d,%d\n",a,b,c);

return0;}scanf与printf函数的区别#include<stdio.h>voidmain(){inta;scanf("%d\n",&a);printf("%d\n",a);}?√

使用scanf函数时,如果双引号中加一个\n,则在程序运行时需要多输入一个数据。使用printf函数时,如果双引号中加一个\n,则程序运行时在屏幕上输出一个换行符。#include<stdio.h>

温馨提示

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

最新文档

评论

0/150

提交评论