设计程序计算输入的字符数,单词数与行数。
代码
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#define stop '|'
int main(void)
{
int duanju,prev;
char ch;
int zifushu=0,hangshu=0,dancishu=0;
bool ceshi=false;
printf("请输入一段字符:");
while((ch=getchar())!=stop)
{
zifushu++;
if(ch=='\n')
{
hangshu++;
}
if(!isspace(ch)&&!ceshi)
{
dancishu++;
ceshi=true;
}
if(isspace(ch)&&ceshi)
{
ceshi=false;
}
prev=ch;
}
if(prev!='\n')
{
duanju=1;
}
printf("这句字符中有%d个字符%d个单词%d个句子%d个断句",zifushu,dancishu,hangshu,duanju);
return 0;
}
难点
- 该程序运用了ctype.h头文件中的函数来判断输入的字符是否为空白符,空白符不止有空格,在默认情况下,空白符包括:
字符 ASCII码 (十六进制) 说明 (缩写)
’ ’ 0x20 空格 (SPC)
‘\t’ 0x09 水平制表符 (TAB)
‘\n’ 0x0a 换行符 (LF)
‘\v’ 0x0b 垂直制表符 (VT)
‘\f’ 0x0c 换页 (FF)
‘\r’ 0x0d 回车 (CR)
因此使用isspace函数来判断比使用if一一例举更方便。
2.该程序要设定判断条件来分析单词数以防止在读同一个单词的字符时一直增加单词数。
emmm
本人英文水平有限加上比较懒就用拼音来设定变量了^^
关于isspace函数的具体情况链接为[(http://c.biancheng.net/ref/isspace.html)]