關於一些初級ACM競賽題目的分析和題解(十)
西面的題目是關於一些字母變換的,上題:
第一行包含一個單詞s - 由大寫和小寫拉丁字母組成,長度從1到100。
輸出
打印糾正的單詞s。 如果給定的單詞s具有更多的大寫字母,則將該單詞寫入大寫寄存器中,否則 以小寫字母寫入。
題意即一行字符串若是大寫字母數大於小寫字母數則把這一行字符變爲大寫,反之,變爲小寫,下面是代碼:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int l,c,b;
int main()
{
char a[300];
scanf("%s",a);
l=strlen(a);
for (int i=0;i<l;i++)
{
if(a[i]>=97)c++; //不同類型計數
else b++;
}
if (c>=b) // 比較大小寫的字符數目
{
for (int j=0;j<l;j++)
if(a[j]<97)a[j]+=32; //執行
return 0*printf("%s",a);
}
if (c<b)
{
for (int j=0;j<l;j++)
if(a[j]>=97)a[j]-=32;
return 0*printf("%s",a); // 輸出結果
}
}