经典C语言 第四章 C程序设计初步
合集下载
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语言第四章.选择结构程序设计

case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }
计算机程序设计基础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语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2
或
逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】
C语言程序设计4-1

注:可以输出“转义字符” 可以输出“转义字符” putchar(‘\n’); putchar(‘\141’); putchar(‘\101’);
换行 a A
第四章 第4节
二 . getchar ( ) 函数 ——字符输入函数 ——字符输入函数
形式: 形式: getchar( ) 为空; 为空;无参数 作用: 作用: 从键盘上输入一个字符
例: float f=123.456; printf(“%f %e %g”,f,f,f,); 结果: 123.456000 1.234560e+002 123.456 结果:
10列 列 13列 列 7列 列
二 . 格式输入函数 scanf ( ) 1. 形式 : scanf( 格式控制, 地址表列) 格式控制, 地址表列)
1)格式说明——将输出数据转化为指定格式 1)格式说明 格式说明——将输出数据转化为指定格式
开头 + 修正或附加说明 + 格式字符 可选,可省 可选 可省 控制 % 0 m.n l h d c u 必须有 f g e
左对齐
空补0 指定宽度 空补 m指定宽度 n小数位数 小数位数
2.函数调用语句 2.函数调用语句
例: 1) printf(“%d”,a);
3.表达式语句 3.表达式语句
例: 1) 2) i=i+1; i+1;
(可执行,但无实际意义) 可执行,但无实际意义) 可执行
4.空语句 4.空语句 空语句——由单独的 ;组成 由单独的 例: ; 不作任何操作, 不作任何操作,但合法
输入项, 变量的地址。 输入项 变量的地址。如:&x 如有多个变量,则用逗号分开。 如有多个变量,则用逗号分开。如:&x,&y,&z 1)格式说明 格式说明 开头 + 修正或附加说明 + 格式字符 由“” 括起来 的字符 串, 实现 对输入 格式的 控制
《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]]]
《C语言程序设计课件》第四章-循环语句
scanf("&d",&n); while(n!=0)
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
高树芳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语言程序设计第四版第四章答案谭浩强.doc
break;
case 3: printf( * *%d,%d,%d "9hundred9ten9indiv);
printf(n\n反序数字为:”);
printf(H%d%d%d\nM,indiv,ten,hundred);
break;
case 2: printf(n%d,%dH,ten,indiv);
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1)用if语句编程序。
#include <stdio.h>
main()
{long i;
float bonus,bonl^bon2^bon4^bon6^bonl0;
bonl=100000*0.1;
printf(M\n反序数字为:”);
printf(fl%d%d\nf\indiv,ten);
break;
case 1: printf(n%dn,indiv);
printf(M\n反序数字为:”);
printf(H%d\nM,indiv);
break;
}
}
4.10企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%;利 润高于10万元,低于20万元(100()00vlW200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<1^400000时,其中20万元仍按上述办法提成(下 同),高于20万元的部分按5%提成;400000<1^600000时,高于40万元的部分按3%提 成;600000 <1^1000000时,高于60万的部分按1.5%提成;1>1000000时,超过100万元 的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序; ⑵用switch语句编程序。
case 3: printf( * *%d,%d,%d "9hundred9ten9indiv);
printf(n\n反序数字为:”);
printf(H%d%d%d\nM,indiv,ten,hundred);
break;
case 2: printf(n%d,%dH,ten,indiv);
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1)用if语句编程序。
#include <stdio.h>
main()
{long i;
float bonus,bonl^bon2^bon4^bon6^bonl0;
bonl=100000*0.1;
printf(M\n反序数字为:”);
printf(fl%d%d\nf\indiv,ten);
break;
case 1: printf(n%dn,indiv);
printf(M\n反序数字为:”);
printf(H%d\nM,indiv);
break;
}
}
4.10企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%;利 润高于10万元,低于20万元(100()00vlW200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<1^400000时,其中20万元仍按上述办法提成(下 同),高于20万元的部分按5%提成;400000<1^600000时,高于40万元的部分按3%提 成;600000 <1^1000000时,高于60万的部分按1.5%提成;1>1000000时,超过100万元 的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序; ⑵用switch语句编程序。
c语言第四章 数组和结构.ppt
C语言程序设计
10
任务4.2 筛法依据
方法的依据:
1到200这些自然数可以分为3类: (1)单位数,即1 (2)素数,大于1,且只能被1和它自身整除 (3)合数,除了1和自身,还有其他正因子 筛法实际上是筛去合数,留下素数 为了提高筛法效率,注意到: 如n为合数(这里是200),c为n的大于1的最
赋过初值后的ice变量如下图所示
C语言程序设计
22
4.2.3 二维数组中的元素存放顺序
在内存中二维数组中的元素是按行存放的。 如上例中的二维数组 ice,其元素的存放顺序 如下图所示。
•二维数组一经定义, 系统就为其分配了连 成一片的存储区域, 这个区域有个首地址, 即ice[0][0]的地址, C/C++规定数组名就是 这个首地址的符号地 址
(5)第二遍扫描后, a[4]位置已定,以 后也不需再与a[4] 交换
以此类推每遍扫描 后都有一个元素的 位置已定,以后不 需再与之进行比较
C语言程序设计
15
冒泡排序算法设计
为了表述方便,定义以下3个变量
–(1)待排序的数的个数n(此处为6) –(2)扫描遍数j(j=1,2,3,…n-1) –(3)每遍扫描时待比较元素的下标i(i=1,2,3,…n-j)
定义格式:
–类型标识符 数组名[一维数组个数][一维数组中元素 的个数]
用于描述冰山高度的二维数组的定义为:
–int ice[5][7];
–上面语句定义了名为ice的数组,它包含5个一维数组, ice[0],ice[1]…ice[4],每个一维数组含7个整型元
素。
二维数组是带两个下标的变量,第一个下标规定
h[4]=‘4’;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初步
(1) 逻辑上每个语句最后都必须有一个分号(;), 一个语句 可分写成几行, 几个语句也可合写成一行(但不提倡, 因其不 利于单步调试)。
(2) 空语句直接由分号(;)组成,常用于控制语句中必须出 现语句之处,它不做任何操作,只在逻辑上起到有一个语句的 作用。
【例4.4】
main()
{ int a=-1,b=10; float c=3.14; printf("a=%d\n",a); /*输出:a=-1*/ printf("a=%u\n",a); /*输出:a=65535*/ printf("a=%o\n",a); /*输出:a=-177777*/ printf("a=%x\n",a); /*输出:a=ffff*/ printf("b=%d c=%.2f\n",b,c);/* 输出:b=10 c=3.14*/ printf("b=%.2f c=%d\n",b,c);/* 输出:b=0.00 c=16393*/ }
一般形式为:
%[附加格式说明符]格式字符
第 4章 C程序设计初步
printf()函数的格式字符和常用的附加格式说明符分别见表4-1 和表4-2。 表4-1 printf()函数格式字符
第 4章 C程序设计初步
按%f格式输出实型数据时, 整数部分全部输出, 小数部分 保留六位。
在Turbo C中,按%e格式输出实型数据时,输出占十一位,
printf("b=%-8.2f\n",b);/* 输出:b=123.46□□*/
第 4章 C程序设计初步
printf("b=%.2f\n",b);/* 输出:b=123.46*/ printf("b=%e\n",b);/* 输出:b=1.23456e+02*/ printf("b=%8.2e\n",b);/* 输出:b=□1.2e+02*/ printf("b=%-8.2le\n",b);/* 输出:b=1.2e+02 */ printf("b=%.2e\n",b);/* 输出:b=1.2e+02*/ printf("str=%s\n","china");/*输出:china*/ printf("str=%8.3s\n","china");/*输出:□□□□□chi*/ printf("str=%-6.3s\n","china");/*输出:chi□□□*/ printf("str=%.6s\n","china");/*输出:china*/ }
第 4章 C程序设计初步
4.2.4格式输入函数—scanf()
一般调用格式: scanf("格式控制字符串",地址表列)
功能:按指定的格式从键盘读入数据,并存入地址表列指
定的内存单元中。 返回值:返回输入数据个数。 地址表列:是由若干个地址组成的表列,可以是变量的地 址或字符串的地址,C 语言中变量的地址通过取地址运算符 “&”得到,表示形式为:&变量名,如变量a的地址为&a。 格式控制字符串:同printf()函数类似,是由普通字符和格式 说明组成。普通字符,即需原样输入的字符,包括转义字 符。格式说明同printf()函数相似。scanf()函数格式字符和常 用的附加格式说明符见表4-3和表4-4。
第 4章 C程序设计初步
教学难点: 1.格式化输入输出语句; 2.Switch~case语句的格式与使用; 3.do~while循环与 while循环的区别; 4.break语句与continue语句的区别;
5.带参数宏的定义方法与宏替换规则。
教学方法:
理论教学与实践教学相结合。
第 4章 C程序设计初步
printf("a=%2d\n",a);/* 输出:a=1234*/ printf("a=%#o\n",a);/* 输出:a=02322*/
printf("a=%#x\n",a);/* 输出:a=0x4d2*/
printf("b=%f\n",b);/* 输出:b=123.456223*/ printf("b=%8.2lf\n",b);/* 输出:b=□□123.46*/
第 4章 C程序设计初步
(5) 控制语句有条件判断语句(if、 switch), 循环语句 (for、 while、 do -while),转移语句 (goto、 continue、 break、 return)。
第 4章 C程序设计初步
4.2基本输入输出函数
4.2.1字符输出函数—putchar() 一般调用格式:putchar(参数) 其中,参数可以是任意类型表达式,一般为算术表达式。 功能:向显示器输出一个字符。
printf("%d %d %d",1,2); /*输出结果为1 2 随机值*/ 2.在格式控制字符串中,两个连续的%只输出一个%。如:
printf("%f%%",1.0/6); /* 输出结果为0.166666% */
3.格式说明与输出的数据类型要匹配,否则得到的输出结果 可能不是原值 。
第 4章 C程序设计初步
第 4章 C程序设计初步
scanf("%c%c%c",&ch1,&ch2,&ch3); /*输入:A□↙*/ printf("%c%c%d\n",ch1+32,ch2,ch3);/*输出:a□10*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("a=%d, b=%d",&a,&b); /*输入:a=3, b=4↙*/ printf("a+b=%d a*b=%d\n",a+b,a*b); /*输出:a+b=7 a*b=12*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%ld",&c); /*输入:65535↙*/ printf("c=%#x\n",c); /*输出:0xffff*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%lf,%lf",&x,&y); /*输入:3.14,8.9↙*/ printf(“%lf”,x>y?x:y); /*输出:8.900000*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%d%c%lf",&a,&ch1,&x);/*输入:1234w12h.234*/ printf("a=%d ch1=%c x=%.2lf\n",a,ch1,x); /* 输出:a=1234 ch1=w x=12.00*/ }
【例4.3】 main() { char ch =’A’; int a=1234; float b=123.4562222; printf("ch=%c\n",ch);/* 输出:ch=A*/ printf("ch=%3c\n",ch);/* 输出:ch=□□A */
printf("a=%6d\n",a);/* 输出:a=□□1234*/
返回值:如果输出成功,返回值就是输出的字符,否则返
回EOF(-1)。 如:putchar(’a’) /*输出字符a*/
putchar(65) /*输出ASCII码为65的字符A*/
putchar(’a’+2) /*输出字符c*/ putchar(’\n’) /*输出一个换行符*/
第 4章 C程序设计初步
第 4章 C程序设计初步
4.2.2字符输入函数—getchar()
一般调用格式:getchar() 功能:从键盘读入一个字符。 返回值:如果读入成功,返回值就是读入的字符,否则返回 EOF(-1)。
说明:
1.getchar()函数一次只能接收一个字符,即使从键盘输入多 个字符,也只接收第一个。空格和转义字符都作为有效字符 接收。 2.接收的字符可以赋给字符型变量或整型变量,也可以不赋
给任何变量,作为表达式的一部分。
第 4章 C程序设计初步
3.getchar()函数是无参函数。
4.从键盘上输入的字符不能带单引号,输入以回车结束。 5.在使用函数getchar()前,一定要使用文件包含: #include "stdio.h" 或 #include <stdio.h> 【例4.2】 #include "stdio.h" main() { char ch1,ch2,ch3; ch1=getchar(); ch2=getchar() ch3=getchar(); putchar(ch1); putchar(ch2); putchar(ch3); } 在运行时,若从键盘上输入: C↙G ↙ 则第一个getchar()接收的是C, 第二个getchar()接收的是回车, 第三个getchar()接收的是G。 输出结果为: C (输出ch1的值) G (输出ch3的值)
说明: 1.putchar()函数一次只能输出一个字符,即该函数有且只 有一个参数。 2.putchar()函数可以输出转义字符。 3.在使用函数putchar()前,一定要使用文件包含: #include "stdio.h" 或 #include <stdio.h> 【例4.1】 #include "stdio.h" main() { char a,b,c; 〖运行结果〗: a=’o’;b=’u’;c=’t’; out putchar(a); putchar(b); A□□□□□□□Be putchar(c); putchar(’\n’); (□代表空格) putchar(65);putchar(’\t’); putchar(’B’);putchar(a-10); }
(1) 逻辑上每个语句最后都必须有一个分号(;), 一个语句 可分写成几行, 几个语句也可合写成一行(但不提倡, 因其不 利于单步调试)。
(2) 空语句直接由分号(;)组成,常用于控制语句中必须出 现语句之处,它不做任何操作,只在逻辑上起到有一个语句的 作用。
【例4.4】
main()
{ int a=-1,b=10; float c=3.14; printf("a=%d\n",a); /*输出:a=-1*/ printf("a=%u\n",a); /*输出:a=65535*/ printf("a=%o\n",a); /*输出:a=-177777*/ printf("a=%x\n",a); /*输出:a=ffff*/ printf("b=%d c=%.2f\n",b,c);/* 输出:b=10 c=3.14*/ printf("b=%.2f c=%d\n",b,c);/* 输出:b=0.00 c=16393*/ }
一般形式为:
%[附加格式说明符]格式字符
第 4章 C程序设计初步
printf()函数的格式字符和常用的附加格式说明符分别见表4-1 和表4-2。 表4-1 printf()函数格式字符
第 4章 C程序设计初步
按%f格式输出实型数据时, 整数部分全部输出, 小数部分 保留六位。
在Turbo C中,按%e格式输出实型数据时,输出占十一位,
printf("b=%-8.2f\n",b);/* 输出:b=123.46□□*/
第 4章 C程序设计初步
printf("b=%.2f\n",b);/* 输出:b=123.46*/ printf("b=%e\n",b);/* 输出:b=1.23456e+02*/ printf("b=%8.2e\n",b);/* 输出:b=□1.2e+02*/ printf("b=%-8.2le\n",b);/* 输出:b=1.2e+02 */ printf("b=%.2e\n",b);/* 输出:b=1.2e+02*/ printf("str=%s\n","china");/*输出:china*/ printf("str=%8.3s\n","china");/*输出:□□□□□chi*/ printf("str=%-6.3s\n","china");/*输出:chi□□□*/ printf("str=%.6s\n","china");/*输出:china*/ }
第 4章 C程序设计初步
4.2.4格式输入函数—scanf()
一般调用格式: scanf("格式控制字符串",地址表列)
功能:按指定的格式从键盘读入数据,并存入地址表列指
定的内存单元中。 返回值:返回输入数据个数。 地址表列:是由若干个地址组成的表列,可以是变量的地 址或字符串的地址,C 语言中变量的地址通过取地址运算符 “&”得到,表示形式为:&变量名,如变量a的地址为&a。 格式控制字符串:同printf()函数类似,是由普通字符和格式 说明组成。普通字符,即需原样输入的字符,包括转义字 符。格式说明同printf()函数相似。scanf()函数格式字符和常 用的附加格式说明符见表4-3和表4-4。
第 4章 C程序设计初步
教学难点: 1.格式化输入输出语句; 2.Switch~case语句的格式与使用; 3.do~while循环与 while循环的区别; 4.break语句与continue语句的区别;
5.带参数宏的定义方法与宏替换规则。
教学方法:
理论教学与实践教学相结合。
第 4章 C程序设计初步
printf("a=%2d\n",a);/* 输出:a=1234*/ printf("a=%#o\n",a);/* 输出:a=02322*/
printf("a=%#x\n",a);/* 输出:a=0x4d2*/
printf("b=%f\n",b);/* 输出:b=123.456223*/ printf("b=%8.2lf\n",b);/* 输出:b=□□123.46*/
第 4章 C程序设计初步
(5) 控制语句有条件判断语句(if、 switch), 循环语句 (for、 while、 do -while),转移语句 (goto、 continue、 break、 return)。
第 4章 C程序设计初步
4.2基本输入输出函数
4.2.1字符输出函数—putchar() 一般调用格式:putchar(参数) 其中,参数可以是任意类型表达式,一般为算术表达式。 功能:向显示器输出一个字符。
printf("%d %d %d",1,2); /*输出结果为1 2 随机值*/ 2.在格式控制字符串中,两个连续的%只输出一个%。如:
printf("%f%%",1.0/6); /* 输出结果为0.166666% */
3.格式说明与输出的数据类型要匹配,否则得到的输出结果 可能不是原值 。
第 4章 C程序设计初步
第 4章 C程序设计初步
scanf("%c%c%c",&ch1,&ch2,&ch3); /*输入:A□↙*/ printf("%c%c%d\n",ch1+32,ch2,ch3);/*输出:a□10*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("a=%d, b=%d",&a,&b); /*输入:a=3, b=4↙*/ printf("a+b=%d a*b=%d\n",a+b,a*b); /*输出:a+b=7 a*b=12*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%ld",&c); /*输入:65535↙*/ printf("c=%#x\n",c); /*输出:0xffff*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%lf,%lf",&x,&y); /*输入:3.14,8.9↙*/ printf(“%lf”,x>y?x:y); /*输出:8.900000*/ getchar(); /*从键盘缓冲区中读出回车*/ scanf("%d%c%lf",&a,&ch1,&x);/*输入:1234w12h.234*/ printf("a=%d ch1=%c x=%.2lf\n",a,ch1,x); /* 输出:a=1234 ch1=w x=12.00*/ }
【例4.3】 main() { char ch =’A’; int a=1234; float b=123.4562222; printf("ch=%c\n",ch);/* 输出:ch=A*/ printf("ch=%3c\n",ch);/* 输出:ch=□□A */
printf("a=%6d\n",a);/* 输出:a=□□1234*/
返回值:如果输出成功,返回值就是输出的字符,否则返
回EOF(-1)。 如:putchar(’a’) /*输出字符a*/
putchar(65) /*输出ASCII码为65的字符A*/
putchar(’a’+2) /*输出字符c*/ putchar(’\n’) /*输出一个换行符*/
第 4章 C程序设计初步
第 4章 C程序设计初步
4.2.2字符输入函数—getchar()
一般调用格式:getchar() 功能:从键盘读入一个字符。 返回值:如果读入成功,返回值就是读入的字符,否则返回 EOF(-1)。
说明:
1.getchar()函数一次只能接收一个字符,即使从键盘输入多 个字符,也只接收第一个。空格和转义字符都作为有效字符 接收。 2.接收的字符可以赋给字符型变量或整型变量,也可以不赋
给任何变量,作为表达式的一部分。
第 4章 C程序设计初步
3.getchar()函数是无参函数。
4.从键盘上输入的字符不能带单引号,输入以回车结束。 5.在使用函数getchar()前,一定要使用文件包含: #include "stdio.h" 或 #include <stdio.h> 【例4.2】 #include "stdio.h" main() { char ch1,ch2,ch3; ch1=getchar(); ch2=getchar() ch3=getchar(); putchar(ch1); putchar(ch2); putchar(ch3); } 在运行时,若从键盘上输入: C↙G ↙ 则第一个getchar()接收的是C, 第二个getchar()接收的是回车, 第三个getchar()接收的是G。 输出结果为: C (输出ch1的值) G (输出ch3的值)
说明: 1.putchar()函数一次只能输出一个字符,即该函数有且只 有一个参数。 2.putchar()函数可以输出转义字符。 3.在使用函数putchar()前,一定要使用文件包含: #include "stdio.h" 或 #include <stdio.h> 【例4.1】 #include "stdio.h" main() { char a,b,c; 〖运行结果〗: a=’o’;b=’u’;c=’t’; out putchar(a); putchar(b); A□□□□□□□Be putchar(c); putchar(’\n’); (□代表空格) putchar(65);putchar(’\t’); putchar(’B’);putchar(a-10); }