几种输入输出数据的方法
创始人
2025-06-01 00:13:48
0次

文章目录

    • 几种输入输出数据的方法
      • 一.用函数putchar输出单个字符数据
      • 二.用函数getchar输入单个字符数据
      • 三.用函数printf按指定格式输出数据
        • 1.printf函数调用的一般形式
        • 2.printf函数的格式控制字符串
          • (1).格式说明符
          • (2).转义字符
          • (3).普通字符
        • 3.printf函数的几种常用输出形式
          • (1)d格式符
          • (2)c格式符
          • (3)s格式符
          • (4)f格式符
            • 基本型%f
            • %m.nf形式
            • %-m.nf形式
          • (5)e格式符
            • 基本型%e
            • %m.ne形式
            • %-m.ne形式
          • (6)转义字符
      • 四.用函数scanf按指定格式输入数据
        • 1.scanf函数调用的一般形式
        • 2.scanf函数的格式控制字符串
        • 3.使用scanf函数需要注意的几点

几种输入输出数据的方法

C语言最基本的数据输入输出函数有4个,可分为字符输入输出函数和格式化输入输出函数两类。

一.用函数putchar输出单个字符数据

putchar函数是字符输出函数,功能是在显示器上输出一个字符。使用形式为:
putchar(c);

其中:c为字符型数据或整型数据,当为整型数据时,它的值一般应是一个可见字符的ASCII码,否则没有实际意义。

#include
int main() {char c = 'A'; putchar(c);    //输出字符Aputchar('\n'); //输出换行符putchar('b');  //输出breturn 0;
}

结果:

在这里插入图片描述

注意:

putchar函数只有一个参数,一次只输出一个字符。

二.用函数getchar输入单个字符数据

getchar函数是字符输入函数,功能是读取从键盘上输入的一个字符。使用的一般形式为:

变量 = getchar();

例如:

char c;

c = getchar();

运行时从键盘输入A,则将输入字符A赋予字符变量c。

#include
int main() {char c, d;c = getchar();  //输入字符d = getchar();  putchar(c);     //输出字符putchar('\n');putchar(d);return 0;
}

结果:

在这里插入图片描述

注意:

  1. getchar函数是无参函数,但调用getchar函数时,后面的括号不能省略。getchar函数从键盘上接受一个字符作为它的返回值。
  2. getchar函数只能接受单个字符。输入多于一个字符时,只接受第一个字符。通常把输入的字符赋予一个字符变量,构成赋值语句。
  3. 在输入时,空格、换行符等都作为字符读入。而且,只有在用户按回车键时,读入才开始执行。

三.用函数printf按指定格式输出数据

printf函数称为格式化输出函数,其最后一个字母f即为”格式“(format)之意,功能是按用户指定的格式,把指定的数据默认输出到显示器屏幕上。

1.printf函数调用的一般形式

printf函数是标准库函数,其函数原型在头文件中定义,使用形式为:

printf(格式控制字符串,输出表);

例如:

printf("a = %d",a);

printf("f = %f",f);

其中,格式控制字符串由双引号作为两端界符,用于指定输出格式。输出表列由需要输出的各个数据项组成,可以是常量、变量或表达式,各输出项之间用逗号","分隔。

2.printf函数的格式控制字符串

格式控制字符串可以包含三种字符:格式说明符、转义字符和普通字符。

(1).格式说明符

格式说明符由”%“和格式字符组成,如%d,%f等,其作用是将输出的数据转换为指定的格式然后输出。

​ printf格式字符

格式字符意义
%d输出十进制形式的带符号整数
%u输出十进制形式的无符号整数
%o输出八进制形式的无符号整数
%x输出十六进制形式的无符号整数,使用小写字母a, b, c, d, e, f
%X与x相同,使用大写字母A, B, C, D, E, F
%f输出小数形式的单、双精度实数
%e输出指数形式的单、双精度实数,指数用e表示
%E与e相同,指数用E表示
%g以%f、%e中较短的输出宽度输出单、双精度实数,指数用e表示
%G与g相同,指数用E表示
%c输出单个字符
%s输出字符串

在格式说明符中的%和字母之间,可以使用附加修饰符。

​ printf附加修饰符

附加修饰符意义
-结果左对齐,右边填空格
mm是一个整数,表示数据的最小宽度
.nn是一个整数。对实数,表示输出n为小数;对字符串,表示截取的字符个数
L或l表示按长整型输出
(2).转义字符

这些字符用于在程序中描述键盘上没有的字符或某个具有复合功能的控制字符,如\n或\t。

(3).普通字符

除格式说明符和转义字符之外的其他字符,这些字符原样输出。

如:

printf("a1 = %d",a);

printf("f1 = %f",f);

中的字母a1和f1就是普通字符,它可以根据需要来使用,不是必须项。

3.printf函数的几种常用输出形式

(1)d格式符

在输出时,按十进制整数数据的实际长度输出,正数的符号不输出。

#include
int main() {int a = 10;printf("%d\n", a);printf("%5d", a);return 0;
}

结果:
在这里插入图片描述

(2)c格式符

使用c格式符,用于输出一个字符。

#include
int main() {char ch = 'h';printf("%c\n", ch);printf("%5c", ch);return 0;
}

结果:
在这里插入图片描述

一个数值范围0~255范围内的整型数据,也可以使用%c格式符按字符形式输出,输出前,系统会将该整数作为ASCII码转换为相应的字符。

同样,一个字符型数据也可以用%d格式符以整数形式输出其对应的ASCII值。

如:

#include
int main() {int a = 66;char b = 'a';printf("%c\n", a);printf("%d", b);return 0;
}

结果:

在这里插入图片描述

(3)s格式符

使用s格式符,用于输出一个字符串。

#include
int main() {printf("%s\n", "Hello,world");printf("%8s", "Hello");return 0;
}

结果:

在这里插入图片描述

(4)f格式符

使用f格式符,用于以小数形式输出一个实数。

基本型%f

使用不带附加说明符的%f输出,不指定输出数据的长度,由系统根据数据的实际情况决定所占的列数。

#include
int main() {double a = 10;printf("%f", a / 3);return 0;
}

结果:

在这里插入图片描述

说明:

a是双精度型,a/3的结果也是双精度型,但是用基本型%f格式则只能输出6位小数。

%m.nf形式

可以指定数据宽度和小数位数。

m表示该浮点数整体所占的列数,包括整数部分、小数点和小数部分;

n表示该浮点数中小数部分所占的列数,

#include
int main() {double a = 10;printf("%10.3f", a / 3);return 0;
}

在这里插入图片描述

注意:

在用%f格式符输出时要注意数据本身能提供的有效数字,float类型的存储单元只能保证6位有效数字。double类型的数据可以保证15位有效数字。但是超过这个长度的单精度和双精度数据都不能保证其精确度。

%-m.nf形式

%-m.nf形式输出的含义与%m.nf相同,但是数据左对齐,右端补空格。

(5)e格式符

使用e格式符,用于以指数形式输出一个实数。

基本型%e

使用不带附加说明符的%e输出,不指定输出数据的长度和小数部分的位数。

#include
int main() {printf("%e", 123.456);return 0;
}

结果:

在这里插入图片描述

%m.ne形式

用%m.ne形式可以指定数据宽度和小数部分的位数。

#include
int main() {printf("%13.4e", 123.456);return 0;
}

在这里插入图片描述

%-m.ne形式

%-m.ne形式输出的含义与%m.ne相同,但是数据左对齐,右端补空格。

(6)转义字符

如果想输出字符”%“,在”格式控制“字符串中用连续两个%表示。

如果想输出字符”\“,在”格式控制“字符串中用连续两个\表示。

如果想输出字符单引号或双引号,在”格式控制“字符串中用’或\”表示。

#include
int main() {printf("\"Hello,world\"\n");printf("12%%");return 0;
}

结果:
在这里插入图片描述

四.用函数scanf按指定格式输入数据

1.scanf函数调用的一般形式

使用形式:

scanf(格式控制字符串,输入项地址表);

例如:

scanf("%d%f",&i,&f1);

其中,格式控制字符串由双引号作为两端界符,用于指定输入格式。输入项地址表由若干个地址组成,相邻两个输入项地址之间用逗号分开。

输入项地址表中的地址,可以是变量的地址,也可以是字符数组名或指针变量。

变量地址的表示方法为“&”变量名,其中“&”是取变量地址运算符。

2.scanf函数的格式控制字符串

scanf函数的格式控制字符串可以包含三种字符:格式说明符、空白符和非空白符。

(1)格式说明符:用来指定数据的输入格式。

(2)空白符:包括空格、制表符和换行符,通常作为相邻两个输入数据的缺省分隔符。

(3)非空白符:又称普通字符。在输入有效数据时,必须原样输入。

与printf函数的格式说明符相似,scanf的格式说明符也由“%”和格式字符组成。

​ scanf格式字符

格式字符意义
%d输入十进制形式的带符号整数
%u输入十进制形式的无符号整数
%o输入八进制形式的无符号整数
%x输入十六进制形式的无符号整数,使用小写字母a, b, c, d, e, f
%X与x相同,使用大写字母A, B, C, D, E, F
%f %e %E %g %G以小数或指数形式输入单精度实数
%c输入单个字符
%s输入字符串

​ scanf附加修饰符

附加修饰符意义
*跳过该输入项,不赋值
l输入长整形数据以及双精度实型数据
h输入短整型数据
mm是一个整数,指定输入的宽度
#include
int main() {int a, b, c;printf("请输入a,b,c的值:");scanf("%d %*d %d %d", &a, &b, &c);printf("s1 = %d,s2 = %d,s3 = %d", a + b, b + c, a + b + c);return 0;
}

结果:

在这里插入图片描述

3.使用scanf函数需要注意的几点

  1. scanf函数中要求输入项地址,应为地址格式,而不是变量名。例如:scanf("%d",a);是非法的,应为scanf("%d",&a);

  2. scanf函数中无精度控制。例如:scanf("%5.2f",&a);是不合法的,而scanf("%5f",&a);是合法的,其中5位输入数据宽度。

  3. 当输入的数据类型为多个数值型数据时,若相邻两个格式指示符之间没有分隔符(如逗号,冒号等),则相应的两个输入项之间可用的分隔符有三种:空格、制表符或换行符。

  4. 当输入的数据类型为字符型数据时,则认为所有输入的字符均为有效字符,特别地,空格和换行符等都作为有效字符被输入。

    例如:scanf("%c%c%c"&a,&b,&c);

    当输入为d e时,则把字符d赋值为a,变量b和c的值为空格。

  5. 在格式控制字符串中出现的普通字符,务必原样输入。

    例如:scanf("%d,%d,%d"&a,&b,&c);

    在运行时输入应为1,2,3

  6. 输入数据时,遇到以下情况时系统认为该数据输入结束:

    (1)遇到空格、制表符或换行符。

    (2)遇到非法输入。

    (3)遇到输入域宽度结束。例如:scanf("%3d",&a);输入数据只取三列。

相关内容

热门资讯

在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...