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. Websocket-Sharp获取客户端IP地址和端口号

    //OnOpen事件 protected override void OnOpen() { string IPAddress = base.Sessions.Sessions.First().Cont ...

  2. python类的继承、封装和多态

    摘自https://www.cnblogs.com/evablogs/p/6724477.html 继承 1 2 3 4 5 6 7 8 class Person(object):     def _ ...

  3. hadoop wordcout测试

    hadoop wordcout测试 安装好hadoop 环境后,启动HDFS等服务:输密码 1004 start-all.sh 查看启动情况 1006 jps 1007 cd ~ 切换到用户默认目录 ...

  4. R语言学习——图形初阶之折线图与图形参数控制

    plot()是R中为对象作图的一个泛型函数(它的输出将根据所绘制对象类型的不同而变化):plot(x,y,type="b")表示将x置于横轴,y置于纵轴,绘制点集(x,y),然后使 ...

  5. Mysql原理与优化

    原文:https://mp.weixin.qq.com/s__biz=MzI4NTA1MDEwNg==&mid=2650763421&idx=1&sn=2515421f09c1 ...

  6. js 秒数格式化

    function formatSeconds(value) { var theTime = parseInt(value);// 秒 var theTime1 = 0;// 分 var theTime ...

  7. 宝塔服务器面板 部署 thinkphp5 坑

    thinkphp5 在宝塔服务器上部署,出现的问题: 1. File not found. 原因: 宝塔服务器默认不支持 pathinfo 的路径访问:需要在软件 - PHP - 管理里面,安装php ...

  8. 教程一 openwrt路由器入门 远程命令行+文件系统

    如图,拿到一个openwrt路由器我们第一步要远程控制. 这里在买了两块wifi-robots  wifi视频模块. 0首先说下这个WIIF的信息 淘宝购买链接 https://item.taobao ...

  9. windows环境中JDK环境变量配置

    一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.com/technetwork/java/jav ...

  10. 《JavaScript设计模式与开发实践》笔记第八章 发布-订阅模式

    第八章 发布-订阅模式 发布-订阅模式描述 发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 发布-订阅模式可以广泛应用于 ...