字符串输出

来源:百度知道 编辑:UC知道 时间:2024/09/26 14:18:05
main()
{char s[]={"abc12.3-A B"};
int i=0,j;
while (s[i]!='\0')
if((('a'<=s[i])&&(s[i]<='z'))||(('A'<=s[i])&&(s[i]<='Z')))
i++;
else
{j=i;
while((s[j]=s[j+1])!='\0') j++;

}
printf("%s\n",s);}
能解释下这个程序吗?

main()
{
char s[]={"abc12.3-A B"}; //定义一个s的字符串,并且最后一个为'\0'字符
int i=0,j;

//当字符串没到最后一个的时候,执行while循环
while (s[i]!='\0')
if((('a'<=s[i])&&(s[i]<='z'))||(('A'<=s[i])&&(s[i]<='Z'))) //当字符为a-z,A-Z的字母时,i加1
i++;
else //不是字母的时候,把非字母的字符删掉
{
j=i;
while((s[j]=s[j+1])!='\0')
j++;
}
printf("%s\n",s); //最后输出新的字符串s,只包含了字母的
}

这个程序的功能是输出字符串里面的大小写字母,不输出数字符号等其他字符,if((('a'<=s[i])&&(s[i]<='z'))||(('A'<=s[i])&&(s[i]<='Z'))),判断是否是字母,是的话执行i++;
否则执行
{
j=i;
while((s[j]=s[j+1])!='\0')
j++;
}
这里,有一个while循环,循环的意思是把第i+1个元素赋值到位置i上,也就是去掉非字母的数组元素把后面的前移一位,遇到结束符终止while循环,然后跳出执行外边的while循环
最后打印出只含字母的sprintf("%s\n",s);这个程序编写的很精巧,希望楼主能在电脑上执行一两遍看个明白,文字的说明仅限于此