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. 《SQL CookBook 》笔记-第三章-多表查询-连接查询

    目录 1 内连接(inner join) 1.1 隐式的内连接 1.2 显式的内连接 2 外连接(outer join) 2.1 左连接(left outer join) 2.2 右连接(right ...

  2. Java 控制结构与方法

    控制结构: 控制结构是对我们程序执行顺序的一种控制,它规定了我们语句块的执行顺序和流程. 分支结构: 关系运算符和逻辑运算符: 关系运算符:== != > >= < <=逻辑运 ...

  3. java有关 String char 常见问题 编辑中

    1 输入输出有关 Scanner 的next()方法 返回值是String 所以尝试获得char时 应该用input.next().charAt[0] 2 空值 String 中null是指 对象引用 ...

  4. RobotFramework和Eclipse集成-安装和使用说明

    1.安装python3. 安装说明: https://www.cnblogs.com/Simple-Small/p/9179061.html 2.RF安装命令:Pip install RobotFra ...

  5. 如何将div高度填满剩余高度

    下列代码中navbar高度为30px,content高度需要填满浏览器的剩余高度 <div id="body">     <div id="navbar ...

  6. Linux根据端口号查看进程PID

    1.命令lsof,以查找占用端口80为例,用法如下: [root@localhost nginx]# lsof -i:80 以上为没有进程占用80端口, [root@localhost sbin]# ...

  7. 解决hash冲突的方法

    复制粘贴于:https://www.cnblogs.com/wuchaodzxx/p/7396599.html#H1_2 开放地址法(线性探测法.二次探测.伪随机探测) 再哈希法 链地址法 建立公共溢 ...

  8. 数据库常用的事务隔离级别和原理?&&mysql-Innodb事务隔离级别-repeatable read详解

    转载地址:https://baijiahao.baidu.com/s?id=1611918898724887602&wfr=spider&for=pc https://blog.csd ...

  9. echarts实时数据图表

    import React, { PureComponent } from 'react'; import ReactEcharts from 'echarts-for-react'; import m ...

  10. 你懂redis吗

    一.redis简介 Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储.).和Memcache类似, ...