Petya开始上编程课了。第一堂课他的任务是写一个简单的程序。
这个程序应该做到以下事情:给定一个由大小写字母组成的字符串,使它:
1.删除所有元音(包括大小写)
2.在每个辅音前插入一个字符"."
3.将所有大写辅音字母改为小写
(此处规定,)元音字母是A,O,Y,E,U,I,剩下的为辅音。
仅输入一个字符串,程序处理完初始字符串之后也应以一个字符串为输出结果。
帮助Petya完成这个简单的任务吧。
第一次循环对输入的字符串逐个字符进行检查,每当遇到元音字母则删去(将该字母后方(包括该字母)所有字符从左往右逐一赋值为它右方的字符),然后继续从被删去字母所在的位置开始检查;遇到辅音字母则先检查它是否为大写(如果是则改为小写),然后从被检查位置的下一位置开始检查。此时得到的字符串已经达成第1和第3点要求。创建一个新字符数组(长度要为原字符数组的两倍左右),其偶数项赋值为'.',奇数项则按序拷贝此前得到的字符串,新字符串则又达成第2点要求,输出新字符串即可。
#include<iostream>
using namespace std;
int main()
{
char st[101] = "\0";
int n = 0;
cin >> st;
while (st[n] != '\0')
{
switch (st[n])
{
case 65:case 69:case 73:case 79:case 85:case 89: case 97:case 101:case 105:case 111:case 117:case 121:
{
int i = n;
while (st[i] != '\0') {
st[i] = st[i + 1];
i++;
}
break;
}
default:
{
if (st[n] <= 90)
{
st[n] += 32;
}
n++;
break;
}
}
}
char a[201] = "\0";
for (int i = 0; st[i / 2] != '\0'; i += 2)a[i] = '.';
for (int i = 1; st[(i - 1) / 2] != '\0'; i += 2)a[i] = st[(i - 1) / 2];
cout << a;
return 0;
}
P.S.用vs编译c++程序时习惯在main函数末尾或return前一行加一句system("pause");以防控制台窗口闪退,这句system("pause");在交题时要记得删掉。