华航语言第3章简单程序_第1页
华航语言第3章简单程序_第2页
华航语言第3章简单程序_第3页
华航语言第3章简单程序_第4页
华航语言第3章简单程序_第5页
已阅读5页,还剩53页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第三章北华航天工业学院《C语言程序设计》主要内容算法概述程序的三种基本结构C语句综述赋值表达式和赋值语句数据输入输出的概念字符数据的输入输出简单的格式输入与输出顺序结构程序设计举例北华航天工业学院《C语言程序设计》一个程序应包括两个方面的内容:对数据的描述:数据结构(data

structure)对操作的描述:算法(algorithm)著名计算机科学家沃思提出一个公式:数据结构+算法=程序数据结构+算法+程序设计方法+语言工具完整的程序设计应该是:3.1算法概述广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。n

=

1方法1:1+2,+3,+4,一直加到100

加99次方法2:100+(1+99)+(2+98)+…+(49

+51)+50=100+49×100+50

加51次对同一个问题,可有不同的解题方法和步骤100例:

n3.1.1算法的概念3.1.1算法的概念计算机算法可分为两大类别:数值运算算法:求数值解,例如求方程的根、求函数的定积分等。非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等。3.1.2怎样表示算法算法的四种表示方法:用自然语言表示算法用流程图表示算法用N-S流程图表示算法用伪代码表示算法(1)用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义,描述包含分支和循环的算法时也不很方便。因此,除了那些很简单的问题外,一般不用自然语言描述算法。(2)用流程图表示算法美国国家标准化协会ANSI(AmericanNational

Standard

Institute)规定了一些常用的流程图符号:起止框判断框处理框输入/输出框注释框流向线连接点例:判断一个数是否偶数,其算法用流程图表示:(3)

N-S流程图用以下的流程图符号:(1)顺序结构(2)选择结构(3)循环结构例:判断一个数是否偶数,其算法改用N-S流程图表示:输入mm能被2整除?是

否输出m

输出m是偶数

不是偶数if

x

is

positive

thenprint

xelseprint

-x也可以用汉字伪代码表示:若x为正打印x否则打印-x也可以中英文混用,如:if

x

为正print

xelseprint

-x(4)

用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。例:“打印x的绝对值

”的算法可以用伪代码表示为:3.2程序的三种基本结构三种基本结构

Bohra和Jacopini提出了以下三种基本结构:顺序结构、选择结构、循环结构用这三种基本结构作为表示一个良好算法的基本单元。三种基本结构的图示:顺序结构选择结构循环结构的图示:当型(While型)循环结构直到型(Until型)循环三种基本结构的共同特点:

(1)只有一个入口;只有一个出口;(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)结构内的每一部分都有机会被执行到;

(4)结构内不存在“死循环”(无终止的循环)。图中没有一条从入口到出口的路径通过A框。不正确的流程表示:流程内的死循环小结:由三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法。结构化程序设计方法一个结构化程序就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修改和维护。

结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。3.3

C语句综述C程序源程序文件1源程序文件2预处理命令数据声明函数1函数首部函数体数据声明执行语句函数n源程序文件nC程序的结构:一个c程序可以有若干个源程序文件组成一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成一个函数有函数首部和函数体组成函数体由数据声明和执行语句组成C语句分为5类控制语句函数调用语句表达式语句

空语句复合语句(1)控制语句(9种)。完成一定的控制功能。①

if

(

)…else…②

switch③

for()…(条件语句,用来实现选择结构)(多分支选择语句)(循环语句,用来实现循环结构)④while()…

(循环语句,用来实现循环结构)⑤do…while()(循环语句,用来实现循环结构)⑥continue (结束本次循环语句)(中止执行switch或循环语句)(从函数返回语句)⑦

break⑧

return⑨

goto(转向语句,基本不用)(2)函数调用语句有一个函数调用加一个分号构成一个语句printf(“This

is

a

C

statement.”);(3)表达式语句有一个表达式加一个分号构成一个语句a

=

3

;分号赋值表达式表达式语句(四)空语句只有一个分号的语句(什么也不做)(五)复合语句用一对{}括起来的语句{

z=x+y;t=z/100;printf(“%f”,t);}3.4赋值表达式和赋值语句x=x+n

x+=n赋值表达式赋值运算符赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。例如:

a=100

表示将100赋给变量a复合的赋值运算符赋值运算符两侧出现相同的变量x=x+nx=x-nx=x*nx=x/n

x=x%nx+=nx-

=nx*=nx/=n

x%

=n算术运算与赋值运算相结合X与n均为整数例:(3)赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。变量 赋值运算符 表达式例如:

a=5b=(a=5)c=10+(d=8)a=(b=10)/(c=2)(b等于10,c等于2,a等于5,表达式值为5)3.4.2赋值过程中的类型转换(1)实型数据赋给整型变量,先对实数取整后赋予整型变量。例如:i为整型变量,执行“i=3.56”后i的值为3(2)将一个double型数据赋给float变量时,截取其前面

7位有效数字存放到float变量中。注意数值范围不能溢出。例如:

double

d=123.456789e100;f=d;f无法容纳如此大的数,出现溢出的错误!例:

ASCII码字符‘a’、’A’、‘1’

存储为:‘a9’7的、A6S5C、II4值9

为97内存中存储形式011000010000000101000001在ASCII范围以内,整型数据与字符型数据可以通用在ASCII范围以内,整型数据与字符型数据可以通用3.4.3

赋值语句若a的值等于100,则成绩为优秀if(a=100)赋值运算if(a==100)

关系运算条件中的

赋值符号要适当使用!赋值语句由赋值表达式加分号组成:a=b

赋值表达式a=b;赋值语句例3.4.4

变量赋初值int

a=3;

/*

指定a为整型变量,初值为3*/double

f=3.56;

/*

指定f为双精度型变量,初值为3.56

*/char

c

=

’a’;

/*指定c为字符变量,初值为’a’

*/int

a,b,c=5;/*对一部分变量赋初值。*/对几个变量赋予同一个初值,应写成:int

a=3,b=3,c=3;以下写法错误:int

a=b=c=3;3.5

数据输入输出的概念输入输出是以计算机主机为主体而言的输出:从计算机向外部输出设备输出数据输入:从输入设备向计算机输入数据.C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的。例如:字符输入函数:

getchar 字符输出函数:putchar格式输入函数:

scanf字符串输入函数:gets格式输出函数:printf字符串输出函数:puts#include

“stdio.h”或:#include

<stdio.h>在使用系统库函数时,要用预编译命令

“#include”将有关的“头文件”包括到用户源文件中.例如:在调用标准输入输出库函数时,文件开头应该有:头文件3.6

字符数据的输入输出3.6.1字符输出函数一般形式:putchar(c)函数作用:向终端输出一个字符字符型变量整型变量例3.1:输出单个字符。

#include<stdio.h>void

main()运行结果:BOY{char

a,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\n’);}

putchar(a);putchar(‘\n’);putchar(b);putchar(‘\n’);putchar(c);putchar(‘\n’);运行结果:BOY3.6.2字符输入函数一般形式:getchar()函数作用:从终端(或系统隐含指定的输入设备)输入一个字符。函数值: 从输入设备得到的字符。例3.2

输入多个字符。#include

<stdio.h>void

main

(

){char

a,b,c;/*定义字符变量a,b,c

*/a=getchar();/*从键盘输入一个字符,送给字符变量a

*/b=getchar();/*从键盘输入一个字符,送给字符变量b

*/c=getchar();/*从键盘输入一个字符,送给字符变量c

*/putchar(a);/*将变量a的值输出*/putchar(b);/*将变量a的值输出*/putchar(c);/*将变量a的值输出*/putchar('\n');/*换行*/}运行结果:

BOY↙(连续输入BOY后,确认后字符才送到内存)BOY

(输出变量a,b,c的值)3.7

简单的格式输入与输出3.7.1 格式输出函数

printf函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。一般格式:printf(格式控制,输出表列)%d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0(1)d格式符。用来输出十进制整数。几种用法:①%d:按十进制整型数据的实际长度输出。②%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。例:

printf(″%4d,%6d″,a,b);③%ld:输出长整型数据。例:

long

a=135790;/*

定义a为长整型变量*/printf(″%ld″,a);(2)i格式符 教材上的i格式符与d格式符相同(3)c格式符,用来输出一个字符。如:char

d=′a′;printf(″%c″,d);一个整数,只要它的值在0~255范围内,可以用“%c”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。例3.3用printf函数输出字符数据。

#include

<stdio.h>void

main(){char

c='a';int

i

=97;printf("c=%c,c=%d\n",c,c);printf("i=%c,

i=%d\n",i,i);}运行结果:

c=a,c=97i=a,i=97(4)s格式符

输出字符串.①%s。例如:

printf(″%s″,″CHINA″)输出字符串“CHINA”(不包括双引号)。②%ms,输出的字符串占m列,若串长大于m,则全部输出,若串小于m,则左补空格。③%-ms,若串长小于m,字符串向左靠,右补空格。④%m.ns,输出占m列,只取字符串中左端n个字符,输出在m列的右侧,左补空格。⑤%-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m动取n值。(5)f格式符。用来以小数形式输出实数(包括单双精度)有以下几种用法:①%f。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出6位小数。要注意:有效数字的限度。②%m.nf。指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。③%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。例3.4输出实数时的有效位数。

#include

<stdio.h>void

main(){float

a,b;a=111111.111;b=222222.222;printf("%f\n",a+b);}运行结果为:

333333.328125例3.5输出双精度数时的有效位数。#include

<stdio.h>void

main(){double

a,b;a=11111111.11111111;b=22222222.22222222;printf("%f\n",

a+b);}

输出结果:33333333.333333(8)e格式符,以指数形式输出实数。可用以下形式:①%e。不指定输出数据所占的宽度和数字部分的小数位数.例:printf(″%e″,123.456);输出:

1.234560

e+002

8列

5列所输出的实数共占13列宽度。(注:不同系统的规定略有不同)②

%m.ne和%-m.ne。

m、n和“-”字符的含义与前相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数。若f=123.456,则:printf("%e

%10e

%10.2e

%.2e

%-10.2e",f,f,f,f,f);输出如下:1.234560e+002

1.234560e+002

1.23e+002

1.23e+00213列

13列

10列

9列1.23e+002

(注意空格在右边)

10列关于字符串的输出举例:#include<stdio.h>void

main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,

“CHINA”,“CHINA”,

“CHINA”,

“CHINA”);}运行结果:

CHINA,CH

,CHIN,CHI3.7

格式输入与输出3.7.2格式输入函数scanf函数作用:按照变量在内存的地址将变量值存进去。一般格式:scanf(格式控制,地址表列)同printf函数是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址例3.6:用scanf函数输入数据。

#include<stdio.h>void

main(){int

a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}运行情况:3

4

53,4,5(输入a,b,c的值)(输出a,b,c的值)a在内存中的地址

&是地址运算符使用scanf函数时应注意的问题:scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入在输入数据时,遇以下情况时认为该数据结束。①遇空格,或按“回车”或“跳格”(Tab)键;②按指定的宽度结束,如“%3d”,只取3列;③遇非法输入。3.8顺序结构程序设计举例开始输入三边长计算s计算面积结束例3.7输入三角形的三边长,求三角形面积。假设:三个边长a,b,c能构成三角形。已知面积公式:

area=

s(s

-a)(s

-b)(s

-c)s=(a+b+c)*0.5#include<stdio.h>#include<math.h>void

main(){float

a,b,c,s,area;scanf(“%f,%f,%f,&a,&b,&c);s=(a+b+c)/2;数学函数库因为要用到其中的sqrt函数area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,

b=%7.2f,

c=%7.2f,s=%7.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);}运行情况:如果输入3,4,6,输出结果为:a=3.00,b=4.00,c=6.00,s=6.50area=5.33#include

<stdio.h>void

m

温馨提示

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

评论

0/150

提交评论