1、C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,C语言程序设计第2章 简单程序设计,C语言程序设计-理论、方法与实践清华大学出版社2013年出版 张磊 编著,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,第2章 简单程序设计,2.1 用printf()函数输出数据 2.2 用scanf()函数输入数据 2.3 输入输出字符数据 2.4 语言知识补遗 2.5 程序设计举例,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1 用printf()函数输出数据,2.1.1 固定数值的加法程序 2.1.2 printf()函数,C语言程序设计-理论、方法与实践
2、张磊编著 清华大学出版社,2.1.1 固定数值的加法程序,例2-1 固定数值的加法程序。 #include int main(void) int a,b,c; a=8;b=2000;c=a+b;printf(“%dn“,c);return 0; ,程序解析加法运算的结果由printf()函数输出。printf()函数的参数由两部分构成 第一部分是“%dn”,称为输出格式控制串,它规定printf()函数输出的结果的形式; 第二部分是变量c,称为输出表达式,它是要输出的具体数据。 “%d”可以理解为占位符,表示在该位置输出一个整数,实际数值由输出表达式部分的c确定。 “n”是换行控制符,输出c之
3、后自动完成换行操作。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),printf()函数是C语言系统提供的格式化输出函数, 用于向标准输出设备(通常为显示器)按规定格式输出信息。 printf()函数一般使用格式 printf(“格式化字符串“,表达式表); 说明: “表达式表”是要输出的一系列表达式,各表达式之间用“,”分隔。 “格式化字符串”用于说明要输出表达式的形式: 以“%”开始的格式控制参数,它规定对应表达式的输出格式; 对普通字符按原样输出,对转义字符,输出的是其转义后的形式。 输出表达式的个数必须与格式化字符串所说明的输出
4、参数个数相同,且顺序要与格式串中要求输出的内容一一对应。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),printf()函数中常用的格式控制符及其功能,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),printf()函数的转义字符及其功能,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),例2-2 输出格式控制举例一。 #include int main(void) int a,b; a=8;b=2000;printf(“%d+
5、%d=%dn“,a,b,a+b);return 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),在“%”和格式控制符之间插进数字,表示输出项的最大域宽。,例如: %3d 表示输出3位整型数,不够3位右对齐。 %9.2f 表示输出域宽为9的实数, 其中小数位为2,整数位为6,小数点占1位, 不够9位时按域宽右对齐。 %8s 表示输出占8个字符的宽度, 不够8个字符时右对齐。,例2-3输出格式控制举例二。 #include int main() float r=5.7693,s;s=3.1416*r*r; printf(“R=%10.
6、3f,S=%10.3fn“,r,s);return 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),在“%”和格式控制符之间加入一个“-“ 号,控制输出为左对齐,否则为右对齐。 例2-4 输出格式控制举例三。 #include int main() float r=5.7693,s;s=3.1416*r*r; printf(“R=%-10.3f,S=%-10.3fn“,r,s); return 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.1.2 格式化输出函数printf(),字符型数据既可以使用“%c
7、”格式符输出,也可以使用“%d”格式符输出。当使用“%c”格式符时输出字符本身,当使用“%d”格式符时输出字符对应的ASCII码。,例2-5 字符型变量输出举例。 /* program e2-5.c */ #include int main() char ch=A; printf(“%c,%dn“,ch,ch);retutn 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.2 用scanf()函数输入数据,2.2.1 任意数值的加法程序 2.2.2 scanf()函数,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.2.1 任意数值的加法程序,例2-7
8、一个改进的加法程序。,程序解析 输入功能由“scanf(“%d,%d“,”语句实现加法运算,最后由printf语句输出加法运算结果。 scanf()函数的参数由“%d,%d“”和“&a,&b”两部分构成:“%d,%d“”规定输入数据的格式,表示输入两个整数,它们之间以“,”分隔;“&a,&b”指定接收数据的变量分别是a和b。,#include int main() int a,b,c;printf(“Input a,b:“);scanf(“%d,%d“, ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.2.2 scanf()函数,scanf()是格式化输入函数,从标准输入设备
9、为变量输入数据。 scanf()函数一般使用格式scanf(“格式化字符串“,变量地址表); 说明: “格式化字符串”用于说明输入数据的类型和数据格式,使用的格式控制符与printf()函数相同。 “变量地址表”是接受输入数据的变量的地址,它们之间以逗号“,”分隔。当接受数据的变量是简单变量时,变量地址的表示形式如下:&简单变量名 “格式化字符串”中的格式控制参数之间通常用逗号“,”或空格分隔,也可以不使用任何分隔符号。当使用“,”分隔时,输入数据时各个数据之间也要使用“,”分隔;当使用空格分隔或不使用任何分隔符时,输入的数据之间可以使用空格分隔,也可以使用回车符分隔。 (3) “格式字符串”
10、中控制参数的个数必须与变量地址的个数一致。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.2.2 格式化输入函数scanf(),例2-8 输入学生两门课的成绩,计算其平均成绩。,/* program e2-8.c */ #include int main() int score1,score2,average;printf(“Data: “);scanf(“%d%d“, ,输入数据的格式要与此对应,变量名前加“&”,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.3 输入输出字符数据,1getchar()函数 功能:从键盘输入的字符串中读入一个字符。 调用格式
11、:getchar() 2putchar()函数 功能:向标准输出设备输出一个字符。 调用格式: putchar(ch) 说明:ch为一个字符变量名或字符常量,putchar(ch)函数 将ch的值显示在屏幕上。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.3 输入输出字符数据,例2-12 从键盘输入一个字符,然后再显示出来。/* program e2-12-1.c */ #include int main() char ch; ch=getchar();putchar(ch); return 0; ,getchar()函数也可以直接作为putchar()函数的参数使用。 /
12、* program e2-12-2.c */ #include int main() putchar(getchar(); return 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4 语言知识补遗,2.4.1 数据类型 2.4.2 常量详解 2.4.3 简单变量详解 2.4.4 算数运算 2.4.5 赋值运算 2.4.6 宏命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.1 数据类型,数据是计算机程序处理的所有信息的总称,C语言共有9种数据类型 。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.2 常量详解,1整型常
13、量 整型常量即整数。 十进制数:以非0开始的数 如:220、-560、+369 八进制数:以0开始的数 如:06、0106、0677 十六进制数:以0X或0x开始的数 如:0X0D、0XFF、0x4e、0x123等。 在整型常数后添加一个“L”或“l”字母,表示该数为长整型数。如:22L、0773L、0Xae4l等。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.2 常量详解,2实型常量 实型常量即实数 一般形式由数字、小数点以及必要时的正负号组成如:29.56、-56.33、0.056、.056、0.0等。 指数形式相当于科学计数法,将a10b的数表示如下:aEb 或
14、aeb其中:a、E(或e)、b任何一部分都不允许省略。如:2.956E3、-0.789e8、.792e-6等。错误表示:e-6、2.365E。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.2 常量详解,3字符常量 用两个英文单引号限定的一个字符。如:a 、9 、 Z 、%。 特殊字符常量:转义字符,4字符串常量 用英文双引号限定的一个字符序列。 这个字符序列包括的字符个数称为字符串的长度,其长度允许为0。“Hello world“ 长度为11“ “ 长度为1“0.912e8“ 长度为7,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.2 常量详解,5
15、符号常量 定义符号常量的一般格式: #define 符号常量名 常量 例如: #define MAX 200 该命令定义了符号常量MAX,它表示常数200。,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.3 简单变量详解,1简单变量的分类,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.3 简单变量详解,定义格式: 数据类型 变量名表;,变量定义实例,2简单变量的定义,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.3 简单变量详解,变量赋值的一般格式变量名=表达式,变量赋值的两种形式(1)定义变量的同时为变量赋初值float x=
16、29.6;(2)先定义变量,然后再为变量赋值int sum,i;sum=10;,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.4 算术运算,1算术运算符 加法运算符 + 减法运算符 - 乘法运算符 * 除法运算符 / 求余运算符 % 2算术表达式 由算术运算符和运算对象构成的表达式称为算术表达式。126-a*(x+y-0.96)(a+b)/c+sin(x)sqrt(b*b-4*a*c),C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.4 算术运算,3运算符的优先级和结合性 运算符的优先级 不同运算符在表达式中的运算顺序。 算术运算的优先顺序负号运算符(
17、-)最高,其次是乘法(*)、除法(/)、求余(%)运算,最后是加法(+)、减法(-)运算。有括号()时,括号的优先级别最高。 运算符的结合性在表达式中,当一个运算量的两侧有两个相同优先级别的运算符时,该运算量先和那个运算符进行结合运算的问题。 有两个结合方向:自左至右的结合,又称左结合;自右至左的结合,又称右结合。 算术运算符+、-、*、/、%的结合性是左结合的,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.5 赋值运算,简单的赋值运算“=” 复合的赋值运算常用算符有5种: +=, -=, *=, /=, %=,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,
18、2.4.6 宏命令,C语言系统提供了大量的系统函数,对函数的说明信息分门别类的放在不同的头文件中。如printf()、scanf()、getchar()、putchar()等输入输出函数的说明信息在头文件“stdio.h”中,sin()、sqrt()等数学函数的说明信息在头文件“math.h”中。C语言规定,要使用这些函数须先行说明。说明的方法,是使用include命令包含相关的头文件。 include命令的一般使用形式: #include #include “文件名“,1include命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,1include命令,
19、#include #include /* 程序中使用数学函数时,要使用该命令 */ int main() float x,y;printf(“Data: “);scanf(“%f%f“, ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,define命令称为编译预处理的宏定义命令。宏定义分为带参数的宏和不带参数的宏两类,符号常量属于不带参数的宏。 不带参数的宏定义: #define 宏名 宏体 说明: (1)“宏名”是一个标识符 (2)“宏体”可以是一个字符串,也可以是一个数值,也可以是一个表达式等。 使用宏定义后,在编译预处理阶段,系统就把程序中的宏名替换为宏
20、体,这一替换过程称为“宏替换”,宏替换是对宏体字符串的原样照搬。,2define命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,例2-15 使用符号常量的程序。 #include #define PI 3.14159 /* 定义符号常量PI */ int main() float r,l,s;printf(“r=“); scanf(“%f“, ,2define命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,关于宏定义的说明: 宏名一般使用大写形式。但须明确,使用大写形式的宏名仅仅是一种习惯。 宏定义是用宏名来表示一个字
21、符串,在宏替换时又以该字符串取代宏名,这只是一种简单的代换,预处理程序对它不作任何检查。如有错误,只能在编译宏替换后的源程序时发现。 宏定义不是C语句,后面不能有分号。 通常把#define命令放在一个文件的开头使用。,2define命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,带参数的宏定义 带参数的宏在宏替换时不但要进行字符串替换,而且要进行相应的参数替换。 带参数宏定义的一般形式 #define 宏名(参数表) 字符串例如: #define m(x) x*x*x*x 说明 宏名后的参数表可以是一个参数,也可以是多个参数,当有多个参数时,各参数之间用
22、“,”分割。 作为宏体的字符串部分,要包括参数表中的参数。,2define命令,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.4.6 宏命令,带参数的宏定义,2define命令,#include #define m(x) x*x*x*x int main() int a,b,s;printf(“Input a,b: “);scanf(“%d,%d“, ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.5 程序设计举例,例2-18 设三角形边长为a、b、c,计算其面积area。,1问题分析 面积area的计算公式如下:, 该问题的输入量有三个,即a、b、c;输出
23、量是area。 2算法设计 输入a、b、c; (a+b+c)/2s; sqrt(s*(s-a)*(s-b)*(s-c)area; 输出area。 3程序实现,#include #include int main() float a,b,c,s,area;printf(“a,b,c: “);scanf(“%f,%f,%f“, ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.5 程序设计举例,例2-19 从键盘输入一个大写英文字母,然后在屏幕上输出它的小写形式。,问题分析, 英文字母是以ASCII码的方式存储的,同一个字母的大、小写形式有不同的ASCII码值,其对应关系如下: 小
24、写字母ASCII码值=大写字母ASCII码值+32 设输入量为ch,则输出量为ch+32。 算法设计 输入大写字母存储到变量ch中; 输出ASCII值为ch+32的字符; 程序实现,#include int main()char ch;printf(“Input: “); ch=getchar(); printf(“Output: %cn“,ch+32);return 0; ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,2.5 程序设计举例,例2-20 编写程序,求解鸡兔同笼问题。,1问题分析,2算法设计 输入方程式的系数a1、b1、c1; 输入方程式的系数a2、b2、c2;
25、利用公式求x; 利用公式求y; 输出x、y。3实现程序,2算法设计 输入方程式的系数a1、b1、c1; 输入方程式的系数a2、b2、c2; 利用公式求x; 利用公式求y; 输出x、y。3实现程序,#include int main() float a1,b1,c1,a2,b2,c2;float x,y;printf(“a1,b1,c1:“);scanf(“%f,%f,%f“, ,C语言程序设计-理论、方法与实践 张磊编著 清华大学出版社,小 结,(1) 数据输入和输出是程序的最基本问题,基本实现函数是printf()、scanf()、putchar()和getchar()。printf()和scanf()是有格式的输出、输入函数,可以实现任何类型数据的输出和输入;putchar()和getchar()是无格式的字符输出、输入函数,只能实现一个字符的输出和输入。使用scanf()为变量输入数据时,需要使用变量的地址形式。 (2) C语言有5种类型的常量数据,其中转义字符常量和符号常量是比较特殊的常量形式。 (3) C语言中的变量只有经过定义之后才能使用,变量定义的一般形式: 变量数据类型 变量名表; (4) 编译预处理是语言的基本技术,它是在源程序正式编译前由预处理程序完成的。本章介绍了宏定义命令define和宏包含命令include,它们是程序设计中最常用的编译预处理命令。,