scanf:

  格式字符串的一般形式:%[*][输入数据宽度][长度] 类型  (其中有方括号[] 的项为任选项。)

各项意义:

  1) 类型:表示输入数据的类型,其格式符和意义如下表所示。

        格式字符 意义
              d 输入十进制整数
              o 输入八进制整数
              x 输入十六进制整数
              u 输入无符号十进制整数
             f,e 输入实型数(用小数形式或指数形式)
              c 输入单个字符
              s 输入字符串

  2) “ *”符: 用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。

    例:scanf("%d %*d %d",&a,&b);
    输入: 1 2 3,    则a=1,2被跳过,b=3。
  3) 宽度: 用十进制整数指定输入的宽度(即字符数) 。
    例1:scanf("%5d",&a);
    输入: 12345678  则a=12345,其余部分被截去。
    例2:scanf("%4d%4d",&a,&b);
    输入: 12345678  则a=1234,b=5678。
  4) 长度: 长度格式符为 l 和 h, l 表示输入长整型数据(如%ld) 和双精度浮点数(如%lf) 。 h 表示输入短整型数据。

printf:
  格式字符串的一般形式:[标志][输出最小宽度][. 精度][长度] 类型   (其中方括号[] 中的项为可选项。)

各项意义:
  1) 类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:

         格式字符        意义
               d 以十进制形式输出带符号整数(正数不输出符号)
               o 以八进制形式输出无符号整数(不输出前缀 0)
             x,X 以十六进制形式输出无符号整数(不输出前缀 Ox)
               u 以十进制形式输出无符号整数
               f 以小数形式输出单、双精度实数
             e,E 以指数形式输出单、双精度实数
             g,G 以%f 或%e 中较短的输出宽度输出单、双精度实数
              c 输出单个字符
              s 输出字符串

  2) 标志:标志字符为-、 +、 #、空格四种,其意义下表所示:

          标        志       意义
               - 结果左对齐,右边填空格
               + 输出符号(正号或负号)
            空格 输出值为正时冠以空格,为负时冠以负号
              #

对 c,s,d,u 类无影响;对 o 类, 在输出时加前缀 o;对 x 类, 在输出时加前缀 0x;

对 e,g,f 类当结果有小数时才给出小数点

  3) 输出最小宽度:

    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或 0。
  4) 精度:

     精度格式符以“. ”开头,后跟十进制整数。

    本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
  5) 长度:

    长度格式符为 h,l 两种, h 表示按短整型量输出, l 表示按长整型量输出。

注意

  1. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格, TAB或回车作间隔。
  2. C 编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时, A 即为非法数据)时即认为该数据结束。
  3. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
    例:scanf("%c%c%c",&a,&b,&c);
    输入:d e f    则a='d', b=' ', c='e'。
    输入:def       则a='d', b='e', c='f'。
  4. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。只有“%”开头的部分才会被后面的值替换掉。
    例1:scanf("%d,%d,%d",&a,&b,&c);  (其中用非格式符“ , ”作间隔符)

    输入应为:5,6,7
    例2:scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  5. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。

    double型输入输出形式如下:

    double a;

    scanf("%lf",&a);

    printf("%f",a);

    注:在输入double类型时需要使用%lf才能正常得到a值,而在输出double类型时可以使用%f,因为在执行printf("%f",a)时编译器将自动把float类型的参数转化为double类型

  6. 整数值用%d输出,实数用%f输出  8.0和5.0被看做为实数、浮点数
  7. printf中使用“\n”表示换行
  8. 输出25,printf("%d",25);
  9. 输出025,printf("%03d",25);

c语言变量及输入输出的更多相关文章

  1. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...

  2. [C语言 - 2] C语言变量

    A.变量的作用域: 1.局部变量:在函数或者代码块内部定义的变量 作用域:从定义处到代码块结束 生命周期:从定义处分配控件,代码块结束后被回收 局部变量没有默认值,要自己初始化   2.全局变量:在函 ...

  3. 黑马程序员-- C语言变量作用域与代码块

    这里通过变量作用域的两种错误用法来介绍一下C语言变量作用域 其次对代码块的使用进行了简单说明: #include <stdio.h> 1.变量的作用域(作用范围) 变量定义的那一行开始,直 ...

  4. 模板语言变量,js变量,js自执行函数之前嵌套调用

    1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = &quo ...

  5. Go 语言变量

    变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 声明变量的一般形式是使用 var 关键字: ...

  6. go语言变量

    变量可以通过变量名访问 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字 声明变量的一般形式是使用 var 关键字: var identifier type 变量声明 1. 指定变量类 ...

  7. C语言变量声明内存分配

    转载: C语言变量声明内存分配   一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...

  8. C语言变量的类型和存储位置

    . C语言变量主要分为全局变量.静态全局变量.局部变量.静态局部变量和寄存器变量.其中静态变量用static关键字进行修饰.程序所占用的内存可以分为以下几个部分: ()代码段-存放程序代码,只读的,不 ...

  9. C语言变量的初始化

    关于C语言变量是否需要初始化的问题.以前西北工业大学的C语言老师说的是,需要初始化,如果不初始化就使用的话,变量的值是以前遗留在内存中的,是不确定的(这只是针对局部变量的).C语言全局变量如果没有初始 ...

随机推荐

  1. ES入门REST API

    在ES中存在4种数据对象,分别是 index  ,  type ,  document  , field .   其跟我们熟悉的关系型数据库得二维表得对应关系为: index -> table表 ...

  2. 使用Server Trigger保护重要的数据库对象

    一 .Server Trigger的简单介绍 在SQL Server数据库中,Server Trigger 是一种特殊类型的存储过程,它可以对特定表.视图或存储中的必然事件自动响应,不由用户调用.创建 ...

  3. c/c++ 模板函数的重载

    模板函数的重载 普通函数可以重载,模板函数也可以重载,但规则复杂 有下面2个函数,名字相同,返回值相同就,参数不同,符合重载. template<typename T> std::stri ...

  4. emacs 文本替换

    文本替换方法: M-% (query-replace) 输入 响应 SPC 或者 y 替换当前匹配并前进到下一个匹配处 DEL 或者 n 忽略此次匹配并前进到下一个匹配处 . 替换当前匹配并退出 , ...

  5. Dell服务器U盘安装Windows Server时识别不到硬盘

    Dell服务器U盘安装Windows Server时识别不到硬盘 1.下载驱动http://downloads.dell.com/FOLDER03688531M/1/SAS-RAID_Driver_T ...

  6. maven生成项目慢解决办法

    maven生成项目慢,原因:在线更新archetype-catalog.xml文件,从Apache中央仓库. 解决办法,手动下载,放到maven环境. 备用下载地址: https://files.cn ...

  7. 数据库【mongodb篇】练习操作

    本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端刚利用 mongod命令进入客户端环境,此时对数据库一无所知: 举目四望,想知道现在有哪些数据库,   show ...

  8. TensorRT&Sample&Python[yolov3_onnx]

    本文是基于TensorRT 5.0.2基础上,关于其内部的yolov3_onnx例子的分析和介绍. 本例子展示一个完整的ONNX的pipline,在tensorrt 5.0的ONNX-TensorRT ...

  9. AirPods 2 & Android

    AirPods 2 & Android AirBattery https://play.google.com/store/apps/details?id=friedrich.georg.air ...

  10. python+ffmpeg切割视频

    什么是ffmpeg 1.1 简介 FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包 ...