根据程序,【1】处应该填的是( C )。
A. j++=i++ B. i++ C. s[j++]=s[i] D. j=i
根据程序,【2】处应该填的是( C )。 //其实该行纯属多余,应该删去
A. i++ B. j=i C. s[i]=s[i]+1 D. s[j]=s[i]
可以使用第二个字符数组来保存结果,对空格不复制;也可以不使用第二个字符数组,而是采用后续字符覆盖空格字符的方式,达到删除效果。
以效率更高的第二种方法为例,代码如下:
void del_space(char * s){
char *p = s
do{
if(*s != ' ')*p++= *s
}while(*s++)
}
main(){ char s[100]={"Our teacher teach C language!"}int i,j
for(i=j=0s[i]!=’\0’i++)//首先用两个下标i和j指向同一数组,i++记录源字符串的遍历位置
if(s[i]!= ' ')//遍历源字符串找出非' '空格字符所在位置,用下标 i 标示,
{s[j]=s[i]j++} //将非' '空格字符拷贝给j指向的位置,j是从头开始重新存放,每拷一个字符j++
s[j]= ‘\0’//直到源字符串查找结束,将重置后的字符串结尾处 j 加一个'\0'以构成一个字符串
printf(“%s\n”,s)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)