fixed,setprecision(),setw()的用法
22-1-17 蓝桥杯-单词分析
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了
很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。现在,请你帮助小蓝,
给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
(输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 1000。)
#include <iostream>
#include <string.h>
using namespace std;
char m[1005]; //用于存放字符
int n[1005]; //用于记录个数
char c; //用于存放最多的那个字母
bool b[1005]; //判断是否存在
string str;
int main()
{
int max = 0;
cin>>str;
memset(b,0,sizeof(b)); //遍历整个字符串
for(int i = 0;i < str.size();i++)
{
while(b[i]) //如果已经存在,往后继续遍历
{
i++;
}
m[i] = str[i]; //开始时i=0, 直接把字符串第一个字符赋值给m[0]
b[i] = true; // 标记已经存在
n[i] = 1; //记录该字母的个数
for(int j = i+1;j<str.size();j++) //从i+1开始遍历
{
if(m[i] == str[j])
{
n[i]++; //该字母个数加1
b[j] = true; //标记已经存在
}
}
if(max <= n[i]) //更换数量最多的字母及个数
{
if(max == n[i]) //相等的时候
{
if((c - 'a') <= (m[i] - 'a')) //比较谁在字母表靠前
{
c = c;
}
else
{
c = m[i];
}
}
else
{
max = n[i];
c = m[i];
}
}
}
cout<<c<<endl;
cout<<max<<endl;
return 0;
}
22-1-18 蓝桥杯-成绩统计
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。如果得分至少是 60 分,则称为
及格。如果得分至少为 85 分,则称为优秀。请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输出:输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double p = 0, e = 0;
int n;
cin>>n;
for(int i=0; i<n; i++)
{
int s;
cin>>s;
if(s >= 60)
{
p++;
}
if(s >= 85)
{
e++;
}
}
p = (p/n)*100;
e = (e/n)*100;
cout<<fixed<<setprecision(0)<<p<<"%"<<endl;
cout<<fixed<<setprecision(0)<<e<<"%"<<endl;
//cout<<setiosflags(ios::fixed)<<setprecision(0)<<p<<"%"<<endl;
//cout<<setiosflags(ios::fixed)<<setprecision(0)<<e<<"%"<<endl;
return 0;
}
以上代码参考自其它网友。