C语言 第三章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用预编译命令#include将有关头文件包含到用户源文
件中,在头文件中包含了与用到的函数有关的信息,
如使用输入输出函数时要用到stdio.h文件。
#include放在程序开头 如#include “stdio.h” 或#include <stdio.h> 注意:区别#include语句中用<>和’’的区别。
/*输出圆周长、面积*/
}
C语言提供的语句分五大类:
(1)控制语句,完成控制功能
①if( ) ~ else ~
条件
②for ( ) ~
循环
③while ( ) ~
循环
④do ~ while ( )
循环
⑤continue
结束本次循环
⑥break
中止switch 或循环
⑦switch
多分支选择
⑧goto
转向
⑨return
从函数返回
(2)函数调用语句 函数名(参数);
如:printf (“This is a C program.\n”); max(a,b);
(3)表达式语句
在表达式后加 “ ;” 构成
a=6
a=5 ;
如 i=i+2 是表达式 而 i=i+2; 是表达式语句
x+y
x+y ;
(4)空语句 ; 无任何操作,但合法,可用于循环中的转折
}
输入方法:① 3_4_5
② 3_ _4_ _ _ _5
③3
4
5
Biblioteka Baidu④ 3 Tab
main( ){ float a=123.3463 double b=12.436457568679; printf (“a=%u,b=u\n”,a,b); } 如果实际值的范围超出格式的范围,输出结果不正确。
(5)C格式符,输出一个字符
字符型数据:占一个字节,数据表示范围:0~255
例 main(){ char c=‘ a’; int i=97,j=355,k=232; printf (“%c,%c,%c,%c\n”,c,i,j,k); printf (“%d,%d,%d,%d\n”,c,i,j,k);
函数,如printf,scanf等,它们不是C的关键字,而是 函数名。 ②好处是:使编译系统简化、通用性强、可移植性好。
③C函数库提供的一些标准I/ O函数是以终端设备为I/O
对 象 的 , 如 : putchar, getchar, printf, scanf, puts, gets。
(3)使用库函数时:
main( ) {
printf (“\\ ,%%, \“\n”);
printf (“%f%% \n”,1.0/3);
}
输出: \ ,% ,“
0.333333%
⑤定义数据类型与格式符说明要一致,否则将输出错误结 果。
5.2 scanf :格式输入函数
1、一般形式 scanf(格式控制,地址表列) (1)格式控制:是字符串,内容有: ①格式说明:由%和格式字符 d, f, e, c, s, o, x中之一
组成。 ②普通字符:需原样输入的字符 ③转义字符:\n, \t 用来实现换行和制表输入 (2)地址表列:
变量名前加&,表示将输入的数据存入变量所指定的存储 单元内,字符数组前不加&
main( ){
int a,b,c;
scanf (“%d%d%d”,&a, &b,&c);
printf (“a=%d, b=%d, c=%d\n”, a, b, c);
printf(“%c\n”,getchar( ));
}
输入:abc 输出:abc
如果一个一个输入呢?换行符
五、格式输入与输出
5.1 printf 格式输出函数
功能:向输出设备输出若干个任意类型的数据 1、printf 函数的一般格式
printf (格式控制,输出表列) (1)格式控制:由双引号括起来的一串字符(格式说明和
响 延时3秒 响 AB 响 延时3秒 响
4.2 getchar函数(字符输入函数)
功能:从键盘输入一个字符 形式:getchar( ) 特点:无参数,其值是从输入设备得到的字符。
#include “stdio.h”
main( ){
char c;
c=getchar();
putchar(c);
putchar(getchar());
使 用 尖 括 号 表 示 在 包 含 文 件 目 录 中 去 查 找 ( TC 在 tc/include 目 录 下 , VC 在 对 应 安 装 目 录 下 的 VC98/Include目录下),使用双引号表示首先在当 前的源文件所在的目录中查找,若未找到才到包含 目录中去查找。
2.1、putchar(字符输出函数)
当串长>m时,按实际长度输出 当串长<m时,串靠右输出,左边补空格。 ③%-ms: m为列宽 当串长>m时,按串实际长度输出, 当串长<m时,串靠左输出,右边补空格。 ④%m.ns:输出占m列,但只取串的左边n个字符在m列的右 端输出,左端补空格。 ⑤%-m.ns:输出串占m列,但只取串的左边n个字符在m列的 左端输出,右端补空格。 注意:当n>m时,m自动取n值, m只能是整常量,而不能是 变量或表达式。
功能:向输出设备输出一个字符。 形式:putchar(参数) 其中,参数可以是整型或字符型变量或常量。 例如:putchar(97) ; putchar(‘a’); 都输出字符 a,
char c=‘ b’ ; putchar(c);输出字符 b。
注意:在C语言中,使用I/O函数时,都必须在源文件的开 始处加上预编译命令:#include “stdio.h”
m<数据长度,数据按实际长度输出
m>数据长度,数据靠左输出,右端补空格
在Tc中的 n:指在e左边的数字个数,不包括小数点.
在VC中
n:指在e左边的数字个数,包括小数点.
在不同的C系统中输出结果可能不同
书中例子指小数位数
(9)g格式符,用来输出实数 根据数据的大小,自动选取e,f 格式中占位数较少的 一种格式输出。
%lf:双精度浮点输出,有效位15位,通常小数点后有6 位数字。
例,输出双精度有效位 main( ){
float x1,y1;double x2,y2; x1=1111111111111.111111111;
y1=2222222222222.222222222; x2=1111111111111.111111111;
}
输出结果: a,a,c,ф
97,97,355,232对于整型数据,若用字符格式输出,由于 整型数据占两个字节,如果整型数据的值在0~255之间时, 则输出对应的字符,若其值在256~32767之间时,则截取 其低8位部分,然后输出对应的字符.
(6)S格式符,用来输出一个字符串,有几种方法 ①%s: 按实际长度输出字符串。 ②%ms:m为列宽
2、格式字符 (1)d 格式符:输出十进制整数
①%d:按十进制数据的实际长度输出。 ②%md :m为指定输出字段的宽度。
< m时 数据左边补空格 当数据位数
> m时 按数据的实际位数输出。
main( ) { int a=123,b=12345; printf (“a=%4d,b=%4d\n”,a,b);
②%-m.nf:输出数据占m列,其中小数占n位,当数据长度 <m时,右补空格。
main( ){ float f=123.456; printf (“%f,_ _%10f_ _%10.2f_ _%-10.2f\n”,f,f,f,f);
运行结果: 123.456001,_ _123.456001_ _ _ _ _ _ 123.46_ _123.46_ _ _ _
普通字符)。 ①格式说明:由%和格式字符(c,d,u,f,e,o,x,s,g)
组成。 ②普通字符:需要原样输出的字符。
(2)输出表列:需要桉格式说明所指定的格式输出的数据, 可以是常量、变量、表达式。 格式控制
一般形式:printf(参数1,参数2,…参数n) 将参数2~n按参数1的格式输出。中间由逗号隔开。
意义:将标准I/O函数库中的函数包含到所在文件中来
#include <stdio.h> main( ){
char a,b,c; a=‘B’;b=‘O’;c=‘Y’; putchar(a); putchar(b); putchar (c); } 运行结果:BOY
若无文件包含编译预处理,在编译连接时系统将指出: Linking Error:Undefine symbol ‘_putchar’ in
(8)e格式,以指数形式输出实数
①%e:小数点前有一位数字,小数点后有5位数字规范化数
float : x. xxxxxe±xx
形式:
double: x.xxxxxe±xxx
②%m.ne:m为输出数据的列数,n是小数的位数.
m<数据长度,数据按实际长度输出
m>数据长度,数据靠右输出,左端补空格
③%-m.ne:m为输出数据的列数,n是小数的位数.
} 运行结果:a=_123,b=12345
(2)o格式符,输出八进制数 特点:无论是正是负,输出的都是不带符号的数
(3)x格式符,输出十六进制数 特点:无论数据是正是负,输出的都是不带符号的数 (4)u格式符,输出无符号数据
①无符号类型的数据可用%d,%u,%o,%x 格式输出。 ②带符号的char 和 int 整型数据可用%u格式输出。 ③单、双精度实型数据用%u格式输出时,则得到错误的 结果。
(10)print 函数的使用说明: ①格式符用小写字母而不能用大写字母,如%d而不是%D。 ②格式 控 制的字符 串中可包 含转义字 符 , 如 : \ n,\t, \b,\r, \a ③由%和格式字符d, f, e, g, u, c, s, o, x构成格式 输出符号 ④特殊字符:%和\的输出,如下所示:
main( ){ printf (“%3s,%7.2s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA” );
} 运行结果: CHINA, _ _ _ _ _CH, CHI_ _
(7) f格式符:输出单、双精度实数
①%f:单精度浮点输出,有效位7位,通常小数点后有6位 数字。
C语言程序设计
2006
第三章 基本结构程序设计
一、C语句概述
[案例] 已知圆半径radius=1.5,求圆周长和圆面积。
#include <stdio.h> #define PI 3.1415926
int _G_count;
预处理命令 全局变量 函数
main()
{float radius,length,area;
moduel XXX.c
另:putchar( )函数还可以输出控制字符
如:‘\n’ 或‘\012’ ‘\a’或 ‘\007’ ‘\r’ 或 ‘\015’
换行
响铃
回车
#include “stdio.h” main( ){
char a=‘A’,b=‘B’,c=‘\007’; putchar(a); putchar(b); putchar(‘\n’); putchar(c); sleep(3); putchar(c); putchar(65);putchar(66);putchar(‘\007’); sleep(3); putchar(‘\007’); } 运行结果: AB
(5)复合语句
用{ }将若干语句括起来而构成的语句。
如:if (x>y)
与 if (x>y) 意义不同
z=x;
{ z=x;
x++;
x++;
y--;
y--; }
二、数据输入输出
(1)输入输出:相对主机而言的 输入设备:键盘、扫描仪、磁盘、光盘等 输出设备:显示器、打印机、磁盘等。
(2)C本身不提供I/O语句: ①I/O操作通过函数实现,C标准函数库中提供了一些I/O
y2=2222222222222.222222222; printf (“x1+y1=%f\nx2+y2=%lf\n”,x1+y1,x2+y2); }
运行结果: x1+y1=3333333319680.000000 x2+y2=3333333333333.333010
① %m.nf :输出数据共占m列,其中小数占n位,当数据长 度<m时,左补空格。
radius=1.5;
length=2*PI*radius;
/*求圆周长*/
area=PI*radius*radius;
/*求圆面积*/
printf(“radius=%f\n”,radius);
/*输出圆半径*/
printf(“length=%7.2f,area=%7.2f\n”,length,area);
件中,在头文件中包含了与用到的函数有关的信息,
如使用输入输出函数时要用到stdio.h文件。
#include放在程序开头 如#include “stdio.h” 或#include <stdio.h> 注意:区别#include语句中用<>和’’的区别。
/*输出圆周长、面积*/
}
C语言提供的语句分五大类:
(1)控制语句,完成控制功能
①if( ) ~ else ~
条件
②for ( ) ~
循环
③while ( ) ~
循环
④do ~ while ( )
循环
⑤continue
结束本次循环
⑥break
中止switch 或循环
⑦switch
多分支选择
⑧goto
转向
⑨return
从函数返回
(2)函数调用语句 函数名(参数);
如:printf (“This is a C program.\n”); max(a,b);
(3)表达式语句
在表达式后加 “ ;” 构成
a=6
a=5 ;
如 i=i+2 是表达式 而 i=i+2; 是表达式语句
x+y
x+y ;
(4)空语句 ; 无任何操作,但合法,可用于循环中的转折
}
输入方法:① 3_4_5
② 3_ _4_ _ _ _5
③3
4
5
Biblioteka Baidu④ 3 Tab
main( ){ float a=123.3463 double b=12.436457568679; printf (“a=%u,b=u\n”,a,b); } 如果实际值的范围超出格式的范围,输出结果不正确。
(5)C格式符,输出一个字符
字符型数据:占一个字节,数据表示范围:0~255
例 main(){ char c=‘ a’; int i=97,j=355,k=232; printf (“%c,%c,%c,%c\n”,c,i,j,k); printf (“%d,%d,%d,%d\n”,c,i,j,k);
函数,如printf,scanf等,它们不是C的关键字,而是 函数名。 ②好处是:使编译系统简化、通用性强、可移植性好。
③C函数库提供的一些标准I/ O函数是以终端设备为I/O
对 象 的 , 如 : putchar, getchar, printf, scanf, puts, gets。
(3)使用库函数时:
main( ) {
printf (“\\ ,%%, \“\n”);
printf (“%f%% \n”,1.0/3);
}
输出: \ ,% ,“
0.333333%
⑤定义数据类型与格式符说明要一致,否则将输出错误结 果。
5.2 scanf :格式输入函数
1、一般形式 scanf(格式控制,地址表列) (1)格式控制:是字符串,内容有: ①格式说明:由%和格式字符 d, f, e, c, s, o, x中之一
组成。 ②普通字符:需原样输入的字符 ③转义字符:\n, \t 用来实现换行和制表输入 (2)地址表列:
变量名前加&,表示将输入的数据存入变量所指定的存储 单元内,字符数组前不加&
main( ){
int a,b,c;
scanf (“%d%d%d”,&a, &b,&c);
printf (“a=%d, b=%d, c=%d\n”, a, b, c);
printf(“%c\n”,getchar( ));
}
输入:abc 输出:abc
如果一个一个输入呢?换行符
五、格式输入与输出
5.1 printf 格式输出函数
功能:向输出设备输出若干个任意类型的数据 1、printf 函数的一般格式
printf (格式控制,输出表列) (1)格式控制:由双引号括起来的一串字符(格式说明和
响 延时3秒 响 AB 响 延时3秒 响
4.2 getchar函数(字符输入函数)
功能:从键盘输入一个字符 形式:getchar( ) 特点:无参数,其值是从输入设备得到的字符。
#include “stdio.h”
main( ){
char c;
c=getchar();
putchar(c);
putchar(getchar());
使 用 尖 括 号 表 示 在 包 含 文 件 目 录 中 去 查 找 ( TC 在 tc/include 目 录 下 , VC 在 对 应 安 装 目 录 下 的 VC98/Include目录下),使用双引号表示首先在当 前的源文件所在的目录中查找,若未找到才到包含 目录中去查找。
2.1、putchar(字符输出函数)
当串长>m时,按实际长度输出 当串长<m时,串靠右输出,左边补空格。 ③%-ms: m为列宽 当串长>m时,按串实际长度输出, 当串长<m时,串靠左输出,右边补空格。 ④%m.ns:输出占m列,但只取串的左边n个字符在m列的右 端输出,左端补空格。 ⑤%-m.ns:输出串占m列,但只取串的左边n个字符在m列的 左端输出,右端补空格。 注意:当n>m时,m自动取n值, m只能是整常量,而不能是 变量或表达式。
功能:向输出设备输出一个字符。 形式:putchar(参数) 其中,参数可以是整型或字符型变量或常量。 例如:putchar(97) ; putchar(‘a’); 都输出字符 a,
char c=‘ b’ ; putchar(c);输出字符 b。
注意:在C语言中,使用I/O函数时,都必须在源文件的开 始处加上预编译命令:#include “stdio.h”
m<数据长度,数据按实际长度输出
m>数据长度,数据靠左输出,右端补空格
在Tc中的 n:指在e左边的数字个数,不包括小数点.
在VC中
n:指在e左边的数字个数,包括小数点.
在不同的C系统中输出结果可能不同
书中例子指小数位数
(9)g格式符,用来输出实数 根据数据的大小,自动选取e,f 格式中占位数较少的 一种格式输出。
%lf:双精度浮点输出,有效位15位,通常小数点后有6 位数字。
例,输出双精度有效位 main( ){
float x1,y1;double x2,y2; x1=1111111111111.111111111;
y1=2222222222222.222222222; x2=1111111111111.111111111;
}
输出结果: a,a,c,ф
97,97,355,232对于整型数据,若用字符格式输出,由于 整型数据占两个字节,如果整型数据的值在0~255之间时, 则输出对应的字符,若其值在256~32767之间时,则截取 其低8位部分,然后输出对应的字符.
(6)S格式符,用来输出一个字符串,有几种方法 ①%s: 按实际长度输出字符串。 ②%ms:m为列宽
2、格式字符 (1)d 格式符:输出十进制整数
①%d:按十进制数据的实际长度输出。 ②%md :m为指定输出字段的宽度。
< m时 数据左边补空格 当数据位数
> m时 按数据的实际位数输出。
main( ) { int a=123,b=12345; printf (“a=%4d,b=%4d\n”,a,b);
②%-m.nf:输出数据占m列,其中小数占n位,当数据长度 <m时,右补空格。
main( ){ float f=123.456; printf (“%f,_ _%10f_ _%10.2f_ _%-10.2f\n”,f,f,f,f);
运行结果: 123.456001,_ _123.456001_ _ _ _ _ _ 123.46_ _123.46_ _ _ _
普通字符)。 ①格式说明:由%和格式字符(c,d,u,f,e,o,x,s,g)
组成。 ②普通字符:需要原样输出的字符。
(2)输出表列:需要桉格式说明所指定的格式输出的数据, 可以是常量、变量、表达式。 格式控制
一般形式:printf(参数1,参数2,…参数n) 将参数2~n按参数1的格式输出。中间由逗号隔开。
意义:将标准I/O函数库中的函数包含到所在文件中来
#include <stdio.h> main( ){
char a,b,c; a=‘B’;b=‘O’;c=‘Y’; putchar(a); putchar(b); putchar (c); } 运行结果:BOY
若无文件包含编译预处理,在编译连接时系统将指出: Linking Error:Undefine symbol ‘_putchar’ in
(8)e格式,以指数形式输出实数
①%e:小数点前有一位数字,小数点后有5位数字规范化数
float : x. xxxxxe±xx
形式:
double: x.xxxxxe±xxx
②%m.ne:m为输出数据的列数,n是小数的位数.
m<数据长度,数据按实际长度输出
m>数据长度,数据靠右输出,左端补空格
③%-m.ne:m为输出数据的列数,n是小数的位数.
} 运行结果:a=_123,b=12345
(2)o格式符,输出八进制数 特点:无论是正是负,输出的都是不带符号的数
(3)x格式符,输出十六进制数 特点:无论数据是正是负,输出的都是不带符号的数 (4)u格式符,输出无符号数据
①无符号类型的数据可用%d,%u,%o,%x 格式输出。 ②带符号的char 和 int 整型数据可用%u格式输出。 ③单、双精度实型数据用%u格式输出时,则得到错误的 结果。
(10)print 函数的使用说明: ①格式符用小写字母而不能用大写字母,如%d而不是%D。 ②格式 控 制的字符 串中可包 含转义字 符 , 如 : \ n,\t, \b,\r, \a ③由%和格式字符d, f, e, g, u, c, s, o, x构成格式 输出符号 ④特殊字符:%和\的输出,如下所示:
main( ){ printf (“%3s,%7.2s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA” );
} 运行结果: CHINA, _ _ _ _ _CH, CHI_ _
(7) f格式符:输出单、双精度实数
①%f:单精度浮点输出,有效位7位,通常小数点后有6位 数字。
C语言程序设计
2006
第三章 基本结构程序设计
一、C语句概述
[案例] 已知圆半径radius=1.5,求圆周长和圆面积。
#include <stdio.h> #define PI 3.1415926
int _G_count;
预处理命令 全局变量 函数
main()
{float radius,length,area;
moduel XXX.c
另:putchar( )函数还可以输出控制字符
如:‘\n’ 或‘\012’ ‘\a’或 ‘\007’ ‘\r’ 或 ‘\015’
换行
响铃
回车
#include “stdio.h” main( ){
char a=‘A’,b=‘B’,c=‘\007’; putchar(a); putchar(b); putchar(‘\n’); putchar(c); sleep(3); putchar(c); putchar(65);putchar(66);putchar(‘\007’); sleep(3); putchar(‘\007’); } 运行结果: AB
(5)复合语句
用{ }将若干语句括起来而构成的语句。
如:if (x>y)
与 if (x>y) 意义不同
z=x;
{ z=x;
x++;
x++;
y--;
y--; }
二、数据输入输出
(1)输入输出:相对主机而言的 输入设备:键盘、扫描仪、磁盘、光盘等 输出设备:显示器、打印机、磁盘等。
(2)C本身不提供I/O语句: ①I/O操作通过函数实现,C标准函数库中提供了一些I/O
y2=2222222222222.222222222; printf (“x1+y1=%f\nx2+y2=%lf\n”,x1+y1,x2+y2); }
运行结果: x1+y1=3333333319680.000000 x2+y2=3333333333333.333010
① %m.nf :输出数据共占m列,其中小数占n位,当数据长 度<m时,左补空格。
radius=1.5;
length=2*PI*radius;
/*求圆周长*/
area=PI*radius*radius;
/*求圆面积*/
printf(“radius=%f\n”,radius);
/*输出圆半径*/
printf(“length=%7.2f,area=%7.2f\n”,length,area);