C语言_ch03_3_赋值语句和输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 数据的表现形式及其运算 3.3 C语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
3
3.4 数据的输入输出
a += a -= a*a
如果a初值为12, 最终a的值为? -264
printf("%d", a = b);
2013-3-13
10
左值(lvalue)
左值:指可以出现在赋值运算符左侧,且值可以改变 的量。 不是任何形式的数据都可以作为左值。 不能作为左值的值
常量 常变量 算术表达式,如a+b
25
2013-3-13
内容
3.1 顺序程序设计举例
3.2 数据的表现形式及其运算 3.3 C语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
i=289
00000001 0 0 1 0 0 0 0 1 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
c=33
0 0 1 0 0 0 0 1
注意:要避免进行这种赋值,因
为赋值后数值可能发生失真。如 果一定要进行这种赋值,应当保 证赋值后数值不会发生变化。
2013-3-13
13
赋值语句
赋值表达式; 分析下面的代码 if ((a=b) > 0) max = a;
26
3.4 数据的输入输出
Biblioteka Baidu
2013-3-13
3.4.5 字符数据的输入输出
char c; c = getchar();
从键盘读入一个字符,赋值给变量c
putchar(c);
把c输出到屏幕
2013-3-13
27
3.4.5 字符数据的输入输出
// 3_8.c -- 例3.8 先后输出BOY三个字符 #include <stdio.h>
16
3.4 数据的输入输出
2013-3-13
ax2 bx c 0 方程的根。a、b、c由 例3.5 求
键盘输入,设 b 2 4ac >0。
由数学知识已知:如果 b 2 4ac ≥0,则一 元二次方程有两个实根:
b b 4ac x1 2a
2
b b 4ac x2 2a
使命令行的输入可以编辑,即输错了还能回退。
2013-3-13
30
例3.9的更简洁的版本
/* 3_9.c -- 例3.9 从键盘输入BOY三个字符,然后把它 们输出到屏幕 */ #include <stdio.h> int main() { putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar('\n'); return 0; }
19
printf()
格式字符串
输出表列
可以是常量、变量、表达式、带返回值的 函数调用
20
2013-3-13
一般习惯用%d
2013-3-13
21
printf()举例
printf.c
2013-3-13
22
printf()举例----%d%o%x
int a = -1; printf("%d\t%o\t%x\n", a, a, a); 输出: -1 3777777777 ffffffff
改为int a=66, b=79, c=89;也可 int main() { char a = 'B', b = 'O', c = 'Y'; putchar(a); // 向显示器输出字符'B' putchar(b); putchar(c); putchar('\n'); // 向显示器输出换行符
return 0; }
return 0; }
2013-3-13 7
赋值表达式
语法形式:
变量名 赋值运算符= 表达式 a = 0 被赋值变量赋值后的值 求赋值运算符右侧的“表达式”的值 赋给赋值运算符左侧的变量
赋值表达式的结果
求解过程:
a = b = c = 0;
等价于a = (b = (c = 0));
2013-3-13
4
空语句---常见的错误
下面程序的输出?
#include <stdio.h> int main(void) { int i = 0; while (i<100); { printf("a"); ++i; } return 0; }
2013-3-13
; // 只有一个分号,什么也不做
15
2013-3-13
内容
3.1 顺序程序设计举例
3.2 数据的表现形式及其运算 3.3 C语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
2
b q 若记 p 2a
2013-3-13
x1 p q b 4ac 则 2a x2 p q
2
17
#include <stdio.h> #include <math.h> int main(void) { double a, b, c, disc, x1, x2, p, q; printf("请输入一元二次方程的三个系数,以空格隔开:\n"); scanf("%lf %lf %lf", &a, &b, &c); disc = b * b - 4 * a * c; if (disc < 0) { printf("无解!"); } else { p = -b / (2.0 * a); q = sqrt(disc) / (2.0 * a); x1 = p + q; x2 = p - q; printf("该方程有两个根:\nx1=%7.2f\nx2=%7.2f\n", x1, x2); } return 0; }
5
3.3.2 最基本的语句----赋值语句
例3.4 给出三角形的三边长,求三角形面积。 解题思路:假设给定的三个边符合构成三角形的 条件
关键是找到求三角形面积的公式:
area s(s a)(s b)(s c)
其中 s = (a+b+c) / 2
2013-3-13
6
#include <stdio.h> #include <math.h>
2013-3-13
31
3.4.5 字符数据的输入输出
输入:BOY[Enter] 输出:BOY 输入: B[Enter] O[Enter] 输出: B O
29
return 0;
} 2013-3-13
键盘缓冲区
用键盘输入字符时,并不是敲一个字符就将其立即送 给主机。这些字符先暂存在键盘的缓冲区中,只有按 了Enter键才能把这些字符一起送给主机,按先后顺 序分别赋给相应的变量。 作用:
2013-3-13
23
printf()举例----%e
%e,以指数形式输出实数
小数点前必须有而且只有1位非零数字
VC6给出小数位数为6位 指数部分占5列
printf(”%e”,123.456); 输出:1.234560 e+002
2013-3-13
24
scanf()
int main() { double a, b, c, s, area; a = 3.67; b = 5.43; c = 6.21; s = (a + b + c) / 2; area = sqrt(s * (s-a)
* (s-b) * (s-c));
printf("三角形三边的值分别为:a=%f\tb=%f\tc=%f\n", a, b, c); printf("面积:%f\n", area);
if ((a=b;) > 0) // 错
2013-3-13
14
变量赋初值
在声明变量的同时赋以初值,也叫初始化。 int i = 0; 相当于 int i; i = 0; 又例:int a, b, c = 5; //不好的形式,a和b中是随机值 int a = b = c = 3; //错 注意: 一般变量的初始化是在运行时赋值的; 静态存储变量和外部变量的初始化是在编译阶段完成 的
8
2013-3-13
复合的赋值运算符
下面两个语句是等价的
i = i + 2; i += 2;
+、-、*、/、%、<<、>>、&、^、|运算符都可以按 此种方式处理 这种形式看起来更直观,而且执行效率一般也能更高 一些
2013-3-13
9
赋值表达式举例
试分析各变量的值和整个表达式的值: a = 5 + (c = 6) a = (b=4) + (c=6) a = (b = 3*4)
上一节我们学到了
数据类型
char,short,int,long,float,double, long double signed,unsigned
算术运算、自增/自减运算
类型转换
2013-3-13
1
第三章 最简单的C程序设计
----顺序程序设计
2013-3-13
2
内容
3.1 顺序程序设计举例
2013-3-13
11
VC6常见错误:error C2106"= : left operand must be l-value"
解释:赋值号('=')左边的操作数必须是一个左值。 通俗的说:左值就是可以改变的值的变量。 原因:把常量(或不可改变值的变量)放到了赋值号 的左边。 例1:(a=b) = 3*4; 例2:const float PI;
2013-3-13 28
3.4.5 字符数据的输入输出
/* 3_9.c -- 例3.9 从键盘输入BOY三个字符,然后把它 们输出到屏幕 */ #include <stdio.h> int main() { char a, b, c; a = getchar(); b = getchar(); c = getchar(); putchar(a); putchar(b); putchar(c); putchar('\n');
格式:scanf(格式控制,地址表列) 注意 scanf(“%f%f%f”, a, b, c); 对吗? 错,scanf("%f%f%f", &a, &b, &c); scanf(“a=%f, b=%f, c=%f”, &a, &b, &c);输入? 输入必须为:a=1, b=3, c=2[Enter] 如果输入为:1 3 2[Enter] 输出? 输出:a、b、c原有的值 scanf(“%d%c%f”, &a, &b, &c);输入用什么隔开? 用空白字符(包括空格、tab或[Enter])隔开都可 如果输入为:1234a123o.26[Enter] 输出? 输出为:1234 a 123.000000 输入double型数据,一定要用%Lf
PI = 3.14159;
error C2166: l-value specifies const object
2013-3-13
12
2字节整数赋值给4字节整数
低字节原封不动复制,高字节舍弃 char c = ′a′; c = i; // 将2字节的int型赋给char型变量
例: short int i = 289;
2013-3-13 18
<***.h> 和 "***.h"
<>
标准方式,VC6从安装目录的include文件夹内查 找.h文件,效率高 先从用户的当前目录,一般为工程所在目录内查找; 若找不到,再按标准方式查找。
""
系统提供的头文件,用<>; 用户自己定义的头文件, 用""
2013-3-13
2013-3-13
3.3.1 C语句的作用和分类
C语句分为以下5类:
(1) 控制语句: if、switch、for、while、 do…while、continue、break、return、goto等
(2) 函数调用语句
(3) 表达式语句 (4) 空语句 (5) 复合语句:花括号括起的多条语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
3
3.4 数据的输入输出
a += a -= a*a
如果a初值为12, 最终a的值为? -264
printf("%d", a = b);
2013-3-13
10
左值(lvalue)
左值:指可以出现在赋值运算符左侧,且值可以改变 的量。 不是任何形式的数据都可以作为左值。 不能作为左值的值
常量 常变量 算术表达式,如a+b
25
2013-3-13
内容
3.1 顺序程序设计举例
3.2 数据的表现形式及其运算 3.3 C语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
i=289
00000001 0 0 1 0 0 0 0 1 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
c=33
0 0 1 0 0 0 0 1
注意:要避免进行这种赋值,因
为赋值后数值可能发生失真。如 果一定要进行这种赋值,应当保 证赋值后数值不会发生变化。
2013-3-13
13
赋值语句
赋值表达式; 分析下面的代码 if ((a=b) > 0) max = a;
26
3.4 数据的输入输出
Biblioteka Baidu
2013-3-13
3.4.5 字符数据的输入输出
char c; c = getchar();
从键盘读入一个字符,赋值给变量c
putchar(c);
把c输出到屏幕
2013-3-13
27
3.4.5 字符数据的输入输出
// 3_8.c -- 例3.8 先后输出BOY三个字符 #include <stdio.h>
16
3.4 数据的输入输出
2013-3-13
ax2 bx c 0 方程的根。a、b、c由 例3.5 求
键盘输入,设 b 2 4ac >0。
由数学知识已知:如果 b 2 4ac ≥0,则一 元二次方程有两个实根:
b b 4ac x1 2a
2
b b 4ac x2 2a
使命令行的输入可以编辑,即输错了还能回退。
2013-3-13
30
例3.9的更简洁的版本
/* 3_9.c -- 例3.9 从键盘输入BOY三个字符,然后把它 们输出到屏幕 */ #include <stdio.h> int main() { putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar('\n'); return 0; }
19
printf()
格式字符串
输出表列
可以是常量、变量、表达式、带返回值的 函数调用
20
2013-3-13
一般习惯用%d
2013-3-13
21
printf()举例
printf.c
2013-3-13
22
printf()举例----%d%o%x
int a = -1; printf("%d\t%o\t%x\n", a, a, a); 输出: -1 3777777777 ffffffff
改为int a=66, b=79, c=89;也可 int main() { char a = 'B', b = 'O', c = 'Y'; putchar(a); // 向显示器输出字符'B' putchar(b); putchar(c); putchar('\n'); // 向显示器输出换行符
return 0; }
return 0; }
2013-3-13 7
赋值表达式
语法形式:
变量名 赋值运算符= 表达式 a = 0 被赋值变量赋值后的值 求赋值运算符右侧的“表达式”的值 赋给赋值运算符左侧的变量
赋值表达式的结果
求解过程:
a = b = c = 0;
等价于a = (b = (c = 0));
2013-3-13
4
空语句---常见的错误
下面程序的输出?
#include <stdio.h> int main(void) { int i = 0; while (i<100); { printf("a"); ++i; } return 0; }
2013-3-13
; // 只有一个分号,什么也不做
15
2013-3-13
内容
3.1 顺序程序设计举例
3.2 数据的表现形式及其运算 3.3 C语句
3.3.1 C语句作用和分类 3.3.2 最基本的语句---赋值语句 3.4.1 输入输出举例 3.4.2 有关数据输出输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出
2
b q 若记 p 2a
2013-3-13
x1 p q b 4ac 则 2a x2 p q
2
17
#include <stdio.h> #include <math.h> int main(void) { double a, b, c, disc, x1, x2, p, q; printf("请输入一元二次方程的三个系数,以空格隔开:\n"); scanf("%lf %lf %lf", &a, &b, &c); disc = b * b - 4 * a * c; if (disc < 0) { printf("无解!"); } else { p = -b / (2.0 * a); q = sqrt(disc) / (2.0 * a); x1 = p + q; x2 = p - q; printf("该方程有两个根:\nx1=%7.2f\nx2=%7.2f\n", x1, x2); } return 0; }
5
3.3.2 最基本的语句----赋值语句
例3.4 给出三角形的三边长,求三角形面积。 解题思路:假设给定的三个边符合构成三角形的 条件
关键是找到求三角形面积的公式:
area s(s a)(s b)(s c)
其中 s = (a+b+c) / 2
2013-3-13
6
#include <stdio.h> #include <math.h>
2013-3-13
31
3.4.5 字符数据的输入输出
输入:BOY[Enter] 输出:BOY 输入: B[Enter] O[Enter] 输出: B O
29
return 0;
} 2013-3-13
键盘缓冲区
用键盘输入字符时,并不是敲一个字符就将其立即送 给主机。这些字符先暂存在键盘的缓冲区中,只有按 了Enter键才能把这些字符一起送给主机,按先后顺 序分别赋给相应的变量。 作用:
2013-3-13
23
printf()举例----%e
%e,以指数形式输出实数
小数点前必须有而且只有1位非零数字
VC6给出小数位数为6位 指数部分占5列
printf(”%e”,123.456); 输出:1.234560 e+002
2013-3-13
24
scanf()
int main() { double a, b, c, s, area; a = 3.67; b = 5.43; c = 6.21; s = (a + b + c) / 2; area = sqrt(s * (s-a)
* (s-b) * (s-c));
printf("三角形三边的值分别为:a=%f\tb=%f\tc=%f\n", a, b, c); printf("面积:%f\n", area);
if ((a=b;) > 0) // 错
2013-3-13
14
变量赋初值
在声明变量的同时赋以初值,也叫初始化。 int i = 0; 相当于 int i; i = 0; 又例:int a, b, c = 5; //不好的形式,a和b中是随机值 int a = b = c = 3; //错 注意: 一般变量的初始化是在运行时赋值的; 静态存储变量和外部变量的初始化是在编译阶段完成 的
8
2013-3-13
复合的赋值运算符
下面两个语句是等价的
i = i + 2; i += 2;
+、-、*、/、%、<<、>>、&、^、|运算符都可以按 此种方式处理 这种形式看起来更直观,而且执行效率一般也能更高 一些
2013-3-13
9
赋值表达式举例
试分析各变量的值和整个表达式的值: a = 5 + (c = 6) a = (b=4) + (c=6) a = (b = 3*4)
上一节我们学到了
数据类型
char,short,int,long,float,double, long double signed,unsigned
算术运算、自增/自减运算
类型转换
2013-3-13
1
第三章 最简单的C程序设计
----顺序程序设计
2013-3-13
2
内容
3.1 顺序程序设计举例
2013-3-13
11
VC6常见错误:error C2106"= : left operand must be l-value"
解释:赋值号('=')左边的操作数必须是一个左值。 通俗的说:左值就是可以改变的值的变量。 原因:把常量(或不可改变值的变量)放到了赋值号 的左边。 例1:(a=b) = 3*4; 例2:const float PI;
2013-3-13 28
3.4.5 字符数据的输入输出
/* 3_9.c -- 例3.9 从键盘输入BOY三个字符,然后把它 们输出到屏幕 */ #include <stdio.h> int main() { char a, b, c; a = getchar(); b = getchar(); c = getchar(); putchar(a); putchar(b); putchar(c); putchar('\n');
格式:scanf(格式控制,地址表列) 注意 scanf(“%f%f%f”, a, b, c); 对吗? 错,scanf("%f%f%f", &a, &b, &c); scanf(“a=%f, b=%f, c=%f”, &a, &b, &c);输入? 输入必须为:a=1, b=3, c=2[Enter] 如果输入为:1 3 2[Enter] 输出? 输出:a、b、c原有的值 scanf(“%d%c%f”, &a, &b, &c);输入用什么隔开? 用空白字符(包括空格、tab或[Enter])隔开都可 如果输入为:1234a123o.26[Enter] 输出? 输出为:1234 a 123.000000 输入double型数据,一定要用%Lf
PI = 3.14159;
error C2166: l-value specifies const object
2013-3-13
12
2字节整数赋值给4字节整数
低字节原封不动复制,高字节舍弃 char c = ′a′; c = i; // 将2字节的int型赋给char型变量
例: short int i = 289;
2013-3-13 18
<***.h> 和 "***.h"
<>
标准方式,VC6从安装目录的include文件夹内查 找.h文件,效率高 先从用户的当前目录,一般为工程所在目录内查找; 若找不到,再按标准方式查找。
""
系统提供的头文件,用<>; 用户自己定义的头文件, 用""
2013-3-13
2013-3-13
3.3.1 C语句的作用和分类
C语句分为以下5类:
(1) 控制语句: if、switch、for、while、 do…while、continue、break、return、goto等
(2) 函数调用语句
(3) 表达式语句 (4) 空语句 (5) 复合语句:花括号括起的多条语句