第3章 C语言的基本程序设计

更新时间:2023-09-06 14:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章

C语言的基本程序设计

本章介绍C语言程序设计的基本方法和基本 的程序语句。使读者对C程序有一个初步的认识, 为后面各章的学习打下基础。 3.1 C语言的语句概述 3.2 算法与结构化程序设计方法 3.3 顺序结构程序设计 3.4 顺序结构程序设计实训 3.5 选择结构程序设计 3.6 选择结构程序设计实训 3.7 循环结构程序设计 3.8 循环结构程序设计实训

3.1 C语言的语句概述 C语句可分为以下五类:表达式语句、函数调用 语句、控制语句、复合语句、空语句。

1 表达式语句表达式语句由表达式加上分号“;”组成。 格式为:表达式; 例如: sum=a+b; i++; printf("Hello,everyone!\n "); 执行表达式语句就是计算表达式的值。最常用的 表达式语句是赋值语句和函数调用语句。

2 函数调用语句格式为: 函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定 义中的形式参数,然后执行被调函数体中的语句,求取函 数值。(在第六章函数中详细介绍) 例如 printf("C Program ");调用库函数,输出字符串。

3 控制语句控制语句用于控制程序的流程,以实现程序的各种结构 方式。 C语言有九种控制语句。 可分成以下三类: (1)条件判断语句 if语句,switch语句

(2)循环执行语句 do while语句,while语句,for语句 (3)转向语句 break语句,goto语句,continue语句,return语句

4 复合语句在 C 语言中,把多个语句用一对大括号“{ }”括起来组 成的语句称复合语句。 在程序中应把复合语句看成是单条 语句,而不是多条语句,例如 例如: { x=y+z; a=b+c; printf("%d%d ",x,a); } 是一条复合语句。复合语句内的各条语句都必须以分号 “;”结尾,在括号“}”外不能加分号。

5 空语句格式 : ; 功能 :不进行任何操作,只起到占位的作用,在 程序中可用来作空循环体。 例如 :for(i=0;i<100;i++); 这里的循环体为空语句,for循环虽然执行了多次, 由于循环体为空,循环只是有延时作用而已。 [Return]

3.2 算法与结构化程序设计方法

3.2.1 算法 1 算法的概念数据结构(data structure)是对数据的描述,在程序中 要指定数据的类型和数据的组织形式;算法(algorithm)是 对操作的描述,即操作步骤。实际上,一个程序除了以 上两个主要要素之外,还应当采用结构化程序设计方法 进行程序设计,并且用某一种计算机语言表示。 程序=算法十数据结构十程序设计方法十语言工具和 环境 计算机的算法可分为两大类:数值运算算法和非数值 运算算法。数值运算算法主要用于解决数值计算问题, 如求方程的根、求函数值、求定积分等。数值运算算法 以外的算法均属于非数

值运算算法,如排序问题采用的 算法就是非数值运算算法。

【例3-1】 交换两个变量a、b的值。 对于交换两个变量a、b值问题,可以借助于临时变 量c,采用以下步骤实现: S1:c=a; S1:c=b; S2:a=b; 或 S2:b=a; S3:b=c; S3:a=c; 【例3-2】求1+2+3+…+10的和。 设两个变量S和i,分别用以存放部分和及整数l~10。 采取以下步骤实现目标: S1:S=0 S2:i=1 S3:S=S+i S4:i=i+l S5:如果i不大于10,则返回重新执行步骤S3及其 后续的S4、S5。否则,算法到此结束,变量S中保存的 就是要求的和。

2 算法的特性(1) 有穷性 一个算法必须包含有限个操作步骤,且要在合理的时间 范围内由计算机处理完成。 (2) 确定性 算法中的每一个步骤都应当是确定的,而不应当是含糊 的、有歧义的。 (3) 有零个或多个输入 所谓输入是指在执行算法时需要从外界取得必要的信息。 (4) 有一个或多个输出 算法的目的是为了求解,“解”就是输出。一个算法得 到的结果就是算法的输出。没有输出的算法是没有意义 的。 (5) 有效性 算法中的每一个步骤都应当能有效地执行,并得到确定 的结果。

3 算法的表示算法的表示或者描述主要可以用以下几种方法:自然语 言、流程图、N-S结构图和伪代码。其中最常用的方法是 流程图和N-S结构图。 (1)三种基本结构 l)顺序结构:其中 A和 B两个框是顺序执行的(其结构 如图3-1)。 2)选择结构或称分支结构:根据给定的条件p是否成立 而选择执行A框或B框,A框和B框必有一个被执行(其结 构如图3-2)。 3)循环结构(又称重复结构),即重复执行某一部分 操作的结构。循环结构分两种:当型循环结构和直到型 循环结构。 ① 当型循环结构:如图3-3(a)所示。 ② 直到型循环结构:如图3-3(b)所示。

A B图3-1顺序结构 图3-2选择结构

(a)当型循环

(b)直到型循环

(2) 用N-S结构图表示算法 图3-4为例3-1的N-S结构图。图3-5为例3-2的N-S结构图。

c=a a=b b=c图3-4 例3-1的 N-S结构图 图3-5例3-2的 N-S结构图

3.2.2 结构化程序设计方法一个结构化程序就是用高级语言表示或实现的结构化算法。 结构化程序设计方法包括以下几个步骤:自顶而下、逐步细化、 模块化设计、结构化编码。 对于一个复杂的任务,先要对其进行详尽的分析,把它分解 成若干个相互独立的子任务(模块):再把每一个子任务分解 成若干个更小的子任务(子模块),直到子任务足够小,可以 直接用简单的算法来实现为止;然后对每一个分解后的子任务 (子模块)进行程序编码,即模块化程序设计:最后按照刚才 分解的相反顺序组合各个模块,最终解决问题。 这种设计时自顶而

下、逐步细化,实现时自下而上、逐步组 合的结构化程序设计方法全局性强,有利于保证程序层次分明、 结构清晰、算法正确。 [Return]

3.3 顺序结构程序设计 3.3.1 数据输出函数 1字符输出函数putchar(1) 格式 putchar(字符变量) ; (2) 功能 putchar 函数是字符输出函数,其功能是在显示器上输出 单个字符。 (3) 使用说明 程序中如使用本函数,则必须在文件开头使用文件包含命 令#include<stdio.h> 或#include“stdio.h”将库函数包括到用户 源文件中。 例如: putchar('A'); 输出大写字母A。 putchar(x); 输出字符变量x的值。 putchar('\n'); 换行。

2 格式输出函数printf printf函数是一个标准库函数,它的函数原型在 头文件“stdio.h”中。但由于printf函数使用频繁, 系统不要求在使用 printf 函数之前必须包含stdio.h 文件。 (1) 格式 printf("格式控制字符串",输出表列) (2) 格式字符串 格式字符串的格式为:% [标志][输出最小宽度][. 精度][长度]格式字符 1)格式字符: 格式字符用以表示输出数据的类型,其含义如 下所示:

格式字符 d,i

含义 以十进制形式输出带符号整数(正 数不输出符号) o 以八进制形式输出无符号整数(不 输出前缀O) x,X 以十六进制形式输出无符号整数 (不输出前缀Ox) (格式字符为x,输出十六进制的a~f时用小写,否则用大写) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数,隐含 输出6位小数。 e,E 以指数形式输出单、双精度实数, 隐 含输出6位小数。 (用e时指数用e表示(如1.2e+02),否则用E表示(如1.2E+02)) g,G 选%f或%e中输出宽度较短的一种格 式输出

c s

输出单个字符 输出字符串

2)标志 常用标志字符为-、+两种,他们的意义分别是: -:结果左对齐,右边填空格。 +:输出符号(正号或负号) 空格:输出值为正时冠以空格,为负时冠以负号。 3)输出最小宽度 用十进制整数来表示输出的最少位数。 若实际位数 多于定义的宽度,则按实际位数输出, 若实际位数少于 定义的宽度则左边补以空格或0(默认格式为右对齐)。

4)精度 精度格式符以“.”开头,后跟十进制整数。本项的意 义是:如果输出数字,则表示小数的位数;如果输出的是 字符, 则表示输出字符的个数;若实际位数大于所定义 的精度数,则截去超过的部分。 5) 长度 长度格式符为h,l两种,h表示按短整型量输出,l表示 按长整型量输出。 (3) 说明 如果要输出字符“%”,则应该在“格式控制”字符 串中用连续两个%表示。 例如:printf("%f%%",1.0/4); 输出结果为: 0.250000%f格式符,用来输出实数(包括单、双精度),以小数 形式输出。格式:%f,%m.nf,%-m.nf都可。 注意:单精度实数

的有效位数一般为7位,双精度 为16位。

【例3-4】用printf函数输出数据。 main( ) { int a=25; float b=123.4567898; double c=34567890.1234567; char d='k'; printf("a=%d,%5d,%o,%x,%u\n",a,a,a,a,a); printf("b=%f,%lf,%10.4f, %5.4f,%e,%10.2e\n",b,b,b,b,b,b); printf("c=%f,%e,%g\n",c,c,c); printf("d=%c,%8c,%i\n",d,d,d); printf("string=%s,%8s,%8.3s, %-8.3s\n","china","china","china","china"); } 程序执行结果为: a=25, 25,31,19,25 b=123.456787,123.456787,123.4568, 123.4568,1.23457e+02, 1.2e+02 c=34567890.123457,3.45679e+07,3.45679e+07 d=k, k,107 string=china, china, chi, chi

3.3.2 数据输入函数1字符输入函数getchar() (1)格式 getchar() (2)功能 其功能是从键盘上输入一个字符。通常把输入的字符赋予 一个字符变量,构成赋值语句。 (3)使用说明 1) getchar函数只能接受单个字符,输入数字也按字符处 理。输入多于一个字符时,只接收第一个字符。 2) 使用本函数前必须包含文件“stdio.h”。 3) 在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入 用户屏幕等待用户输入。输入完毕再返回TC屏幕。

本文来源:https://www.bwwdw.com/article/0pyh.html

Top