3.1 引例
求华氏温度100°F对应的摄氏温度。上面的两个例子的程序运行时都是顺序执行,程序代码中没有出现分支,循环的结构,往往这样的结构只能求解简单的问题
3.2 C语言的语句
在C语言中,语句是以分号结尾的字符序列,是程序最基本的执行单位,分号是C语句的必要组成部分。书写程序代码时,一行可以写几个语句,一个语句也可以写在多行上,C语句包含多种形式。
1.说明语句
说明语句用于定义程序所使用的变量与类型。
int a,b; 定义两个整型变量
char ch; 定义一个字符型变量
2.表达式语句
表达式语句由表达式加上分号“;”组成。其一般形式如下:
表达式;
列如:
c=a+b 是一个赋值表达式
c=a-b 是一个表达式语句
3.分支语句
分支语句实现分支控制过程,根据条件成立与否执行不同的语句。有两种分支结构,即双分支if-else语句与多分支的Switch语句。列如if(x>y) z=x; else z=y;
该语句首先判断if后面的表达式(x>y),如果条件成立执行“z=x;”,否则执行“z=y;”,if语句执行后变量z中存放的变量x与y中较大的值。
4,循环语句
C语言中实现循环控制的语句有3种,即for语句、while语句和do-while语句。
5.转向语句
转向语句有break语句、goto语句、continue语句、return语句。
6复合语句
用一对大括号{}将若干语句顺序组合在一起所形成的语句。C语言中,除复合语句外的其他所以语句都以分号结束
7.空语句
空语句只由一个分号构成。
空语句一般用在程序的某个位置上,在功能上并不执行任何实际操作。如空语句用于循环语句中的循环体时,可以实现延时功能。
8.函数定义与调用
函数是完成特定功能的小模块,是C语言中唯一的一种子程序,常常在一个C程序中包含若干个函数,复杂的任务通过这些函数来完成。
9.输入与输出
C语言没有提供用于数据输入及输出都是通过系统提供的有关函数(如scanf()和printf()函数)来实现的
3.3 数据的输入和输出
C语言本身没有提供输人输出语句,所有的数据输人输出功能都是由系统提供的库函数完成的。程序中用到的标准输人输出库函数主要有printf() 、scanf()等。使用标准输人输出库函数时要用到“stdio.h”文件,因此在源文件开头需要用预处理命令井include
3.3.1 输出函数(printf())和输入函数scanf()
1.printf()函数
printf()函数是系统提供的用于在标准输出设备(屏幕)输出数据的库函数,其一般调用格式为:printf(“格式控制字符串”,输出项表列)
格式控制字符串用双引号括起来,表示输出的格式;而输出项表列则是要输出的数据,这些数据可以是常量、变量或表达式。
格式控制字符串中包含两种信息,格式控制说明和普通字符。(1)格式控制说明:按指定的格式输出数据,其格式为以%开头的格式控制字符,不同类型的数据采用不同的格式控制字符,以说明输出数据的类型、形式、长度、小数位数等。例如,int型数据采用%d,float型和double型数据都采用%f。(2)普通字符:在输出数据时,需要原样输出的字符。输出语句中除了3个%d外的都是普通字符。第1个格式控制字符%d对应的位置输出变量a的值,第2个格式控制字符%d对应的位置输出变服b的值,第3个格式控制字符%d对应的位安置输出变量。的值。
使用printf()函 数进行数据输出时需注意:
(1)格式字符与输出项的类规要一一对应,不同类型的数据的数据成学符的个数多于输出现的(2)一般情况下,格式字符与输出项的个数应相同。个数,则多余的格正北将动出不场定的,常精文学行的个数少于指出项的个数,则多余的输出项将不能输出。(3)printf()两数中可以没有输出项.此时pint(Q)函数只用来输出一个字符事:也可以有多个输出项,多个输出项之间使用逗号进行分隔。若输出项是表达式时,printf()函数将按从右到左的顺序计算出其值后输出。(4)若要在printf()函数中输出字符“%”,则应在格式控制字符串中使用连续两个“%”。
2.scanf()函数
scanf()函数是系统提供的用于由标准输入设备(键盘)输入数据的库函数,使用该函数时,由键盘输入数据的值。其一般调用格式为:scanf(“格式控制字符串”,输入项表列)
格式控制字符中用双引好括起*.表示输入的格式1而输人项表列指出各变址的地址(变量名前加&.)。
格式控制字符串中包含两种信息.格式招制说明和背涵字符。(1)格武控制说明:按指定的格式输入数据,其格式为以%)F头的格武控制字符,不同类型的数据采用不同的格式控制字符。侧如.int型数据果用%d,float型数据尔用%{,而double型数据尔用%If( %If,其中的|见long的首字小,不见数字1)。(2)普通字符:在输人数据时.简婴原样输入的字符。注意scanf()函数的输人参数必须和格式控制字符中中的格式控制说明相对应,并且它们的类型、个数和位置都一一对应。若程序中有多个scanf函数时,程序公等待用户输人并依次赋给相应变量。例如,语句“scanf(" %d" , &.x);"中的格式字符中“%d"指明了婴输人数据的类型为十进制性型,输人项“&.x"表明从键盘输人的数据将赋值给临型变量X。使用seanf()丽数进行数据输人时雷注意:(1)格式字符与输入项的类型、个数一一对应 ;输人项必须是地址,不能是变量名。(2)格武字符可以指定输人数据所古的列数,系统公俄取相应列数的数据。(3)在输人数据时泗到以下情况则认为数据输人结束:空格,Tab键、回车键、非法输人、指定宽度。用户也可以自己指定其他字符作为输人问隔。
3.3.2 整型数据的输入和输出
在C语言中,对于整型数据的输入输出所使用的
| 格式字符 | 含义 |
|---|---|
| d | 以十进制形式输入/输出带符号整形 |
| o | 以八进制形式输入/输出无符号整形 |
| x,X | 以十六进制形式输入/输出无符号整形 |
| u | 以十进制形式输入/输出无符号整形 |
在格式字符串的"%”和格式字符之间还可以有一些修饰符
| 格式字符 | 含义 |
|---|---|
| 1 | 用于输出长整数 |
| - | 输出结果左对齐,右边补空格 |
| + | 输出符号(正号或者负号) |
| # | 对d,u格式字符无影响;对o格式字符,在输出时加前缀0;对x格式字符,在输出时前加前缀0x |
| m | 指定数据的输出宽度。当数据的实际位数大于m时,则按实际位数输出;当数据的实际位数小于m时,若输出宽度前有“一”则左对齐右补空格,否则右对齐左补空格 |
scanf()函数中的格式修饰符
| 格式字符 | 含义 |
|---|---|
| 1 | 用于输出长整数 |
| m | 指定输入数据所占的宽度 |
| * | 表示本输入不会赋值给相应的变量 |
3.3.3 实型数据的输入和输出
在C语言中,对于实型数据的输入输出所使用的格式控制字符
| 函数 | 格式字符 | 含义 |
|---|---|---|
| printf | f | 以小数形式输出单精度或双进度数 |
| E,e | 以指数形式输出单精度或双进度数 | |
| g | 以%f,%e中较短的输出宽度输出单精度或双精度 | |
| scanf | f | 以小数式输入单进度数 |
| E,e | 以指数式输入单进度数 | |
| lf | 以小数式输入双进度数 | |
| le | 以指数式输入双进度数 |
3.3.4 字符型数据的输入和输出
字符型数据的输入输出可以调用函数getchar()、scanf()和putchar()、printf()。其中getchar()和putchar()函数只能用于单个字符的输入输出,scanf()和printf()函数可以用于多个字符的输入输出。
1.使用scanf()函数和printf()函数对字符型数据进行输入输出
2.使用getchar()函数和putchar()函数对字符型数据进行输入输出
(1)getchar()函数
设ch是字符型变量,函数getchar()的一般调用格式为:**ch=getchar()**运行时从键盘输入缓冲区中读取一个字符,并赋值给变量ch。由于函数getchar()只能读入一个字符,若需输入多个字符,就需要多次调用函数,一般采用循环调用的方式
(2)putchar()函数
函数putchar()的一般调用格式为:**putchar(输出参数)**输出一个字符,输出参数是字符型变量或字符型常量。
3.4 数学库函数
C语言处理系统提供了许多事先编好的库函数,供用的函数称为库函数。
常用的数学库函数有:①指数函数exp(x):计算ex。如exp(2. 3)的值为9. 974182。②绝对值函数fabs(x):计算|x|。如fabs( -2.8)的值为2.8。③以e为底的对数丽数log(x):计算Inx。如log(123. 45)的值为4. 815836。④幂函数pow(x,y):计算x’。如pow(1. 3,2)的值为1.69。⑤平方根函数sprt(x):计算根号x。如sprt(4.0)的值为2.0。
用户在程序中调用数学库函数时,一定要在程序的开头使用#include



