118A题目网址
题目解析
1.输入一个英语字符串,要求把其中的元音字母删去(元音是字母“A”、“O”、“Y”、“E”、“U”、“I”包括大小写,其余的是辅音),把剩余的辅音字母全部变为小写,并在每一个辅音字母之前加上一个.
如:
输入:
Codeforces
输出:
.c.d.f.r.c.s
2.使用在for循环中使用字符数组录入每一个英语字符串,遇到辅音字母,把大写字母转为小写(initial[i]+32),输出时在前面加上.
如:
initial[i]+=32;
printf(".%c",initial[i]);
3.陷阱:
1)本题必须对字符串数组进行初始化,否则提交输出时会出现乱码
char initial[100]={’\0’};
2)本题目不能使用strlen(initial)去当作for循环的结束条件,因为此时initial没有进行数据录入,只有使用for(i=0;i<100;i++)
知识点
1.字符处理
在C语言中对逐个字符进行处理
输入:
scanf("%c",&init[i]);
输出:
printf("%c",init[i]);
#include<stdio.h>
int main()
{char ch[5]; for (int i = 0; i < 5; i++){scanf("%c", &ch[i]);}for (int i = 0; i < 5; i++){printf("%c", ch[i]);}system("pause");return 0;
在C语言中对整个字符进行处理
不需要&
输入:
scanf("%s",init);
输出:
printf("%s",init);
#include<stdio.h>
int main()
{char ch[5];scanf("%s", ch);printf("%s", ch);//无需&system("pause");return 0;
}
2.大写字母转小写字母
1)大写字母范围:
initial[i]>=‘A’&&initial[i]<=‘Z’
2)小写字母范围:
initial[i]>=‘a’&&initial[i]<=‘z’
3)大写字母转小写字母(a比A的ASCII码大32)
initial[i]+=32;
4)小写字母转大写字母
initial[i]-=32;
3.字符串数组
C语言没有字符串,所以使用字符数组存放字符串,最后结尾为’\0’,所以使用initial[i]==’\0’去判断是否到字符串结尾
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//元音是字母“A”、“O”、“Y”、“E”、“U”、“I”,其余的是辅音
int main()
{char initial[100]={'\0'};int i;for(i=0;i<100;i++){scanf("%c",&initial[i]);if(initial[i]=='a'||initial[i]=='A'||initial[i]=='o'||initial[i]=='O'||initial[i]=='y'||initial[i]=='Y'||initial[i]=='e'||initial[i]=='E'||initial[i]=='u'||initial[i]=='U'||initial[i]=='i'||initial[i]=='I'){}else{if(initial[i]>='A'&&initial[i]<='Z'){initial[i]+=32;printf(".%c",initial[i]);}else if(initial[i]>='a'&&initial[i]<='z'){printf(".%c",initial[i]);}else if(initial[i]=='\0'){printf("\n");}}}return 0;
}