ITPub博客

首页 > Linux操作系统 > Linux操作系统 > C程序设计学习笔记

C程序设计学习笔记

原创 Linux操作系统 作者:YYCatNJU 时间:2010-06-09 19:18:57 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE格式输出与输入

一、printf函数

(1)一般形式

printf(格式控制,输出序列)

如果把格式控制和输出序列看做函数的参数,则一般形式为

printf(参数1,参数2,…,参数n)

如 printf(“%d,%f”,a,b)

(2)格式控制

A.格式控制包括两部分:格式说明(总是以%开头)、普通字符(按原样输出的字符和符号)

如 printf(“a=%d,b=%f”,a,b)其中

“”内是格式控制,””外是输出序列

%d和%f是格式说明,分别表示以十进制整型输出和以十进制浮点型输出

a=和b=以及,是普通字符,按原样输出

a和b是变量,表示输出变量a和b的值

B.格式字符

 = 1 \* GB3 ①d格式符

%d表示按十进制整数的实际长度输出

%md表示按十进制整数的指定长度m输出,若实际长度小于m,则补足(前面补0或留空);若大于m则按实际输出

如

#include

void main()

{

 Int a,b;

 a=123;b=456;

 printf(“%2d ,%4d”,a,b)

结果为 123 ,_456

%ld表示按十进制的长整型输出

#include

void mian()

{

 long a,b,sum;

 a=12345;b=40000;

 sum=a+b;

 printf(“%ld”,sum)

结果为52345(正确)

若printf(“%d”,sum)

结果为-13191(错误)

原因在于sum的值超出基本整型范围(-32768,32768)

 = 2 \* GB3 ②o格式符

%o表示以八进制整数实际长度输出

如

#include

void main()

{

 int a,b,sum;

 a=10;b=10;

 sum=a+b;

 printf(“%o”,sum)

}

结果为24(即(20)10)

%mo表示以八进制整数指定长度输出

%lo表示以八进制整数指定长度输出

特殊之处:八进制输出的是无符号数据,有符号的也当做数值输出

 = 3 \* GB3 ③x格式符

%x表示以十六进制整数输出

#include

void main()

{

 int a,b,sum;

 a=10;b=10;

 sum=a+b;

 printf(“%x”,sum)

}

结果为14(即(20)10)

%mx表示以十六进制指定长度输出

%lm表示以十六进制长整型输出

特殊之处:十六进制输出的是无符号数据,有符号的也当做数值输出

 = 4 \* GB3 ④u格式符

%u表示以十进制整数形式输出无符号型数据

 = 5 \* GB3 ⑤c格式符

%c用于输出单个字符,其作用于putchar等价

 = 6 \* GB3 ⑥s格式符

%s表示以字符串形式输出

如

#include

void main()

{

 printf(“%s %s %s”,”I”,”LOVE”,”CHINA”);

}

输出结果为I LOVE CHINA

特别注意:输出序列必须要用双引号括起来,因为只有被双引号括起来才被视为字符串

%ms表示以指定长度输出字符串数据,若实际长度大于m则按实际长度输出,若小于则左补空

%-ms表示以指定长度输出字符串数据,若实际长度大于m则按实际长度输出,若小于则右补空

%m.ns

%-m.ns

 = 7 \* GB3 ⑦f格式符

%f

%m.nf

%-m.nf

 = 8 \* GB3 ⑧e格式符

%e

%m.ne

%-m.ne

(3)输出序列

输出序列可以是数值、字符、表达式等

一、scanf函数

(1)       一般形式

scanf(格式控制,地址序列)

 = 1 \* GB3 ①格式控制

格式控制包括格式说明和普通字符,格式说明与printf函数相似,普通字符按原样输入

如

#include

Void main()

{

 Int a,b;

Scanf(“%d,%d”,&a,&b);

Printf(“\na=%d,b=%d”,a,b);

}

输入“1000,10000”

结果在次行显示a=1000,b=10000

 = 2 \* GB3 ②地址序列

地址序列必须以&开头,不能只输入变量,它表示按其在内存中的地址将数值存入

(2)       使用scanf函数的注意事项

 = 1 \* GB3 ①若果指定输入数据的列宽,则结果会自动截断不空格的数据序列,如

#include

Void mian()

{

 Int a,b;

 Scanf(“%2d%3d”,&a,&b);

 Printf(“\na=%d,b=%d”,a,b);

}

输入“1234567”

结果在次行显示a=12,b=345

 = 2 \* GB3 ②不能把地址序列写成变量,如

#include

Void mian()

{

 Int a,b;

 Scanf(“%2d%3d”,a,b);

 Printf(“\na=%d,b=%d”,a,b);

}

是错误的

 = 3 \* GB3 ③格式控制中的普通字符(包括字符和标点符号)也要按原样输入,否则结果不符,如

#include

Void mian()

{

 Int a,b;

 Scanf(“a=%d,b=%d”,&a,&b);

 Printf(“\na=%d,b=%d”,a,b);

}

输入“a=123,b=456”

结果在次行显示a=123,b=456(正确)

输入“123456”

结果在次行显示a=0,b=474(错误)

 = 4 \* GB3 ④若指定输入数据的类型,则结果会自动截断不空格的数字序列,如

#include

Void mian()

{

 Int a,c;char b;

 Scanf(“%d%c%d”,&a,&b,&c);

 Printf(“\na=%d,b=%c,c=%d”,a,b,c);

}

输入“123a456”

结果在次行显示a=123,b=a,c=456

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24055160/viewspace-664816/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-06-07

  • 博文量
    4
  • 访问量
    2992