计算机程序设计C++ 4.6:文字信息统计

问题

用户输入一段文本(英文),统计其字符总个数,
大写字母个数、小写字母个数、数字个数及其他字
符个数。

运行结果

C++ Programming
字符串总长度:15
大写字母:2
小写字母:10
数字个数:0
其他字符:3

问题分析

①输入字符串。
cin >> <字符数组名>, 只能输入单词;
因为“>>”以空格、tab键、回车为分隔符,遇到空格认为是一项数据
的结束。

  • cin是输入流对象,它有一个成员函数getline()可以读取带空格的一
    行字符串。基本使格式为:
  • cin.getline(<字符数组名>,<字符长度>);
    例如:
char sentence[100];  //字符数组大小100
cin.getline(sentence,99); //可以输入最长99(回车结束)的字符串,中间可以有空格。

②统计计数。
输入的文本看做字符串,统计字符个数,就是从字
符串的第1个字符开始,逐个计数,直到结束。
注意,在C++中,字符串的结束是 ’\0’。统计各类字符个
数只要在逐个计数的过程中再对各类字符计数。
计数就是逐个数,用一个变量表示,每遇到一个字符,该
变量增加1。

算法描述

设字符串用str[100]表示,str[i]表示第i+1个字符(从1开始)。
用len表示字符串长度,capital表示大写字母个数,smallletter
表示小写字母个数,digit表示数字个数,others表示其他字母个数,
初始时它们的值均为0。

① 输入字符串;
② i=0;
③如果str[i]=’\0’,转⑥;否则执行④;
④ len=len+1
如果str[i]为大写字母
       capital++;
否则
      如果str[i]为小写写字母
           smallletter++;
     否则
           如果str[i]为数字
               digit++;
         否则
             others++
⑤i=i+1,转③;
⑥输出统计数据。
是否为大写、小写或数字,需要比较字符的ASCII值所在的区间。

源程序

作用:统计字符串中字符种类的个数

#include<iostream>

using namespace std;
int main()
{
 const int N = 101;
 char s[N];
 cin.getline(s, N);
 int len=0,capital=0,smallletter=0,digit=0,others=0;
 int i;
 while(str[i] != '\0')
 {
   len++;
   if(str[i]<='Z' && str[i]>='A')
   {
   		capital++; // 大写字母
   }
   else if(str[i]<='z' && str[i]>='a')
   {
   	    smallletter++; // 小写字母
   }
   else if(str[i) <= '9' && str[i] >= '0')
   {
   		digit++;
   }
   else
   {
    	others++; // 其它字符
   }
   i++;
 }
 cout<<"字符串总长度:"<<len<<endl;
cout<<" 大写字母:"<<capital<<endl;
cout<<" 小写字母:"<<smallletter<<endl;
cout<<" 数字个数:"<<digit<<endl;
cout<<" 其他字符:"<<others<<endl;
return 0;
}

总结

当<else块>只有一条if语句时,可以这样写,基本格式是:

if (<条件1>)
{ ... }
else if (<条件2>)
{ ... }
else if (<条件3>)
...
else
{...}

注意,每一个else是前面最近的if的else,而不是第一个if的else,离得最近的if。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值