• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

读《C程序设计语言》笔记7

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

习题2-4:

  编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除

  在写次函数之前,先看下一个更简单的函数squeeze(char s[], int c),从字符串s中删除字符c

#include<stdio.h>
void squeeze(char s[], int c)
{
	int i,j;
	for(i=j=0; s[i]!='\0'; i++)
		if(s[i]!=c)
			s[j++]=s[i];
	s[j]='\0';
}

int main()
{
	char s[]={};
	int i=0;
	while((s[i++]=getchar())!=100)
		;
	squeeze(s,'a');
	printf("结果为:%s\n",s);
	system("pause");
	return 0;
}

执行效果如下:

  函数删除了指定的字符'a'。

  再看前面的习题:  

#include <stdio.h>
void squeeze(char s1[], char s2[])
{
	int i,j,k;
	i=k=0;
	for(; s1[i]!='\0'; i++)
	{
		for(j=0; s2[j]!='\0' && s2[j]!=s1[i]; j++) //j=0必须在for循环里面,
			;                                      //不能定义到外面去,这是内层循环
		if(s2[j]=='\0')
			s1[k++]=s1[i];
	}
	s1[k]='\0';
}

int main()
{
	char s1[]={"zhiyu"};
	char s2[]={"liu"};
	printf("%s\n",s1);
	squeeze(s1,s2);
	printf("%s\n",s1);
	system("pause");
    return 0; 
}

执行效果:

   

小结:循环的指示器变量初始化,外层的可以在外面初始化,内层的决不能放到外层初始化,这是一个很简单的问题,我就犯了这么低级的错误。其实放到循环体里初始化挺好的。

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap