[整理版]字符数据类型
1、一般流程图
过程 判断 数据 预定义过程
起止 流程线 连接 注释
图3.3(a)、(b)、(c)中的虚线框,分别为用流程图表示的三种基本流程控制结构。这三种基本结构有一个明显的特征:单入口和单出口。从整体上看都相当于一个处理框。用它们所组成的程序来龙去脉十分清晰。
S1
S2
S3
(a)顺序结构
真 假
P
S1 S2
(b)选择结构
假 P
真
S2
(c)重复结构 从三个数中取最大数的算法思路是:假定这三个数是a,b,c,则首先可以比较a,b两数,从中选大者;然后再用这个大数与数c比较,从中取大者。这时得到的大数,就是三个数中的最大数。
开始
输入a,b,c
真 假 a>=b
max=a max=b
真 假 max>=c
输出max 输出c
结束
(a)一个三数中取大的算法
开始
max=0,i=1
假
i<=3
真
输入一个n
i++ 输出max
假
n>=max
真
max=n
结束
另一个三数中取大的算法 2. N-S图描述
P 当P S1
真 假
S S2
S1 S2
S3
(a)顺序结构 (b)选择结构 (c)当型重复结构
图3.7(a)、(b)给出了用与图3.4(a)、(b)流程图对应的N-S
图。注意,空白的处理框表示没有操作。
输入a,b,c 初始化:max=0,i=1
当i<=3 a>=b 真 假
输入n max=a max=b
i++
max>=c n>=max 真 假 真 假
max=n 输出max 输出c
输出max
(a)采用选择结构 (b)采用当型重复结构
字符数据类型
1、 字符常量
表示方法如:’a’,’A’’!’,’?’ ”adasfdf” ”a” ‘safdsf’’1’
说明:
(1) 单引号中的大写字母和小写字母代表不同的常量如, ’a’,
’A’.
(2) 单元引号中的空格符也是一个常量,但不能写成两个连续的单
引号.如’ ‘
(3) 字符常量只能包含一字符,因此’ABC’是非法的。
(4) 字符常量只能用单元引号括起来不能用双引号括起来。
字符常量见附录7
2、 转义字符常量
见PAGE 68
字符功 能 字符类功 能 类型 型
\n 回车换行 \\ 反斜杠字符 \t 横向跳若干格 \’ 单引号字符 \v 竖向跳若干格 \” 双引号字符 \r 回车符 \ddd 三位八进制代表的一个ASCII字\f 换页符 \xhh 符
\b 退格符 \0 二位十六进制代表一个ASCII字
符
空值其ASCII为0
注意:
(1) 十六进制只允许小写x不允许用大写 (2) ‘\95’只代表一个字符
(3)
char
3、 字符串常量
“ABC\n”占五个字节’\0’
4、 可对字符常量进行的运算
可以参与任何整数运算,关系运算 5、 字符变量
char sh=’a’;
6、 字符的输入和输出
printf(“%d”,ch); 7、 scanf(“%c”,&ch); 8、 调用putchar和getchar函数输出和输入字符
putchar(ch);
ch=getchar();
9、 程序例举
10、 程序1:输出26个大写字母和它们的ASCII代码
#include
main()
{
char ch;int i;
for(i=0;i<26;i++)
{
ch=i+65;
if(i%2==0)
printf("\n");
printf(" c=%c, ASCII=%d",ch,ch);
}
printf("\n");
}
程序2:把一串密码译成正文,密码以@结束.
#include
#include
main()
{
char c;
c=getchar();
while(c!='@')
{
if(isalpha(c))
{
c=tolower(c);
c=(c-'a'+1)%26+'a';
}
putchar(c); c=getchar();
}
printf("\n");
}
程序3:输入函数的解释 #include
main()
{
char sh,ch,rh;
printf("请输入字符sh,ch,rh");
scanf("%c%c%c",&sh,&ch,&rh);
printf("ch=%c,sh=%c,rh=%c",sh,ch,rh);
}
程序4:字母金子塔
#include main()
{
char ch='A';
int i,j,k;
for(i=0;i<30;i++)
{
for(j=0;j<30-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("%c",ch);
ch=ch+1;
printf("\n");
}