1.洛谷数组 P1598垂直柱状图
题目描述
写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过75个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。
输入输出格式
输入格式:
四行字符,由大写字母组成,每行不超过75个字符
输出格式:
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
输入输出样例
输入样例#1:
复制
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. THIS IS AN EXAMPLE TO TEST FOR YOUR HISTOGRAM PROGRAM. HELLO!
题解
输出样例#1:
复制
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
#include<iostream>
#include<cstring>
#include<cstdio>
char s[100],w[30];//s记录输入字符串 w记录每个字母出现的次数
using namespace std;
int main()
{
int l,max=0;//l为长度 max为出现最多的字母的出现次数 既最多有几行
char ch;
memset(w,0,sizeof(w));//归零 用作计数
for(int i=1;i<=4;i++)
{
gets(s);
l=strlen(s);
for(int i=0;i<l;i++)
{
if(s[i]>='A'&&s[i]<='Z')
w[s[i]-'A']++;//计数
}
}
for(int i=0;i<26;i++)
max=max>w[i]?max:w[i];//取最大值 计最多有多少行
//cout<<w[2]<<endl;
//cout<<max<<endl;
for(int i=max;i>=1;i--)
{for(int j=0;j<26;j++)
{
if(w[j]<i)cout<<" ";
else cout<<"* ";
}cout<<endl;}
for(int i=0;i<26;i++)
{
ch='A'+i;
cout<<ch<<" ";//输出A到Z
}
return 0;
}
2.洛谷P1553数的反转
(1)sprintf(s,"%d",i) 将数字输出到数组s中 sprintf(x,"%s",s)将字符串s输出到数字x
(2)将数x反转
do{
r=x%10;
x/=10;
ans=ans*10+r;
}
while(x!=0);
(3)小数部分反转后前后的0都要去掉