zoukankan      html  css  js  c++  java
  • 读《C程序设计语言》笔记7

    习题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; 
    }
    

    执行效果:

       

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

      

  • 相关阅读:
    异步FIFO总结
    异常检测参考
    Java数据库连接技术
    Eclipse Decompiler不生效解决办法
    mysql常用操作
    时间序列预测——Tensorflow.Keras.LSTM
    AR(I)MA时间序列建模过程——步骤和python代码
    MySQL优化实例
    MySQL性能优化经验
    高性能MySQL笔记 第6章 查询性能优化
  • 原文地址:https://www.cnblogs.com/wangzhiyu811/p/2104797.html
Copyright © 2011-2022 走看看