將字串中的所有字母都替換成該字母的下一個字母
題目很簡單,但是有很多細節,我第一次編的時候只考慮到當字串中的某個字元為‘z’或’Z’時,要將其轉化為’a’或‘A’;
第一次的程式如下,編譯執行通過
#include<stdio.h>
#include<string.h>
void func(char *p)
{
while(*p!=NULL)
{
if(*p=='z'| *p=='Z')
{
*p='a';
}
else
{
*p = *p + 1;
}
p++;
}
}
void main()
{
char str[512];
gets(str);
func(str);
puts(str);
}
我犯的錯誤,第一個,沒有考慮到中間可能會有數字,所以要進行一下判斷,是否為字元,以及‘Z’要轉化為’A‘,更改後的程式如下:
#include<stdio.h>
#include<string.h>
void func(char *p)
{
while(*p!=NULL)
{
if(isalpha(*p)&&*p!='z'&&*p!='Z')
{
*p = *p + 1;
}
else if(*p=='z')
{
*p='a';
}
else if(*p=='Z')
{
*p='A';
}
p++;
}
}
void main()
{
char str[512];
gets(str);
func(str);
puts(str);
}
記住判斷是否為字元的函式為isalpha();