zoukankan      html  css  js  c++  java
  • 03.由一个程序开始(三)

    .printf
     %d:以十进制形式打印一个整型值
     %o:以八进制形式打印一个整型值
     %x:以十六进制形式打印一个整型值
     %g:打印一个浮点值
     %c:打印一个字符
      %s:打印一个字符串
     \n:换行

    .int readColumnNumbers(int columns[],int max)
     在函数声明的数字参数中,并未指定数字的长度,这种格式是正确的,因为不论调用函数的程序传递给它的数字参数的长度是多少,这个函数都将照收不误。这是一个伟大的特性,它允许单个函数操纵任意长度的一维数组。这个特性不利的一面是函数没法知道该数组的长度。如果确实需要数组的长度,它的值必须作为一二单独的参数传递给函数.

    .scanf("%d",&columns[num])
     scanf函数从标准输入读取字符并根据格式字符串对他们进行转换---类似于printf函数的逆操作。scanf函数接受几个参数,其中第一个参数是一个格式字符串,用于描述期望的输入类型,剩余几个参数都是变量,用于存储函数所读取的输入数据,scanf函数的返回值是函数成功转换并存储于参数中的个数
     scanf函数的所有标量参数的前面必须加上一个"&"符号。
     
     %d--读取一个整型值--int
     %ld--读取一个长整型值--long
     %f--读取一个实型值(浮点数)--float
     %lf--读取一个双精度实型值--double
     %c--读取一个字符--char
     %s--从输入中读取一个字符串--char型数组
     前5个格式代码用于读取标量值,所以变量参数的前面必须加上"&"符号,使用所有格式码(除了%c之外)时,输入值之前的空白(空格、制表符、换行符等)会被跳过,值后面的空白表示该值的结束。因此,用%s格式码输入字符串时,中间不能包含空白。

     标准并未硬性规定C编译器对数组下标的有效性检查,绝大多是C编译器也不进行检查,如果你需要进行数组下标的有效性检查,你必须自行写代码。

    <-----------------------------------scanf--------------------------------------------------------

    .scanf函数的返回值由后面的参数决定,返回值表示成功读入的数据个数
    .scanf()中的变量必须使用地址
    .scanf()格式控制串可以使用空白字符或其他非空白字符,使用空白字符会使scanf()函数在读操作中略去输入中的 

    一个或多个空白字符,使用非空白字符会使scanf函数在读入时剔除掉与这个非空白字符相同的字符
    .在使用"%c"输入时,空格和转义字符均作为有效字符

    .键盘缓冲区残余信息问题
    #include <stdio.h>
    int main()
    {
     int a;
     char c;
     do
     {
      scanf("%d",&a);
      scanf("%c",&c);
      printf("a=%d,c=%c\n",a,c);
      printf("c=%d\n",c);
     }while(c != 'N');
     return 0;
    }
    scanf("%c",&c)这个不能正常接收字符,printf("c=%d\n",c);结果为10,ASCII值为10的是\n,我们每击打一下

    Enter键,向键盘缓冲区发去一个"回车\r",一个"换行\n",\r被scanf函数处理掉了,而\n被scanf函数接收。
    可在连个scanf函数之后加fflush,或getchar(),getch()也可以。
    #include <stdio.h>
    int main()
    {
     int a;
     char c;
     do
     {
      scanf("%d",&a);
      fflush(stdin);  //清除一个流
      scanf("%c",&c);
      fflush(stdin);
      printf("a=%d,c=%c\n",a,c);
      printf("c=%d\n",c);
     }while(c != 'N');
     return 0;
    }
    fflush在gcc下不可用
    ---------------------------------------------------------------------------------------------------->

    a && b---a若为假便不再求值,
    a || b---a若为真便不再求值
    "="----赋值
    "=="---相等

     (ch=getchar()) != EOF && ch != '\n'-----首先getchar函数从标准输入读取一个字符并返回它的值,如果输入中

    不再存在任何字符,函数就会返回常量EOF,用于提示文件的结尾。从getchar函数返回的值被赋给变量ch,然后把它

    与EOF进行比较,在赋值表达式两端加上括号用于确保赋值操作先于比较操作进行。
    为什么ch被声明为整型,而我们事实上需要它来读取字符?答案是EOF是一个整型值(通常为-1),它的位数比字符类

    型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF

  • 相关阅读:
    Android NDK学习(1) 简介
    wmsys.wm_concat结果长度限制的问题
    onInterceptTouchEvent和onTouchEvent调用时序
    滑动到底部或顶部响应的ScrollView实现
    Android ViewPager使用详解
    android include标签的使用,在RelativeLayout中使用include标签需注意!!!!!
    Eclipse中如何在指定工程中搜索指定的字符串
    android:windowSoftInputMode属性详解
    cocos2d-x中关于touch事件的响应
    《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?
  • 原文地址:https://www.cnblogs.com/wblyuyang/p/2255794.html
Copyright © 2011-2022 走看看