本文给大家介绍C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()。

一、scanf()函数
格式化输入函数scanf()的功能是从键盘上输入数据,该输入数据按指定的输入格式被赋给相应的输入项。函数一般格式为:
scanf("控制字符串",输入项列表);
其中控制字符串规定数据的输入格式,必须用双引号括起,其内容是由格式说明和普通字符两部分组成。输入项列表则由一个或多个变量地址组成,当变量地址有多个时,各变量地址之间用逗号“,”分隔。
scanf()中各变量要加地址操作符,就是变量名前加“&”,这是初学者容易忽略的一个问题。应注意输入类型与变量类型一致。
下面探讨控制字符串的两个组成部分:格式说明和普通字符。
1.格式说明
格式说明规定了输入项中的变量以何种类型的数据格式被输入,形式是:
% [ <修饰符> ] <格式字>
各个格式字符及其意义见表3 - 1。

 

二、printf()函数
与格式化输入函数scanf()相对应的是格式化输出函数printf(),其功能为按控制字符串规定的格式,向缺省输出设备(一般为显示器)输出在输出项列表中列出的各输出项,其基本格式为:
printf(“控制字符串”,输出项列表)
输出项可以是常量、变量、表达式,其类型与个数必须与控制字符串中格式字符的类型、
个数一致、当有多个输出项时,各项之间用逗号分隔。
控制字符串必须用双引号括起,由格式说明和普通字符两部分组成。
1.格式说明
一般格式为:
%[<修饰符>]<格式字符>
格式字符规定了对应输出项的输出格式,常用格式字符见表3-2。 
 
可以看出,当指定场宽小于数据的实际宽度时,对整数,按该数的实际场宽输出,对浮点数,相应小数位的数四舍五入。例如:12.34567按%5.2f输出,输出12.35。若场宽小于等于浮点数整数部分的宽度,则该浮点数按实际位数输出,但小数位数仍遵守宽度修饰符给出的值。如上面的12.34567按%2.1f输出,结果为:12.3。
在实际应用中,还有一种更灵活的场宽控制方法,用常量或变量的值作为输出场宽,方法是以一个"*"作为修饰符,插入到%之后。
例如:i=123;
printf("%*d",5,i); 
 
long int b;
short int c;
unsigned int d;
char e;
float f;
double g;
a=1023;
b=2222;
c=123;
d=1234;
e='x';
f=3.1415926535898;
g=3.1415926535898;
printf("a=%d\n",a);
printf("a=%0\n",a);
printf("a=%x\n",a);
printf("b=%ld\n",b);
printf("c=%d\n",c);
printf("d=%u\n",d);
printf("e=%c\n",e);
printf("f=%f\n",f);
printf("g=%f\n",g);
printf("\n");
}
执行程序,输出为:
RUN¿
a=1023
a=1777
a=3ff
b=2222
c=123
d=1234
e=x
f=3.141593
g=3.141593

三、getchar()函数与putchar()函数
putchar()与getchar()是对单个字符进行输入输出的函数。
getchar()的功能是返回键盘输入的一个字符,它不带任何参数,其通常格式如下:
ch=getchar()
ch为字符型变量,上述语句接收从键盘输入的一个字符并将它赋给ch。
putchar()的作用是向屏幕上输出一个字符,它的功能与printf函数中的%c相当。putchar()必
须带输出项,输出项可以是字符型常量、变量、表达式,但只能是单个字符而不能是字符串。
[例3-3]输入一个字符,回显该字符并输出其ASCII码值。
#include<stdio.h>
main()
{
charch;
ch=getchar();
putchar(ch);
printf("%d\n",ch);
}
运行程序:
RUN¿
g¿
g103
需要注意的是,字符输入输出函数定义在头文件stdio.h中,故当程序中使用putchar()或
getchar()函数时,必须在main()之前用语句:
#include"stdio.h"
将stdio.h包含进来。
3.2.4程序应用举例
[例3-4]下面的程序是一个复数加法的例子。
#include<stdio.h>
main()
{
floata1,b1,a2,b2;
charch;
printf("\t\t\tcomplexsAddition\n");
printf("pleaseinputthefirstcomplex:\n");
printf("\trealpart:");
scanf("%f",&a1);
printf("\tvirtualpart:");
scanf("%f",&b1);
printf("%5.2f+i%5.2f\n",a1,b1);
printf("\npleaseinputthesecondcomplex:\n");
printf("\trealpart:");
scanf("%f",&a2);
printf("\tvirtualpart:");
scanf("%f",&b2);
printf("%5.2f+i%5.2f\n",a2,b2);
printf("\nTheadditionis:");
printf("%6.3f+i%6.3f\n",a1+a2,b1+b2);
printf("programnormalterminated,pressenter...");
ch=getchar();
ch=getchar();
}
运行结果如下:
RUN¿
complexsaddition
pleaseinputthefirstcomplex:
realpart:1.2
virtualpart:3.4
1.20+i3.40
pleaseinputthesecondcomplex:
realpart:5.6
virtualpart:7.8
5.60+i7.80
Theadditionis:6.800+i11.200
programnormalterminated,pressenter....

C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()的更多相关文章

  1. 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。

    本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...

  2. 请写出JavaScript中常用的三种事件。

    请写出JavaScript中常用的三种事件. 解答: onclick,onblur,onChange

  3. PHP常用的三种设计模式

    本文为大家介绍常用的三种php设计模式:单例模式.工厂模式.观察者模式,有需要的朋友可以参考下. 一.首先来看,单例模式 所谓单例模式,就是确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实 ...

  4. R语言中样本平衡的几种方法

    R语言中样本平衡的几种方法 在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性.在不平衡的数据中,任一算法都没法从样本量少的类中获取 ...

  5. Hibernate中Java对象的三种状态

                                                                                     Hibernate中Java对象的三种 ...

  6. 国内常用的三种框架:ionic/mui/framework7对比

    国内常用的三种框架:ionic/mui/framework7对比 原文连接:http://zhihu.com/question/19558750/answer/91179040

  7. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  8. ASP.NET缓存中Cache过期的三种策略

    原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID=&quo ...

  9. Notepad++中Windows,Unix,Mac三种格式

    Notepad++中Windows,Unix,Mac三种格式之间的转换 http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htm ...

随机推荐

  1. 深入理解JVM-3垃圾收集器与内存分配策略

    在上面一篇文章中,介绍了java内存运行时区域,其中程序计数器.虚拟机栈.本地方法栈3个区域随线程生灭:栈中的栈帧随着方法的进入和退出而有条不紊的执行着进栈出栈的操作,每一个栈帧中分配着多少内存基本上 ...

  2. phalcon几种分页方法

    phalcon几种分页方法 一: use Phalcon\Paginator\Adapter\Model as PaginatorModel; // Current page to show // I ...

  3. 让页面滑动流畅得飞起的新特性:Passive Event Listeners

    版权声明:本文由陈志兴原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/153 来源:腾云阁 https://www.qclo ...

  4. java 集合(Set1)

    ----------------|Collection(为什么要画这个图?学多了之后该忘了) --------------------------|List --------------------- ...

  5. SAP中寄售处理

    寄售分两种: 1, 供应商提供货物,我们销售 2,我们提供货物,寄售商销售 [@more@] 1, 供应商提供货物,我们销售 创建PO,购买寄售货物,categories维护成K,然后收货即可. 2, ...

  6. unity入门笔记

    我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...

  7. 实现 像网易云音乐 播放列表那样的弹出型Dialog

    如图 所示是点击Test之后的 弹出的Dialog (请无视我工程的命名) 20161017/**加入点击回调,假设dialog里放了一个TextView*/ 得先写一个点击回调 public int ...

  8. android动画小析

    这里所讲的动画,是android framework提供的动画框架里面的动画. 是view层级的动画.不涉及到底层opengl es相关的动画实现. 动画: 主要包括 Interpolation du ...

  9. php面向对象Object

    1.创建类 class 类名{ private 私有变量 只能本类的内部使用 protected 受保护的变量 本类和子类的内部 public 公开的变量 都可以使用 一般属性都设为私有 一般函数都是 ...

  10. robotframework笔记3--如何编写好的测试用例使用机器人的框架

    命名 测试套件的名称   之后,你可能应该描述你的名字. 名称是从文件或目录名自动创建: 扩展了. 强调了转换空间. 如果名称都是小写,大写的单词是. 名称可以是比较长的,但是太长的名字不方便 文件系 ...