ZZULIOJ--1223: crazy_snail

时间限制: 1 Sec 内存限制: 128 MB
提交: 539 解决: 233
[状态] [提交] [命题人:外部导入]
题目描述
一天crazy_snail正在读英文书,突发奇想,他想看一下自己的名字“snail”中每个字母在文章中出现的次数的总和占文章总长度的百分比(即’s’,’n’,’a’,’i’,’l’,在给定的字符串中出现的个数总和占总长度的百分比,小数部分直接舍去)。你能帮助他么?
输入
第一行输入一个n 表示有n组测试实例。n为整数。
其下有n行,每行一组测试实例;
每组测试实例包括一个长度不超过200的字符串,且字符串中出现的字符都为小写字母。

输出
每组实例输出其对应的百分比(按照“55%”的格式输出),且每组输出占一行。
样例输入 Copy
2
snailyouy
snail

样例输出 Copy
55%
100%

提示
注意:最好用%s输入
本以为这只是一道简简单单的程序题,但是在遇到题目不四舍五入的要求时,我陷入了沉思…,然后我打开了百度~~~,假设我们求a/b不四舍五入的情况,方法如下

int c;
c=a/b;
printf("%.0f\n",(c/100.0*100

在统计字符串个数的时候,我也发现了一个巧妙的方法

int len = strlen(str)
int a[MAXN];
for(int i=0;i<len;i++)
{
a[str[i]-'a']++;   //统计不同字符的个数,当为a时,则a[0]++
}

这样这道题的难点就通过了,ac代码如下

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <stack>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
int main()
{
	int n;
	
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		double sum=0;
	int a[26];
	memset(a,'\0',sizeof(a));
	char str[203];
		scanf("%s",str);
		double len;
		len=strlen(str);
		for(int j=0;j<len;j++){
			a[str[j]-'a']++;
		}
	sum=a[0]+a[8]+a[11]+a[18]+a[13];
	int b=(sum/len)*100;
	printf("%.0f%\n",(b/100.0)*100);
	}
	return 0;
}
发布了7 篇原创文章 · 获赞 1 · 访问量 121

猜你喜欢

转载自blog.csdn.net/CoIorful/article/details/104108400