内容正文:
第三章 程序设计的三大结构
--顺序结构
1
C语言
知识树
My First Template
CONTENTS
目录
01
02
数据的格式化输入输出
C语言中的语句
03
字符数据的输入输出
04
输入中的缓存残余问题
字符数据的输入输出
C语言程序设计
4
C语言
框架结构
{
第一步:接收外界信息
第二步:加工处理
第三步:产生输出信息
}
程序
计算机的功能
C语言程序设计—字符数据的输入输出
My First Template
计算机
接收外界信息
加工
处理
产生输出信息
C语言
本次任务
输入大写字母,
输出其对应的小写字母。
C语言程序设计—字符数据的输入输出
My First Template
CONTENTS
内容
01
02
相关知识
03
任务实现与总结
任务分析
C语言
小写字母=大写字母+32
常数
任务分析
‘a’=‘A’+32
‘b’=‘B’+32
需要从外界接收
字母在C语言中是以ASCII码的形式存储的
字符数据的输入输出—任务分析
My First Template
C语言
字符输入输出函数
putchar( c );
getchar( );
字符输入/输出函数 (getchar/putchar) 用于接受和显示1个字符
输出缓冲区
输入缓冲区
字符数据的输入输出—相关知识
My First Template
C语言
字符输出函数putchar()
putchar( )函数应用说明
格式: putchar( c )
参数: c为字符常量、变量或表达式
功能: 把字符c输出到显示器上
返值: 正常,为显示的代码值;出错,为EOF(-1)
#include <stdio.h>
main()
{ int c;
char a;
c=65; a='B';
putchar(c); putchar('
'); putchar(a);
}
例子1.1
字符数据的输入输出—相关知识
My First Template
C语言
字符输入函数getchar()
getchar( )函数应用说明
格式:getchar( )
功能:从键盘读一字符
返值:正常,返回读取的代码值;
出错,返回EOF(-1)
#include <stdio.h>
main()
{ int c;
printf("Enter a character:");
c=getchar();
printf("%c:%d
",c,c);
}
例子
字符数据的输入输出—相关知识
My First Template
C语言
存在的问题
#include <stdio.h>
main()
{ char c1,c2;
printf("Enter a character:
");
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
}
例子—使用字符函数输入两个字符并输出
两条输入语句,只让输入了一次,
不能继续获取字符。
字符数据的输入输出—相关知识
My First Template
C语言
解决存在的问题
fflush(stdin)函数应用说明
功能: 清空输入缓冲区, 为了确保不影响后面的数据读取。
场景: 在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);。
Fflush(stdin)
#include <stdio.h>
main()
{ char c1,c2;
printf("Enter a character:
");
c1=getchar();
fflush(stdin);
c2=getchar();
putchar(c1);
putchar(c2);
}
修改后的例子
字符数据的输入输出—相关知识
My First Template
C语言
任务实现
#include <stdio.h>
main()
{
char c,s;
while(1)
{
printf("请输入大写字母:
");
fflush(stdin);
c=getchar();
s=c+32;
putchar(s);
}
}
用来完成多次输入,这里直接去用即可
用来清除缓存
未增加fflush(stdin)的输出
增加fflush(stdin)的输出
字符数据的输入输出—任务实现
My First Template
总结
1. 提出任务(大写变小写)
2. 任务分析(输入输出字符)
3. 相关知识(字符输入输出)
4. 任务实现
输入中的缓存残余问题
C语言程序设计
16
C语言
本次任务
循环输入n个字符,直到输入的字符为‘N’截止
输入中的缓存残余问题
My First Template
C语言
printf("c=%c
",c);
任务分析
‘a’=‘A’+32
‘b’=‘B’+32
需要从外界接收
字母在C语言中是以ASCII码的形式存储的
输入中的缓存残余问题
scanf("%c",&c);
c=getchar();
My First Template
C语言
任务分析
输入中的缓存残余问题
框架结构
{
第一步:采用do-while循环
第二步:循环中输入字符
第三步:构造循环结束条件
}
程序
My First Template
采集字符
循环
遇N结束
C语言
任务初实现
输入中的缓存残余问题
#include <stdio.h>
void main()
{ char c;
//通过do --while循环给出多个提示输入多个字符
do
{ printf("请输入一个字符
");
scanf("%c",&c);//格式串输入一个字符
printf("c=%c
",c);
}while(c!='N');
}
My First Template
C语言
任务初实现
输入中的缓存残余问题
#include <stdio.h>
void main()
{ char c;
//通过do --while循环给出多个提示输入多个字符
do
{ printf("请输入一个字符
");
c=getchar();//采用字符输入
printf("c=%c
",c);
}while(c!='N');
}
My First Template
C语言
任务再分析
输入中的缓存残余问题
#include <stdio.h>
void main()
{ char c;
//通过do --while循环给出多个提示输入多个字符
do
{ printf("请输入一个字符
");
scanf("%c",&c);//格式串输入一个字符
printf("c=%c
",c);
printf("c=%d
",c);
}while(c!='N');
}
My First Template
C语言
如何解决残余问题
输入中的缓存残余问题
框架结构(加入stdlib.h)
{
第一步:采用do-while循环
fflush(stdin);
第二步:循环中输入字符
第三步:构造循环结束条件
}
Windows下的C
框架结构
{
第一步:采用do-while循环
system(“read –n 1”);
第二步:循环中输入字符
第三步:构造循环结束条件
}
linux下的C
My First Template
C语言
任务初实现
输入中的缓存残余问题
#include <stdio.h>
#include<stdlib.h>
void main()
{ char c;
//通过do --while循环给出多个提示输入多个字符
do
{ printf("请输入一个字符
");
fflush(stdin);
scanf("%c",&c);//格式串输入一个字符
printf("c=%c
",c);
}while(c!='N');
}
My First Template
C语言
任务扩展
输入中的缓存残余问题
单个字符输入函数中的缓冲区残留问题。
程序代码:
#include "stdio.h"//预处理
void main()//主函数
{
char a,b;//变量定义
a=getchar();//获取字符到a
b=getchar();//获取字符到b
putchar(a);//输出字符a
putchar(b);//输出字符b
}
加入:
#include”stdlib.h”
fflush(stdin);
My First Template
$$