字母统计:
从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间用若个空格隔开,英文单词由大小写字母组
成,编程完成以下任务:
1.统计并输出此句子中英文字母的个数;
2.统计并输出此句子中单词的个数;
3.查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)及次数。当出现最多的字母不止一个时,全部找
到,并输出找到的所有字母及次数。
(输出顺序按字母顺序,且输出时字母全部小写)
#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
int main() {
// This is An Pencil Case
char arr[200] = {0};
fgets(arr,200,stdin);
int i = 0;
bool isSpace = true;
int wordCount = 0;
int alphaCount = 0;
map<char,int> alphaMap;
while(true){
if(arr[i] == '\0' || arr[i] == '\n'){
break;
}
else if(arr[i] == ' '){
isSpace = true;
}
else{
++alphaCount;
if(isSpace){
++wordCount;
}
if(arr[i] >= 'A' && arr[i] <= 'Z'){
arr[i] += 32;
}
++alphaMap[arr[i]];
isSpace = false;
}
++i;
}
printf("%d\n",alphaCount);
printf("%d\n",wordCount);
map<char,int>::iterator it;
int maxTimes = 0;
for(it = alphaMap.begin();it != alphaMap.end();++it){
if(it->second > maxTimes){
maxTimes = it->second;
}
}
for(it = alphaMap.begin();it != alphaMap.end();++it){
if(it->second == maxTimes){
printf("%c ",it->first);
}
}
printf("\n");
printf("%d\n",maxTimes);
return 0;
}
浮点数加法:
描述
求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2..Pi.Q1Q2..Qj对于整数部分
P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0
输入描述:
对于每组案例,每组测试数据占2行,分别是两个加数。
输出描述:
每组案例是n行,每组测试数据有一行输出是相应的和。输出保证一定是一个小数部分不为0的浮点数
示例1:
输入:0.111111111111111111111111111111
0.111111111111111111111111111111
输出:0 222222222222222222222222222222
#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
string GetInteger(string a){
return a.substr(0,a.find('.'));
}
string GetFraction(string a){
return a.substr(a.find('.')+1,a.size()-a.find('.'));
}
void FractionPlus(string& res,int& carry,string fa,string fb){
int size = max(fa.size(),fb.size());
while (fa.size()<size){
fa.push_back('0');
}
while (fb.size()<size){
fb.push_back('0');
}
res.resize(size);
carry = 0;
for(int i = size - 1; i>=0;--i){
if(fa[i] + fb[i] + carry - '0' > '9'){
res[i] = fa[i] + carry - '0' - 10;
carry = 1;
}
else {
res[i] = fa[i] + fb[i] + carry - '0';
carry = 0;
}
}
}
void IntegerPlus(string& res,int carry,string ia, string ib){
res.clear();
for(int i = ia.size() - 1,j = ib.size() - 1;
i >= 0 || j>= 0|| carry == 1;
--i,--j){
if(i >= 0 && j >=0){
if(ia[i] + ib[j] +carry - '0' >'9'){
res.insert(res.begin(),ia[i]+ib[j]+carry - '0' -10);
carry = 1;
}
else{
res.insert(res.begin(),ia[i]+ib[j] + carry -'0');
carry = 0;
}
}
else if (i>=0 && j<0){
if(ia[i] + carry >'9'){
res.insert(res.begin(),ia[i]+ carry -10);
carry = 1;
}
else{
res.insert(res.begin(),ia[i] + carry);
carry = 0;
}
}
else if (j>=0 && i<0){
if(ib[i] +carry >'9'){
res.insert(res.begin(),ib[i]+ carry -10);
carry = 1;
}
else{
res.insert(res.begin(),ib[i] + carry);
carry = 0;
}
}
else{
res.insert(res.begin(), '1');
carry = 0;
}
}
}
int main() {
char arra[1000] = { 0 };
char arrb[1000] = { 0 };
while(scanf("%s %s",arra,arrb)!= EOF){
string a = arra;
string b = arrb;
string ia = GetInteger(a);
string ib = GetInteger(b);
string fa = GetFraction(a);
string fb = GetFraction(b);
string fres;
int carry;
FractionPlus(fres,carry,fa,fb);
string ires;
IntegerPlus(ires,carry,ia,ib);
printf("%s.%s\n",ires.c_str(),fres.c_str());
}
return 0;
}