zoukankan      html  css  js  c++  java
  • 重拾C,一天一点点_2

    类型转换
    一般来说,如果二元运算符的两个操作数具有不同的类型,较低的类型提升为较高类型,结果为较高类型。
    表达式由float类型的操作数不会自动转换为double类型。使用float类型主要是为了在使用较大的数组时节省存储空间,节省执行时间(双精度运算特别费时)。
    赋值运算符右边的值需要转换为左边变量的类型。
    无论是否进行符号扩展,字符型号变量都将转换为整型变量。

           int i;
           char c;
           i = c;
           c = i;       //c值将保持原值
    或c = i;
       i = c;        //i值可能丢失信息
    强制类型转换
           (类型名)表达式

    自增自减
    if(c == ‘ ’){
           s[i] = c;
           ++i;
    }
    等价于
    if(c == ‘ ’){
           s[i++] = c;

    }

     1 #include <stdio.h>
     2 void squeeze(char s[], int c);
     3 
     4 main(){
     5     int d;
     6     char s[] = "abcd$%^^&*(tewrtopwert";
     7     squeeze(s,'$');
     8     printf("%s", s);    //输出abcd%^^&*(tewrtopwert
     9     return 0;
    10 }
    11 
    12 /**从字符串s中删除字符c**/
    13 void squeeze(char s[], int c){
    14     int i,j;
    15     for(i = j = 0; s[i] != ''; i++){
    16         if(s[i] != c){
    17             s[j++] = s[i];
    18         }    
    19     }
    20     s[j] = '';
    21 }
    View Code

     php实现

     1 <?php
     2 $str = 'abcdefg';
     3 function del_w($str,$w){    
     4     /*
     5     $new_str = '';
     6     for($i=0,$len=strlen($str); $i<$len; $i++){
     7         if($str[$i] != $w){
     8             $new_str .= $str[$i];
     9         }
    10     }
    11     */
    12     for($i=$j=0,$len=strlen($str); $i<$len; $i++){
    13         if($str[$i] != $w){
    14             $str[$j++] = $str[$i];
    15         }
    16     }
    17     return $str;
    18 }
    19 echo del_w($str,'d');
    20 ?>
    View Code
     1 #include <stdio.h>
     2 void strcat(char s[], char t[]);
     3 
     4 main(){
     5     int d;
     6     char s[] = "abcd$%^^&*(tewrtopwert";
     7     char t[] = "1234567890";
     8     strcat(s,t);
     9     printf("%s", s);    
    10     return 0;
    11 }
    12 
    13 /****将字符串t连接到字符串s的尾部,s必须有足够大的空间****/
    14 void strcat(char s[], char t[]){
    15     int i,j;
    16     i = j = 0; 
    17     while(s[i] != ''){
    18         i++;
    19     }
    20     while((s[i++] = t[j++]) != ''){
    21         ;
    22     }
    23 }
    View Code
     1 <?php
     2 $str1 = 'abcd$%^^&*(tewrtopwert123';
     3 $str2 = '1234567890abcd';
     4 function squeeze($str1, $str2){
     5     for($i=0,$len1=strlen($str1); $i<$len1; $i++){
     6         $b = false;
     7     $str3 = array();
     8         for($j=0,$len2=strlen($str2); $j<$len2; $j++){
     9             if($str1[$i] == $str2[$j]){
    10                 $b = true;
    11                 break;
    12             }
    13         }
    14         if(!$b){
    15             $str3[] = $str1[$i];
    16         }
    17     }
    18     return $str3;
    19 }
    20 echo implode('',squeeze($str1, $str2));
    21 ?>
    View Code

     以上C程序基本是书上有的,边看边抄下来,感到很惭愧,为什么自己想不到这么巧妙的方法。。。

    越来越感觉到自己的算法很糟糕很糟糕了,得恶补,一天一点点!

  • 相关阅读:
    软件工程 2+ 自动生成四则运算题 测试版
    面向对象 (5)计算柱体体积可换底
    面向对象 (4)正方形的周长和面积
    软件工程 3.关于软件质量保障初探
    面向对象 (3)四棱柱的体积与数的判断
    面向对象 (1)矩形的面积和周长
    面向对象 (2)n的阶乘与两点距离
    软件工程 2.20194650 自动生成四则运算题第一版报告
    软件工程 1.《现代软件工程—构建之法》-概论(精读一章有感+练习与讨论部分)
    第四次博客作业-结对项目
  • 原文地址:https://www.cnblogs.com/lltong/p/3373237.html
Copyright © 2011-2022 走看看