问题链接:https://vjudge.net/problem/CodeForces-118A
问题简述:
去除输入的一串字符串中的元音字母,并将剩余的字符中的大写字母转化为小写字母,再以“.”隔开每个字符并输出结果。
问题分析:
利用gets函数将字符串中的每个字符分别存于字符数组中,用strlen函数判断字符串长度,再利用循环逐步判断每个字符是否为元音字符,若是,则不输出,若不是,则再判断字符是否处于大写字母区间内,若是,则将该字符ASCLL值+32再转化为字符将其转化为小写字母。最后输出结果
程序说明:
本程序用gets函数处理输入的字符串,再定义两个函数分别处理判断元音字母与循环输出的问题,其中判断元音字母情况较多,选择了switch结构。
AC通过的C语言程序如下:
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char a[100];
int vowels(char a[],int i)
{
switch(a[i])
{
case 'A':case 'E':case 'I':case 'O':case 'U':case 'Y':case 'a':case 'e':case 'i':case 'o':case 'u':case 'y':
return 1;
default:
return 0;
}
}
void out(char a[],int length)
{
for(int i=0;i<length;i++)
{
if(!vowels(a,i))
{
if(a[i]>='A'&&a[i]<='Z')
{
cout<<"."<<(char)(a[i]+32);
}
else
{
cout<<"."<<a[i];
}
}
}
}
int main()
{
int l;
gets(a);
l=strlen(a);
out(a,l);
}