字符串 去掉字母
#include <stdio.h>void main()
{
char a[10],*ch;
int i=1;
gets(a);
for(ch=a;ch<a+5;ch++)
{*ch=*(ch+1);
if(*ch=='a')
i++;
*ch=*(ch+i);}
a[5]='\0';
printf("%s",a);
}
程序错在哪
#include <stdio.h> #include <ctype.h> void f(char* s,int position) { s=s+position; //前进到指定位置 for(;*s!='\0';s++) //字符左移 { *s=*(s+1); } } int main() { char s[10]="11a3b400c"; int i=0; for(;i<10;i++) //查找每个字符 { if(isalpha(s[i])) //如果是字母 { f(s,i); //去掉这个位置字母 i--; //此为重点,因为移动的原因,如果左移的第一个仍是字母,则还要原位再次检查 } } printf("%s\n",s); return 0; }
# include<stdio.h> void zuobi(char*ch){//作弊!不修改字符串,只输出结果 for(;*ch!='\0';ch++){ if(*ch>='a'&&*ch<='z'or*ch>='A'&&*ch<='Z')continue;//是字母就跳过 printf("%c",*ch);//不是就输出 } } int main() { char a[10]; gets(a); zuobi(a); printf("\n--\n"); /*----- */ char*ch=a; char*result=a; do{ if(not(*ch>='a'and*ch<='z'or*ch>='A'and*ch<='Z')){ *result++=*ch; } *ch++; }while(*ch!='\0'); *result='\0'; printf("%s",a); return 0; }