C语言第4章
合集下载
C语言程序设计第4章
16
4.2.2 逻辑表达式
例:设a=3,b=4,x=0,y=0,求值: 结果:0 1、a < b && x > y 结果:1 2、a = = b || x = = y 3、! a || a > b 结果:0 4、! a && b || x > y 结果:0 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2
当尝试对该程序进行编译时,C语言编译器会报告 "illegal else without matching if"的语法错误。 28
4.3.4使用if语句应注意的问题
void main() { int x; x=1; if(x==1) printf("x等于1\n"); else ; /*这里多加了个分号*/ printf("x不等于1\n"); }
if(表达式) 语句1 else 语句2
真 表达式 语句1 语句2 假
如果括号内的表达式为真,则执行括号后面的 语句1。如果表达式值为假,则执行else后面的 语句2;语句1和语句2只能有一个被执行。
21
4.3.2 else子句
【例4-2】输入两个整数,将较大者输出。 /*程序4-2*/ #include<stdio.h> void main () { int a, b, max; printf("Please input the data a and b:"); scanf("%d, %d",&a, &b); if(a>=b) max=a; else max=b; printf("The max is %d\n", max); }
4.2.2 逻辑表达式
例:设a=3,b=4,x=0,y=0,求值: 结果:0 1、a < b && x > y 结果:1 2、a = = b || x = = y 3、! a || a > b 结果:0 4、! a && b || x > y 结果:0 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2
当尝试对该程序进行编译时,C语言编译器会报告 "illegal else without matching if"的语法错误。 28
4.3.4使用if语句应注意的问题
void main() { int x; x=1; if(x==1) printf("x等于1\n"); else ; /*这里多加了个分号*/ printf("x不等于1\n"); }
if(表达式) 语句1 else 语句2
真 表达式 语句1 语句2 假
如果括号内的表达式为真,则执行括号后面的 语句1。如果表达式值为假,则执行else后面的 语句2;语句1和语句2只能有一个被执行。
21
4.3.2 else子句
【例4-2】输入两个整数,将较大者输出。 /*程序4-2*/ #include<stdio.h> void main () { int a, b, max; printf("Please input the data a and b:"); scanf("%d, %d",&a, &b); if(a>=b) max=a; else max=b; printf("The max is %d\n", max); }
计算机程序设计基础c语言4
4.6 递归
如果一个函数在调用的过程中出现直接或者间接地调用 该函数本身,称为函数的递归调用。C语言的特点之一就是 允许使用函数的递归调用。
int fn(int a) { int x,y;
…
y=fn(x);
return (3*y);
} 在调用函数fn()的过程中,又出现再次调用fn()函数,这 就是函数的递归调用,函数fn()称为递归函数。像函数fn()这 样直接调用自身的,称为函数的直接递归调用。
在函数体中也应将变量的声明放在使用该变量之前,否则会 出现编译错误。
4.2.2 函数声明与函数原型
(一)函数声明 形式如下:
返回数据类型 函数名(形式参数类型 形式参数名); 如 float max1(float a, float b); 注意:
当被调函数的定义位于主调函数之前,可以省略函数 声明;若定义在后,则必须在主调函数之前对被调函 数进行声明。
对于有参函数,在声明时可以省略形式参数的名称, 但类型不能省略。 如 float max1(float , float);
函数声明时不要忘记语句末尾的分号“;”。
4.2.2 函数声明与函数原型
(二)函数原型 形式如下:
返回数据类型 函数名(形参类型 形参名); 返回数据类型 函数名(形参类型);
4.4 函数返回类型与返回值
2.无返回值函数 如果函数没有返回值,则定义为“空”类型,类型说明 符为“void”。无返回值函数用于完成特定的处理任务, 执行完后不向主调函数返回任何值。如
void printstar() {
printf("********"); } 如果要在主调函数中调用printstar函数,则语句为:
n!=1 n!=n×(n-1)!
C语言 第4章 选择结构程序设计
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
C语言程序设计第4章 选择结构程序设计-2018
(3) x、y和z中有两个为负数。 设x、y、z均为int型变量,则对应表达式为:
(x<0&&y<0&&z>=0)|| (x>=0&&y<0&&z<0)|| (x<0&&y>=0&&z<0)
(2) x和y中至少有一个小于z。
设x、y、z均为int型变量,则对应表达式为: (x<z)||(y<z)
注意
– 可等价于一条语句 – 可以嵌套使用
• 格式
{ <语句序列> { <语句序列> } <语句序列>
}
4.3.2 复合语句
• 【例4-2】迪士尼门票规定65周岁及以上的老 年人,平日票价为280元,高峰日票价为375元。
– 语句1为内嵌语句,只允许是一条语句,可以是简单的语句、复合 语句或者另一个if语句等
• 执行过程
– 先求解表达式
– 如果表达式的值为“真”,则执行语句1
– 否则,如果表达式的值为“假”,则什么都不做
4.3.2 复合语句
• 复合语句
– 用一对大括号将一组语句序列括起来,通常可以出现在允 许单条语句出现的地方
第4章 选择结构程序设计
目录
4.1 门票价格问题 4.2 条件的表示 4.3 单分支结构 4.4 双分支结构 4.5 多分支结构 4.6 综合案例 练习 4
问题
– 如果今天下雨,我就不去植物园 – 鱼与熊掌不可兼得 – 同样一件衣服,京东、天猫、唯品会、
官网、实体店都有售,价格、送货时间、 品质保障、优惠方式等各不同,到底选 择买哪一家的呢 – 复杂决策问题
(x<0&&y<0&&z>=0)|| (x>=0&&y<0&&z<0)|| (x<0&&y>=0&&z<0)
(2) x和y中至少有一个小于z。
设x、y、z均为int型变量,则对应表达式为: (x<z)||(y<z)
注意
– 可等价于一条语句 – 可以嵌套使用
• 格式
{ <语句序列> { <语句序列> } <语句序列>
}
4.3.2 复合语句
• 【例4-2】迪士尼门票规定65周岁及以上的老 年人,平日票价为280元,高峰日票价为375元。
– 语句1为内嵌语句,只允许是一条语句,可以是简单的语句、复合 语句或者另一个if语句等
• 执行过程
– 先求解表达式
– 如果表达式的值为“真”,则执行语句1
– 否则,如果表达式的值为“假”,则什么都不做
4.3.2 复合语句
• 复合语句
– 用一对大括号将一组语句序列括起来,通常可以出现在允 许单条语句出现的地方
第4章 选择结构程序设计
目录
4.1 门票价格问题 4.2 条件的表示 4.3 单分支结构 4.4 双分支结构 4.5 多分支结构 4.6 综合案例 练习 4
问题
– 如果今天下雨,我就不去植物园 – 鱼与熊掌不可兼得 – 同样一件衣服,京东、天猫、唯品会、
官网、实体店都有售,价格、送货时间、 品质保障、优惠方式等各不同,到底选 择买哪一家的呢 – 复杂决策问题
《C语言程序设计课件》第四章-数组
提示:程序在读入数时将其存储在一个数组中, 然后通过数组反向开始一个接一个地显示出数组 元素。
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]
第4章 C语言程序的基本控制结构
#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
高树芳C语言程序设计--第四章
37
4.5 switch语句
案例4-10 计算成绩级别 案例4-11 根据月份求季度 案例4-12 输入算式做四则运算
38
4.5 switch语句
案例4-10 [案例任务]
计算成绩级别
输入百分制成绩,输出成绩级别A、B、C、D、E。 90~100分以上为A,80~89分为B,70~79为C, 60~69为D,0~59为E,其他成绩则显示“成绩 错误!”。
26
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
27
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
[案例任务]
对于如下函数: 用scanf函数输入x的值,输出y的值。 运行结果如下(输入的数据是9)
[解决方案]使用if „ else if„else语句。
28
4.4
分析下列程序的运行结果,掌握“与”、 “或”、“非”三个逻辑运算符及其优先级。
程序代码
11
4.3 逻辑运算符和逻辑表达式
相关知识: 1.逻辑运算符及其优先级 2. 逻辑表达式 3. 逻辑表达式的优先级与结合性
12
4.3 逻辑运算符和逻辑表达式
案例4-4 [案例任务]
逻辑运算中的“短路”现象
分析下列程序的运行结果,掌握多个运算对象 进行“与”、“或”情况下的“短路”现象。
22
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
23
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
[案例任务]
由键盘输入两个整数,输出它们中的最大 者。运行结果如下:
4.5 switch语句
案例4-10 计算成绩级别 案例4-11 根据月份求季度 案例4-12 输入算式做四则运算
38
4.5 switch语句
案例4-10 [案例任务]
计算成绩级别
输入百分制成绩,输出成绩级别A、B、C、D、E。 90~100分以上为A,80~89分为B,70~79为C, 60~69为D,0~59为E,其他成绩则显示“成绩 错误!”。
26
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
27
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
[案例任务]
对于如下函数: 用scanf函数输入x的值,输出y的值。 运行结果如下(输入的数据是9)
[解决方案]使用if „ else if„else语句。
28
4.4
分析下列程序的运行结果,掌握“与”、 “或”、“非”三个逻辑运算符及其优先级。
程序代码
11
4.3 逻辑运算符和逻辑表达式
相关知识: 1.逻辑运算符及其优先级 2. 逻辑表达式 3. 逻辑表达式的优先级与结合性
12
4.3 逻辑运算符和逻辑表达式
案例4-4 [案例任务]
逻辑运算中的“短路”现象
分析下列程序的运行结果,掌握多个运算对象 进行“与”、“或”情况下的“短路”现象。
22
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
23
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
[案例任务]
由键盘输入两个整数,输出它们中的最大 者。运行结果如下:
数据的基本表现形式 c语言 第4章
123(无前导0) 087(不能含有非八进制数码) O123(前导不能是字母O或o)
0x123(十进制整数291)
十六进制 0x9F(十进制整数159) -0X1AF0(十进制整数-6896)
0x9G7(不能含有非十六进制数码)
5A(无前导0x或0X) OX12A(前导不能是字母O或o)
程序设计基础
程序设计基础
4.1 常量
字面常量
3. 字符常量 字符常量通常指的是单个字符,在C语言中用单引号将单个字 符括起来,如'a'、'b'、'c'。 转义字符(用于描述不可见字符)以反斜线“\”开头,其含义 是将反斜线后面的字符转换成另外的含义。
转义字符 \a \b \f \n \r \t \v 含义 响铃(BEL) 退格 换页 换行 回车 水平跳格(tab) 垂直跳格 转义字符 \\ \? \' \" \0 \ddd \xhh 含义 反斜杠 问号 单引号 双引号 空字符(NULL) 1~3位八进制数所代表的字符 1~2位十六进制数所代表的字符
程序设计基础
4.1 常量
符号常量
使用符号常量有如下好处: 1. 程序的可读性好——见名知意; 2. 程序的可修改性好——改一处避免处处改。 3. 避免误操作——采用统一值。
程序设计基础
4.2 变量
变量的概念
变量:在程序的运行过程中其值可以被改变的量,变量用一 个标识符来表示,称为变量名。 编译器在对源程序进行编译时,会给每个变量分配一个特定 大小的存储单元,并将变量名与这个存储单元的起始地址绑 定在一起。
a的ASCII码为97 \0的ASCII码为0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0
0x123(十进制整数291)
十六进制 0x9F(十进制整数159) -0X1AF0(十进制整数-6896)
0x9G7(不能含有非十六进制数码)
5A(无前导0x或0X) OX12A(前导不能是字母O或o)
程序设计基础
程序设计基础
4.1 常量
字面常量
3. 字符常量 字符常量通常指的是单个字符,在C语言中用单引号将单个字 符括起来,如'a'、'b'、'c'。 转义字符(用于描述不可见字符)以反斜线“\”开头,其含义 是将反斜线后面的字符转换成另外的含义。
转义字符 \a \b \f \n \r \t \v 含义 响铃(BEL) 退格 换页 换行 回车 水平跳格(tab) 垂直跳格 转义字符 \\ \? \' \" \0 \ddd \xhh 含义 反斜杠 问号 单引号 双引号 空字符(NULL) 1~3位八进制数所代表的字符 1~2位十六进制数所代表的字符
程序设计基础
4.1 常量
符号常量
使用符号常量有如下好处: 1. 程序的可读性好——见名知意; 2. 程序的可修改性好——改一处避免处处改。 3. 避免误操作——采用统一值。
程序设计基础
4.2 变量
变量的概念
变量:在程序的运行过程中其值可以被改变的量,变量用一 个标识符来表示,称为变量名。 编译器在对源程序进行编译时,会给每个变量分配一个特定 大小的存储单元,并将变量名与这个存储单元的起始地址绑 定在一起。
a的ASCII码为97 \0的ASCII码为0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0
C语言程序设计第4章
技能目标
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
c语言弟4章
{z=x%y;x=y;y=z;}
return x;}
【答案】8
3.
#include <stdio.h>
func(int a,int b)
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return m;}
}
【答案】[1] r!=0 [2]fmax(m,n) [3] a,b
3.编写函数,根据整型形参m的值,计算公式t=1-1/22-1/32……1/m2的值。例如,若m=5,则应输出0.536389。
#include <stdio.h>
#define N 5
float fun(int m)
for (n=__[1]___;n<2009;n++)
if(_ [2]__)
printf("year:%d is a leap! \n",n);
}
【答案】[1]1000 [2] fun(n)
2.编写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
{n++; t= t/10;} /*求出M是几位的数*/
t=m;
while(t)
{if(t/(int)pow(10,n-1)!=t%10) /*比较其最高位和最低位*/
return 0;
else
{t=__[1]___; /*去掉其最高位*/
7.
#include <stdio.h>
#define f(x) x*x
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
C语言简明教程第04章最简单C程序设计
getchar函数 功能:从标准输入设备上(键盘)输入一个且只
能是一个字符,并将该字符返回为函数的值。
格式:getchar();
没有参数 例:
#include <stdio.h>
注意:
main()
(1)只有在按“回车”键之后输入的字
{
符才有效.
int i;
(2)此函数只接受一个字符,而非一
i=getchar(); printf(“%c:%d\n”,i,i);
格式字符
说
明
l
用于长整型,可加在格式符d、o、x、u前面
%lf将修正为double型
h
将整型格式d、o、x、u修正为short型
m(正整数) 数据最小宽度
n(正整数) 对实数表示输出n位小数;对字串表示截取的字符个数
-
输出的数字或字符在域内向左靠
0
用“0”来填充数字前面的空位
长度修饰符:l(长),h(短),放在(1)格式字符前面。 域宽和精度描述符:m(域宽).n(精度),放在长度修饰符的前面。
格式控制符:规定 数据的输入格式, 必须由“ ”括起来 ,其内容包括格式 说明(修饰符)和 格式符两部分。
地址列表:由一个或多个 变量的地址组成,变量地 址之间以“,”分隔。也 可以是字符串的首地址。
在C语言中一个变量的地址 可以通过&地址运算符得到。 例如:int a,b;
则a,b的地址为&a,&b。
❖ 4.空语句。下面是一个空语句: ;
即只有一个分号的语句,它什么也不做。有时用来作被转向点,或 循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。
❖ 5.可以用{ }把一些语句括起来成为复合语句,如下面是一个复合 语句。 {z=x+y; t=Z/100; printf(”%f”,t); }
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
《c语言程序设计教学资料》第4章---键盘输入与屏幕输出
%m.ne printf(”%13.2e”,123.456); 输出: 1.23e+002 (前面有4个空格)
编辑ppt
编辑ppt
格式化输出
例: m.n 例:int a=1234; float f=123.456; char ch=‘a’; printf(“%8d\n%2d\n”,a,a); printf(“%f\n%8f\n%8.1f\n%.2f\n%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
float f=123.456; printf(“%f\n%10f\n%10.2f\n%.2f\n%-10.2f\n”,f,f,f,f ,f ); }
编辑ppt
%e格式符
指定以指数形式输出实数 VC++给出小数位数为6位
指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+002
补空格。
编辑ppt
输出实数时的有效位数。
#include <stdio.h> void main() { float x,y;
x=111111.111; y=222222.222; printf(″%f″,x+y); }
编辑ppt
例4.8 输出实数时指定小数位数。
#include <stdio.h> void main() {
有以下几种用法:
① %f。不指定字段宽度,由系统自动指定字段宽度,使整数
部分全部输出,并输出6位小数。应当注意,在输出的数字中
并非全部数字都是有效数字。单精度实数的有效位数一般为7位。
②%m.nf。指定输出的数据共占m列,其中有n位小数。如果
编辑ppt
编辑ppt
格式化输出
例: m.n 例:int a=1234; float f=123.456; char ch=‘a’; printf(“%8d\n%2d\n”,a,a); printf(“%f\n%8f\n%8.1f\n%.2f\n%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
float f=123.456; printf(“%f\n%10f\n%10.2f\n%.2f\n%-10.2f\n”,f,f,f,f ,f ); }
编辑ppt
%e格式符
指定以指数形式输出实数 VC++给出小数位数为6位
指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+002
补空格。
编辑ppt
输出实数时的有效位数。
#include <stdio.h> void main() { float x,y;
x=111111.111; y=222222.222; printf(″%f″,x+y); }
编辑ppt
例4.8 输出实数时指定小数位数。
#include <stdio.h> void main() {
有以下几种用法:
① %f。不指定字段宽度,由系统自动指定字段宽度,使整数
部分全部输出,并输出6位小数。应当注意,在输出的数字中
并非全部数字都是有效数字。单精度实数的有效位数一般为7位。
②%m.nf。指定输出的数据共占m列,其中有n位小数。如果
第4章 C语言选择结构程序设计
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
C语言程序设计:第4章 顺序结构与选择结构
printf("max: %d\n",a); if(a < b)
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)
第4章c语言的三种基本结构
程序1: /*exp51.c*/ #include <stdio.h> main ( ) { int x, y;
scanf(“%d", &x); if (x<0)
y= -1; else if (x==0)
y=0; else
y=1; printf ("x=%d, y=%d\n", x, y); }
程序2:将程序1的if语句改为: /*exp52.c*/ #include <stdio.h> main ( ) { int x, y; scanf(“%d", &x); if (x>=0)
1. 顺序结构 先执行A, 再执行B.
A 表示 A B
B
2. 选择结构 存在某条件P, 若P为真,则执行A, 否则执行B。
TP F
A
B
表示为
TP F AB
另一种选择结构––多分支结构.
K
K=K1 K=K2
K=Kn
A1 A2 … Ai … An
3. 循环结构
有两种结构:当型和直到型 (1) 当型结构
例:计算10!并输出结果。
main()
main()
{
{
int i=1, sum=1;
int i=1; long sum=1;
loop: if (i<=10)
loop: if (i<=10)
{
{
sum=sum*i;
sum=sum*i;
i++;
i++;
goto loop;
goto loop;
}
}
printf(“10!=%d\n”,sum); printf(“10!=%ld\n”,sum
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a A
putchar('\n'); putchar(65); }
7
putchar(c);
2、printf() 格式输出符,向终端输出多种类型的数据。 格式输出符,向终端输出多种类型的数据。 1)可直接打印的字符,用双引号括起。 可直接打印的字符,用双引号括起。 student.\ printf("I am a student.\n"); 2)输出变量 %格式符 输出: 输出:a=65 输出:1/3=0.333% 输出:1/3=0.333% printf("a=%d\ printf("a=%d\n", 65); 3)若打印%,则用%% 若打印% 则用%% printf("1/3=0.333%%"); printf("1/3=0.333%%"); %% 输出: 输出:I am a student.
13
%m.nf:输出数据占m列,输出 位小数,整数部分全 :输出数据占 列 输出n位小数 位小数, 部输出,右对齐。若整个长度大于m列 部输出,右对齐。若整个长度大于 列,则数据全部输 出。 %-m.nf:输出数据占m列,输出 位小数,整数部分全 :输出数据占 列 输出n位小数 位小数, 部输出,左对齐。若整个长度大于m列 部输出,左对齐。若整个长度大于 列,则数据全部输 出。
printf("%c,%5c,%-3c%c\n",a,b,a,b);
输出: 输出:b,_ _ _ _ A,b _ _ A
11
字符串形式 %s:输出字符串常量 : %ms:输出字符串占m个字符,右对齐,若字符串输出长度大 :输出字符串占 个字符,右对齐, 个字符 于m,则字符串全部输出。 ,则字符串全部输出。 %-ms:输出字符串占m个字符,左对齐,若字符串输出长度大 :输出字符串占 个字符,左对齐, 个字符 于m,则字符串全部输出。 ,则字符串全部输出。 %m.ns:输出占m列,但只输出字符串左端n个字符,右对齐, :输出占 列 但只输出字符串左端 个字符,右对齐, 个字符 大于m, 个字符全部输出。 若n大于 ,则n个字符全部输出。 大于 个字符全部输出 %-m.ns:输出占m列,但只输出字符串左端n个字符,左对齐, :输出占 列 但只输出字符串左端 个字符,左对齐, 个字符 大于m, 个字符全部输出。 若n大于 ,则n个字符全部输出。 大于 个字符全部输出 printf("%s","CHINA"); 输出:CHINA 输出: printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA", "CHINA"); 输出: 输出:CHINA,_ _ _ _ _ CH,CHIN,CHI_ _ _
6
数据输出
1、putchar() 、 向终端(屏幕、打印机)输出一个字符 字符。 向终端(屏幕、打印机)输出一个字符。 putchar('a'); putchar(c); c可以是整型或字符型的常量或变量。 可以是整型或字符型的常量或变量。 可以是整型或字符型的常量或变量 注意: 函数在标准I/O库 注意:putchar()函数在标准 库 stdio.h中,使用时在 函数在标准 中 程序头一定要有 #include"stdio.h" #include"stdio.h" main() { char c; c='a';
printf("%e",123.456); printf("%10.2e",123.456); printf("%.2e",123.456); 输出: 输出:1.234559e+002 输出: 输出:_1.23e+002 输出: 输出:1.23e+002
printf("-12.3e",123.456); 输出:1.234e+002_ _ 输出: %g:根据实型数据输出宽度的大小,自动选择 和%e中宽度较 :根据实型数据输出宽度的大小,自动选择%f和 中宽度较 15 小的一种。 小的一种。
int a; a=-2L; printf("%d\n",a); int k=-1;
输出: 输出:-2
printf("%d,%u\n",k,k); k=8567; printf("|%-6d|\n",k); k=-856; printf("|%6D|\n",k);
输出:- , 输出:-1,65535 :- 输出: 输出:|8567_ _|
main() 输出: 输出:1_ _ _ _ _ _ _ _ _ A_ _ _ _ _B_ { char c1, c2, c3; _ _ _ _123.678.909_ _ _ _ _ float f1, f2; _ _ _34_ _900 int i1, i2; c1=49; c2='A'; c3=66; _ _ _ _ _ _ _ _CHCHI f1=123.67; f2=8.9087; i1=34; i2=900; printf("%c\t%3c\t%-2c\n",c1,c2,c3); printf("%10.2f %-10.3f\n",f1, f2); printf("%5d%5d\n",i1, i2); printf("%10.2s%-.3s\n","CHINA","CHINA"); } 16
%lu:无符号长整型数 : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 输出 -1, 177777,ffff , , 65535
9
%md:输出数据的长度占m个字符,右对齐。 :输出数据的长度占 个字符 右对齐。 个字符, %-md:输出数据的长度占 个字符,左对齐。 个字符, :输出数据的长度占m个字符 左对齐。 若数据长度大于m个字符 以数据长度为准。 个字符, 若数据长度大于 个字符,以数据长度为准。 11111111111111111111111111111111
12
实型数形式: 实型数形式: %f:整数部分全部输出,同时输出6位小数,注意:这6 :整数部分全部输出,同时输出 位小数 注意: 位小数, 位小数并非有效数字。 位小数并非有效数字。 %m.nf:输出数据占m列,输出 位小数,整数部分全部 :输出数据占 列 输出n位小数 位小数, 输出,右对齐。若整个长度大于m列 则数据全部输出。 输出,右对齐。若整个长度大于 列,则数据全部输出。 %-m.nf:输出数据占m列,输出 位小数,整数部分全部 :输出数据占 列 输出n位小数 位小数, 输出,左对齐。若整个长度大于m列 则数据全部输出。 输出,左对齐。若整个长度大于 列,则数据全部输出。 main() 输出: 输出:33333.328125 { float x, y; x=11111.111; y=22222.222; printf("%f\n", x+y); }
5
要使用C语言提供的输入输出函数时 , 要使用 语言提供的输入输出函数时, 必须 语言提供的输入输出函数时 在程序的开头增加一行: 在程序的开头增加一行: #include <stdio.h> 即包含输入输出函数的头文件"stdio.h"。 有 。 即包含输入输出函数的头文件 关包含文件的作用,在编译预处理部分( 关包含文件的作用 , 在编译预处理部分 ( 第 五章)作详细介绍。 五章)作详细介绍。
输出: 输出: |%6D|
17
char ch='a'; int k=12 输出: 61,141,k=%d printf("%x,%o",ch, ch, k); 输出 printf("k=%%d\n",k); char a='a'; 输出: 输出 98,c a--; printf("%d,%c\n",a+'2'-'0', a+'3'-0); char a='a'; 输出: 输出 99, b a++; printf("%d,%c\n",a++, a++);
20
2、scanf( ) 、 格式输入符,向内存中的变量输入多种格式符, 格式输入符,向内存中的变量输入多种格式符,变量要事 先定义。 先定义。 %d:输入整型数 : a 1 输出: 输出: %x:输入十六进制整数 : b 2 %o:输入八进制数 : 1,2,3 main( ) c 3 { int a, b, c;/*定义变量 定义变量*/ 定义变量 scanf("%d%d%d",&a, &b,&c);/*等待键盘输入 等待键盘输入*/ 等待键盘输入 printf("%d,%d,%d",a,b,c); 从键盘输入变量: 从键盘输入变量:1_2_3 } &:地址运算符,输入时将输入的数据放入事先定义 地址运算符, 的变量的地址中。 的变量的地址中。 21
10
字符形式: 字符形式: %c:一个字符 : %mc:字符占m宽度,右对齐。 :字符占 宽度 右对齐。 宽度, %-mc:字符占m宽度,左对齐。 :字符占 宽度 左对齐。 宽度, main() { char a=98; char b=0x41; }
a 0 1 1 0 0 0 1 0 b 0 1 0 0 0 0 0 1
第三章 最简单的C程序设计
1
程序的三种基本结构 1、顺序
A B
2、选择
条件? 条件? T F B T
x>y? ? F z=x z=y