zoukankan      html  css  js  c++  java
  • 第三章 数据的输入与输出

    在变量说明中,不允许连续给多个变量赋初值。int a = b = c = 5;错误。必须改写为int a = 5,b = 5,c = 5。

    getchar 函数

      getchar 函数是字符输入函数。它的作用是从标准输入设备(一般为键盘)读取一个字符(包括空格、回车和Tab),该字符显示到屏幕上。其一般形式为:

    getchar( )

    说明:getchar是以行为单位进行存取的。getchar( )必需读到一个换行符或者文件结束符EOF才会停止读取然后进行一次输出。注意:getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。getchar函数通常返回终端所输入的字符,这些字符系统中对应的ASCII值都是非负的。

    因此,很多时候,我们会写这样的两行代码:char c;c = getchar( );这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到文件结束符EOF (文件结束符EOF,Windows下为组合键Ctrl + Z, Unix/Linux下为组合键Ctrl + D)时,getchar ()返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。正确的定义方法如下(K&R C中特别提到了这个问题):int c;c = getchar( );

     

     

    putchar 函数

      putchar函数是字符输出函数。它的作用是向标准输出设备(一般为显示器)输出一个字符。其一般形式为:

    putchar( )

    putchar函数可以输出能在屏幕上显示的字符,也可以输出控制字符,如putchar(' ')的作用是输出一个换行符,使输出的当前位置移到下一行开头。

     

    gets 函数

    从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。一行输入由一串字符组成,以一个换行符(newline)结尾。gets函数丢弃换行符,并在该行末尾存储一个NUL字节(一个NUL字节是指字节模式为全0的字节,类似''这样的字符常量)。然后,gets函数返回一个非NULL值,表示该行被成功读取。当gets函数被调用但事实上不存在输入行是它就返回NULL值,表示它到达输入的末尾。

    NUL是ASCII字符集中''字符的名字,它的字节为全0。NULL指一个其值为0的指针。

     

    puts函数

    puts()函数用来向标准输出设备(屏幕)输出字符串并换行,具体为:它把指定字符串写到到标准输出设备,并在末尾添上一个''换行符为回车换行。其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。

     

    scanf 函数

    scanf函数是格式输入函数。按用户指定的格式从键盘上把数据输入指定的变量之中。其一般形式为:

    scanf(格式控制,地址列表)

    1.格式控制

    格式控制是由" "括起来的字符串。它主要由格式说明符和普通字符组成,而格式说明符是由 % 和格式字符组成,它的作用是将输入的数据转换成指定的格式。

       scanf格式字符

    格式字符 含义 变量类型
    d,i 用来输入有符号的十进制整数 int
    ld 读取一个长整型值 long
    u 用来输入无符号十进制整数 unsigned int
    f 读取一个实型值 float
    lf 读取一个双精度实型值 double
    c 读取一个字符 char
    s 从输入中读取一个字符串 char型数组

    2.地址列表

      地址列表是由若干个地址组成的表列,可以是变量的地址或字符串的首地址。地址多余一个各地址之间用逗号分隔。在C语言中变量的地址由取地址运算符 & 得到。

    scanf("%d%d%d",&a,&b,&c);在输入数据时,两个数据用一个或多个空格间隔也可以用Enter键、Tab键。

     

    3.使用scanf函数应注意的问题

      1)scanf函数中 如果%后有一个 * 附加说明符,表示该格式说明要求输入数据,但不赋值,即在地址列表中没有对应地址。

      2) scanf( )的格式控制字符串中没有转义字符。如scanf("%d ",&a);是错误的。

      3)scanf( )的格式控制字符串中的普通字符不是用来显示的,而是输入时要求按照普通字符输入。

    例如:scanf("%d,%d",&a,&b);输入时按3,4

    又如:scanf("a = %d,b = %d",&a,&b);输入时按a = 3,b = 4

      4)scanf( )中参数第二部分一定是地址列表,不能是变量或表达式。

      5)是用 %c 格式输入字符时,空格字符和转义字符都属于有效字符。

     scanf("%2d%*2d%ld",&x,&y); %2d 读1个2位整型数存入a。   %*2d -- 跳过输入流中的1个2位整型数。%ld输入长整型。

     

    printf 函数

    printf函数是格式输出函数,它的作用向输出设备输出若干个任意类型的数据。其一般形式为:

    printf(格式控制,输出表列)

    1.格式控制

     格式控制是由" "括起来的字符串,它主要由格式说明和普通字符组成,而格式说明符是由 % 和格式字符组成,它的作用是将输出的数据转换成指定的格式。

    printf格式字符

    格式字符 含义
    d,i 以带符号的十进制形式输出一个整数(正数不输出符号)
    o 以八进制形式输出一个整数(不输出前导符 0)
    X,x 以十六进制形式输出一个整数(不输出前导符 0X)
    c 以字符形式输出一个字符
    s 输出字符串
    f 以小数形式输出单、双精度数,隐含输出6位小数
    e,E 以指数形式输出实数,用e时以"e"表示,用E时以“E”表示

    普通字符是需要原样输出的字符。如printf函数内双撇号中的逗号、转义字符。

    2.输出表列

      输出表列是由需要的数据组成,可以是变量、常量、函数或表达式。数据应与格式字符类型对应。如果输出的表列中有多项数据,则每个数据之间用逗号分隔。

     

    3.格式字符的用法说明

      1)整数输出:d格式

        1)%d按十进制整型数据的实际长度输出。

        2)%md右对齐输出,m为指定的输出字段宽度。如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。

        3) %-md左对齐输出,m为指定的输出字段宽度。如果数据的位数小于m,则右端补空格,若大于m,则按实际位数输出。

     

      2)实数输出:f格式

        1)%f整数部分按实际长度输出,小数部分保留 6 位输出。

        2)%mf左对齐输出,m为指定的输出字段宽度,小数部分和小数点共占 7 位,整数部分剩 m - 7 位,如果整数部分的位数小于 m - 7 则左端补空格,若大于 m - 7则按实际位数输出。

        3)%-mf右对齐输出,m为指定的输出字段宽度,小数部分和小数点共占 7 位,整数部分剩 m - 7 位,如果整数部分的位数小于 m - 7 则右端补空格,若大于 m - 7则按实际位数输出。

          4)%.nf中n为小数点后要保留的位数,小数位不够时,尾部补0。

        5)%m.nf中指定输出字段宽度为m,n位小数。

      例如:double a = 123.456; printf("%.2f,%10.2f,%-10.3f。",a,a,a);

      输出结果:123.46,    123.46,123.456   。  中间是左端补4个空格,后面是右端补3个空格。

      

     

      3)字符输出:c格式

        1)%c中的c是格式符。在c语言中,一个整数只要值在0 - 255范围内,就可以用字符形式输出。在输出前系统会将该整数作为ASCII码转换成相应的字符,一个字符数据也可以用整数形式输出。

        2)字符数据也可以输出指定宽度。%mc左端补 m - 1 个空格,%-mc右端补 m - 1 个空格。

     

      4)字符串输出:s格式

        1)%s用来输出一个字符串。

        2)%ms右对齐输出,m为指定的输出字符串宽度。如果字符串本身长度小于m,则左端补空格,若串大于m,则将字符串全部输出。

        3)%-ms左对齐输出,m为指定的输出字符串宽度。如果字符串本身长度小于m,则右端补空格,若串大于m,则将字符串全部输出。

        4)%m.ns指定取字符串前n个字符,输出字符串宽度为m,这n个字符输出在右端,若 m 小于 n,则输出n,若 m 大于 n,则左端补空格。

          例如:char *p="China"; printf("%7.3s %2.4s", p,p);    Chi前面4个空格。

                                    Chin后面没有空格

        5)%-m.ns指定取字符串前n个字符,输出字符串宽度为m,这n个字符输出在左端,若 m 小于 n,则输出n,若 m 大于 n,则右端补空格。

          例如:char *p="China"; printf("%-7.3s。 %-2.3s。", p,p);Chi    后面4个空格。

                                       Chi后面没有空格。

     

    例题怪题解析:% %在C语言中就是输出一个%,而是d就是一个普通字符,所以当% % d在一起时,其含义就是输出“%d”这两个字符。当% % % d一起时,其最终含义就是输出一个字符%号再接着按整型输出变量的值。

     

    “弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。
    在数学和物理中,弧度是角的度量单位。它是由国际单位制导出的单位,单位缩写是rad。
    定义:弧长等于半径的弧,其所对的圆心角为1弧度。(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角的弧度为1)
    角度定义:两条相交直线中的任何一条与另一条相叠合时必须转动的量的量度,转动在这两条直线的所在平面上并绕交点进行。
    角度是用以量度角的单位,符号为°。一周角分为360等份,每份定义为1度(1°)
    微积分中所有的三角函数的公式都必须是弧度制。

        θ是弧度sin90是指sin(90弧度)      sin 90o   是指sin(90角度)

        1°=π/180°,1rad=180°/π。

            弧度 = n * 180.0f / π    角度转弧度 π/180×角度

            角度 = n * π / 180.0f    弧度变角度 180/π×弧度

     

     

     

    1.输入一个3位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是1+2+3=6。

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 
     5 void main()
     6 {
     7     int num,sum = 0;
     8     printf("please input num
    ");
     9     scanf("%d", &num);
    10 
    11     while (num)
    12     {
    13         sum += num % 10;
    14         num /= 10;
    15     }
    16 
    17     printf("各个位上数字之和为:%d", sum);
    18 
    19     system("pause");
    20 }

     

    2.输出一个正整数,将其反序输出。

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 
     5 void main()
     6 {
     7     int x, a, b, c, d, e, y;
     8     printf("请输入一个五位正整数"); 9     scanf("%d", &x);
    10 
    11     a = x / 10000; 
    12     b = x / 1000 % 10; 
    13     c = x / 100 % 10;
    14     d = x % 100 / 10;
    15     e = x % 10;
    16     y = e * 10000 + d * 1000 + c * 100 + b * 10 + a;
    17     
    18     printf("%d", y);
    19 
    20     system("pause");
    21 }

     

  • 相关阅读:
    [单链表]链表指针追赶问题
    二叉查找树与平衡二叉树
    二叉树的下一个结点
    fork进程函数总结
    《Effective C++》Item2:尽量以const,enum,inline替换#define
    Hash表的使用
    [数字]整数数字的算法
    算法题:找出整数数组中两个只出现一次的数字
    删除元素的操作
    [Reprinted] 使用Spring Data Redis操作Redis(一) 很全面
  • 原文地址:https://www.cnblogs.com/Yang-Xin-Yi/p/13493919.html
Copyright © 2011-2022 走看看