1159 字母出现频率

题目描述

从键盘输入一行文本(小于1000字符),统计其中每个英文字母出现的频率,并输出出现过的英文字母及其次数,未出现过的不需要显示。为了简化问题的复杂度,假设在统计过程中不区分字母的大小写,即'A'与'a'被认为是一种字母。

输入要求

先从键盘输入一行文本。以换行符结束。

输出要求

输出统计结果。

输入样例

Studing C Language

输出样例

'A':2
'C':1
'D':1
'E':1
'G':3
'I':1
'L':1
'N':2
'S':1
'T':1
'U':2

答案

#include<stdio.h>
#include<string.h>
int main(){
  int i,j,count=0,n;
  char c[1000],b[26];
  gets(c);
  n=strlen(c);
  for(i=0;i<26;i++){
   b[i]='A'+i;
  }
  for(i=0;i<26;i++){
   count=0;
   for(j=0;j<n;j++){
    if(c[j]<='z'&&c[j]>='a'){
     c[j]-=32;
    }
    if(c[j]==b[i]){
     count++;
    }
   }
   if(count!=0){
    printf("'%c':%d\n",b[i],count);
   }
  }
  return 0;
}

知识点

多个数组,字符串的输入,大小写字母换算

注意

先讲二十六个字母存入数组作为判断的标准

利用计数器进行判断

可以使用Fortran中的一些字符串处理函数和数组来实现读取文本中字母出现频率的功能。 以下是一个基本的Fortran代码示例,它将读取一个包含文本的文件,并计算每个字母在文本中出现的次数: ``` program count_letters implicit none integer :: i, j, n character(len=1) :: letter character(len=100) :: filename, line integer, dimension(26) :: counts ! 初始化计数器 counts = 0 ! 提示用户输入文件名 write(*,*) '请输入文件名:' read(*,*) filename ! 打开文件并逐行读取 open(unit=10, file=filename, status='old') do read(10,'(A)',iostat=n) line if (n /= 0) then ! 遍历行中的每个字符并计数 do j=1,len_trim(line) letter = adjustl(adjustc(line(j:j))) if (len(letter) > 0) then counts(ichar(letter)-ichar('A')+1) = counts(ichar(letter)-ichar('A')+1) + 1 end if end do else exit end if end do close(10) ! 输出结果 write(*,*) '字母 出现次数' do i=1,26 write(*,*) char(i+ichar('A')-1), counts(i) end do end program count_letters ``` 在上面的代码中,我们首先定义了一个长度为26的整数数组 `counts`,用于存储每个字母在文本中出现的次数。然后,我们打开并逐行读取文件,并使用 `ichar` 函数将每个字符转换为其在ASCII表中的整数值。通过将整数值减去大写字母A的整数值,我们可以将每个字母映射到 `counts` 数组中的相应索引位置。最后,我们输出每个字母出现次数。 请注意,上面的代码仅考虑了大写字母。如果您想要计算文本中所有字母(包括小写字母和非字母字符)的出现频率,您需要相应地修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值