习题1:字符统计
代码:
#include<iostream>
#include<cstring>
using namespace std;
char a[201];
int cnt[27];
int main()
{
int i,j,len;
cin>>a;
len=strlen(a);
for(i=0;i<len;i++)
{
cnt[a[i]-'A']++;
}
for(i=0;i<26;i++)
{
cout<<char(i+'A')<<" "<<cnt[i]<<endl;
}
return 0;
}
思路:类似于桶排序,需要两个循环,第一个用来统计26个字母出现了几次,第二个用来打印出每个字母和每个字母出现的次数,将字母打印的表达式是char(i+‘A’)。
习题2:完数
代码:
#include<iostream>
#include<cstring>
using namespace std;
int a[10001]={0};
int main()
{
int i,n,c=0,s=0;
cin>>n;
for(i=1;i<=n/2;i++)
{
if(n%i==0)
{
s+=i;
}
}
if(s==n)
{
cout<<"yes";
}
else
{
cout<<"no";
}
return 0;
}
思路:只要n能整除i,累加器就把i加上,最后判断s是否和n相等,相等就输出"yes",否则就输出"no"。
习题3:唯一出现
代码:
#include<iostream>
#include<cstring>
#define INF 1000000
using namespace std;
int a[10001]={0};
int main()
{
int i,j,n,c=0,flag;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
{
flag=1;
for(j=0;j<n;j++)
{
if(i!=j)
{
if(a[i]==a[j])
{
flag=0;
break;
}
}
}
if(flag==1)
c++;
}
cout<<c;
return 0;
}
思路:将标志变量(flag)赋成1,如果i!=j,就判断a[i]是否等于a[j],如果成功,标志变量(flag)赋成0,break;如果flag==1,计数器©加一,最后输出计数器©