• C Primer Plus汇总 (二)错误笔记


    1、printf("%s! c is cool!\n","%s! c is cool!\n");          

    #include <stdio.h> 
    #define FORMAT "%s! C is cool!\n" 
    int main(void) 
    { 
    int num=10; 
    printf(FORMAT,FORMAT); 
    return 0; 
    }

    输出为

    %s!C is cool! !C is cool!

    将#define FORMAT "%s!C is cool!\n"
    代入程序得到:printf(FORMAT,FORMAT);
    变为:printf("%s!C is cool!\n","%s!C is cool!\n");
    其中,后面的"%s!C is cool!\n"
    整体作为一个字符串被带入最左边的%s,
    所以输出%s!C is cool!(回车)
    //其实这是最右边的那个字符串!C is cool!
    //其实这是最左边的那个字符串除了%s后剩下的内容

    2、printf("%d\v",n);奇怪的输出结果

    #include <stdio.h>
    int main(void)
    {
    int m,n;
    scanf("%d",&n);
    m=n+5;
    while(n++<m)
    printf("%d\v",n);
    }

    输出为什么是乱码?

    http://tieba.baidu.com/p/1399157448

    截图

    图片

    输出

    图片

    VS2010中

    图片

        TXT文档:

    图片

    WORD中

    图片

    使用函数要先给变量初始化

    #include <stdio.h>
    float sbwangyuxi(float x,float y);
    int main(void)
    {
     float a,b;
      sbwangyuxi(a,b);
     return 0;
    }
    float sbwangyuxi(float x,float y)
    {
     float c;
     while(scanf("%f,%f",&x,&y))
     {
      c=(x-y)/(x*y);
      printf("%f\n",c);
     }
    }

    上面这个怎么运行怎么错误,最后给主函数里的变量赋值
    在主函数里加入a=0,b=0;才能成功运行

    #include <stdio.h>
    float sbwangyuxi(float x,float y);
    int main(void)
    {
     float a,b;
     a=0,b=0;
     sbwangyuxi(a,b);
     return 0;
    }
    float sbwangyuxi(float x,float y)
    {
     float c;
     while(scanf("%f,%f",&x,&y))
     {
      c=(x-y)/(x*y);
      printf("%f\n",c);
     }
    }

    if  '\"'==' "'

    C PRIMER PLUS 第5版165页例题chcount.c

    #include<stdio.h>
    #define PERIOD '.'
    int main(void)
    {
        int ch;
        int charcount=0;
    
        while((ch=getchar())!=PERIOD)
        {
            if(ch!='"'&&ch!='\'')
              charcount++;
        }
        printf("There are %d non-quote characters.\n",charcount);
    
        return 0;
    }

    注意到

    if(ch!='"'&&ch!='\'')
    改为if(ch!='\"'&&ch!='\'')
    或if(ch!='\"'&&ch!=''')
    输出结果相同
    疑问else break;

    #include<stdio.h>
    #include<ctype.h>
    int main(void)
    {
     char ch;
      
     while(1)
     {
       ch=getchar();
      if(isalpha(ch))
          putchar(ch);
            else
               break;
     }
     printf("你输入的不是字母"); 
     return 0;
     } 
    为什么只循环一次?
     
     

    \n被悲剧的抓住了 然后作为祭品召唤出了else break 击败了while大魔王

    http://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&sc=17322832971&z=1418062378

    #include<stdio.h>
    #include<ctype.h>
    int main(void)
    {
     char ch;
      
     while(1)
     {
       ch=getchar();
      if(isalpha(ch)||ch=='\n')
          putchar(ch);
            else
          break;
     }
     printf("你输入的不是字母"); 
     return 0;
     } 

    //这之后犯了个毛病有问题不思考就提问,唉

    小失误if并不是结束

    #include<stdio.h>
    int main(void)
    {
        int _a,_b,_c;
        char ch;
        _a=_b=_c=0;
        while((ch=getchar())!='#')
          {
              if(ch==' ')
                 _a++;
    
               if(ch=='\n')
                 _b++;
              else
                _c++;
          }
          printf("读取的空格字符为 %d,换行字符为 %d,其它字符为 %d.",_a,_b,_c);
          return 0;
    }

    输出 为   读取的空格字符为 1,换行字符为 1,其它字符为 4.

    在第2个if前加上else
    变成如下后
    #include<stdio.h>
    int main(void)
    {
        int _a,_b,_c;
        char ch;
        _a=_b=_c=0;
        while((ch=getchar())!='#')
          {
              if(ch==' ')
                 _a++;
               else
               if(ch=='\n')
                 _b++;
              else
                _c++;
          }
          printf("读取的空格字符为 %d,换行字符为 %d,其它字符为 %d.",_a,_b,_c);
          return 0;
    }


    读取的空格字符为 1,换行字符为 1,其它字符为 3.

     
    由于对if分支语句的使用失误造成在输入第一个空格时,变量ch进入第二个if里进行判断属于else
    于是_c++,
     
    例题为C PRIMER PLUS 第五版第7章课后编程练习第1题
  • 相关阅读:
    iOS开发之Socket
    IOS开发之Bug--使用KVC的易错情况
    IOS开发之功能模块--给任意的UIView添加点击事件
    IOS开发之开发者账号遇到的bug
    iOS开发--关于TableViewCell的可视化设置细节
    学习Coding-iOS开源项目日志(四)
    Learn how to Use UIPageViewController in iOS
    关于Storyboard的使用
    学习Coding-iOS开源项目日志(三)
    学习Coding-iOS开源项目日志(二)
  • 原文地址:https://www.cnblogs.com/zero5/p/2602536.html
Copyright © 2020-2023  润新知