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;
}