- C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。
- C语句可分为以下5类:
- 表达式语句
- 表达式语句由表达式加上分号 ; 组成
- 其一般形式为: 表达式;
- 执行表达式语句就是计算表达式的值。
- 例如:x=y+z; 赋值语句 y+z 加法运算语句,但计算结果不能保留,无实际意义;
- i++; 自增1语句,i值增加1。
- 函数调用语句
- 函数调用语句:由函数名、实际参数加上分号 ; 组成
- 其一般形式为:函数名(实际参数表)
- 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调参数中的语句,求取函数值
- 例如:printf(“Hello World”); 调用库函数,输出字符串。
- 控制语句
- 控制语句用于控制程序的流程,以实现程序的各种结构方式它们由特定的语句定义符组成,C语言由九种控制语句,可以分为以下3类:
- 条件判断语句:if语句、switch语句
- 循环执行语句:do while语句、while语句、for语句
- 转向语句:break语句、goto语句、continue语句、return语句。
- 控制语句用于控制程序的流程,以实现程序的各种结构方式它们由特定的语句定义符组成,C语言由九种控制语句,可以分为以下3类:
- 复合语句
- 复合语句把多个语句用括号{}括起来组成的一个语句称复合语句。
- 在程序中应把复合语句堪称是单条语句,而不是多条语句。
- 表达式语句
-
这是一条复合语句。
- 复合语句内各条语句都必须以分号 ; 结尾,在括号 } 外不能加分号。
-
空语句
- 空语句只有分号 ; 组成的语句称为空语句。空语句是什么也不执行的语句,在程序中用空语句可用来作空循环体。
- 空语句只有分号 ; 组成的语句称为空语句。空语句是什么也不执行的语句,在程序中用空语句可用来作空循环体。
-
这个语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。
-
数据输入输出的概念及在C语言中的实现
- 所谓输入输出是以计算机为主体而言的。
-
本章介绍的是向标准输出设备显示器输出数据的语句。
-
在C语言中,所有的数据输入/输出都是由函数库完成的。因此都是函数语句。
-
在使用C语言库函数时,要用预编译命令 #include 将有关头文件包括到源文件中。
-
使用标准输入输出库函数时要用到”stdio.h“文件,因此源文件开头应有以下的预编译命令:
-
#include<stdio.h> 或 #include"stdio.h"
-
stdio是standard input & output的意思。
-
考虑到printf和scanf函数使用频繁,西永允许在使用这两个函数时可不加
-
#include<stdio.h> 或 #include"stdio.h"
-
字符数据的输入输出
-
putchar 函数(字符输出函数)
-
putchar 函数是字符输出函数,其功能实在显示器上输出单个字符。其一般形式为:
- putchar(字符变量)
-
例如:
-
对控制字符则执行控制功能,不在屏幕上显示。
-
使用本函数前必须要用文件包括命令:
-
#include<stdio.h> 或 #include"stdio.h"
-
格式输入与输出
-
printf函数(格式输出函数)
-
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。
-
printf函数调用的一般形式
-
printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特里,不要求在使用printf函数之前必须包含stdio.h文件。
-
printf函数调用的一般形式为:
- printf(“格式控制字符串”,输出表例);
- 其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
- %d 表示按十进制整型输出
- %ld 表示按十进制长整型输出
- %c 表示字符型输出符。
- 非格式字符串在输出时原样照印,在显示中起提示作用。
- 输出表列中给出了各个输出项,要求格式字符串和输出项在数量和类型上应该一 一对应的。
- 格式字符串
-
1、类型:类型字符用以表示输出数据的类型,其格式符和意义如下图所示:
-
2、标志:标志字符为-、+、#、空格 四种,意义如下:
-
3、输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数出输出,若实际位数少于定义的宽度则补以空格或0。
-
4、精度:精度格式以"."开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果是输出的字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
-
5、长度:长度格式为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
-
-
scanf函数(格式输入函数)
- scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
- scanf函数的一般形式
- scanf函数是一个标准库函数,它的函数原型在头文件”stdio.h“中,与printf函数相同,C语言也允许在使用scanf函数之前不必包括stdio.h文件
- scanf函数的一般表现形式为:
- scanf(“格式控制字符串”,地址表列)
- 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。,地址表列中给出个变量的地址。地址是由地址运算符”&“后跟变量名组成的。
-
例如:
-
&a,&b
-
分别表示变量a和变量b的地址。
-
这个地址就是编译系统在内存中a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的。用户不必关系具体的地址是多少。
-
变量的地址和变量的关系如下:
-
在赋值表达式中给变量赋值,如:
-
a =567 则a为变量名,567是变量的值,&a是变量a的地址。
-
但在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址。如&a,这两种在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。
-
-
格式字符串
- 格式字符串的一般形式为: %[*][输出数据宽度][长度]类型
- 其中有方括号[]的项为任选项。各项的意义如下:
- 1)类型:表示输入数据的类型,其格式符和意义如下所示:
- 2)“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
- 如:scanf("%d %*d %d",&a,&b);
- 当输入为:1,2,3时,把1赋予a,2跳过,3赋予b
- 3)宽度:用十进制整数指定输入的宽度(即字符数)
- 如:scanf("%5d",&a); 输入12345567
- 只把12345赋值给变量a,其余部分截去掉
- 如:scanf("%4d “%4d”,&a,&b); 输入12324241
- 把1232赋值给a,4241赋值给b
- 4)长度:长度格式符为l和h,l表示输入长整型数据(如 %ld)和双精度浮点数(如 %lf)。h表示输入短整型数据。
- 使用scanf函数注意以下几点
- 1、scanf函数中没有精度控制,如:scanf("%5.2f",&a);非法的,不能企图用此语句输入小数为2的实数
- 2、scanf中要求给出变量地址,如给出变量名会出错。如scanf("%5d",a);非法的,应该为scanf("%5d",&a);才是 合法的。
- 3、在输入多个数据值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔可用空格,TAB或回车作间隔。C编译在碰到空格,回车或非法数据(如对"%d" 输入 “12A” 时,A即为非法数据)时即认为i该数据结束。
- 5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
- 例如:scanf("%d","%d","%d",&a,&b,&c);
- 其中用非格式符","作间隔符,输入时是 5,6,7
- scanf(“a=%d”,“b=%d”,“c=%d”,&a,&b,&c);输入时是 q=5,b=6,c=7
- 6)如输入的数据与输出的类型不一致是,虽然编译可以通过,但是结果不对
- 1)类型:表示输入数据的类型,其格式符和意义如下所示: