admin 管理员组

文章数量: 1184232


2024年3月6日发(作者:代码零九老婆)

[条件函数if的用法详解]实例详解printf函数用法

篇一 : 实例详解printf函数用法

实例详解printf函数用法

0.前言

使用printf打印时发现, 如果数据类型和打印使用的类型不一致,

结果就是混乱的.

这是因为printf本身并不进行数据的类型转换, 他只是把输入按照给定的数据格式输出, 如果二者不匹配,

那么由于不同数据类型的二进制存储方式不一样, 读出的数据就是错误的.

所以, 为求稳妥, 在使用printf, fprintf, scanf, fscanf在类型不一致时还是手动转化吧!

如:

printf;

printf;

输出为:

1.300000

-858993459

-92559653400000.000000

前一行正确, 但是后一行1.3与%d不匹配打印错误, 不仅如此还影响到后一个也打印错误.

对于读入fscanf, 用%f读入float型的值, 用%lf读入double型的值

C语言printf函数中的格式字符串的一般形式为:

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

其中方括号[]中的项为可选项.

各项的意义介绍如下:

1.类型:

----------------------------------------------------------

类型格式字符意义

----------------------------------------------------------

a/A浮点数、十六进制数字和p-计数法

c输出单个字符

d以十进制形式输出带符号整数

e/E以指数形式输出单、双精度实数

f以小数形式输出单、双精度实数

g/G以%f%e中较短的输出宽度输出单、双精度实数,%e格式

在指数小于-4或者大于等于精度时使用

i有符号十进制整数

o以八进制形式输出无符号整数

p指针

s输出字符串

x/X以十六进制形式输出无符号整数

u以十进制形式输出无符号整数

----------------------------------------------------------

//示例:

#include

#include

void main

{

system;

printf;

/*以十进制形式输出带符号整数*/

printf;

printf;

printf;

/*以八进制形式输出无符号整数*/

printf;

printf;

printf;

/*以十六进制形式输出无符号整数*/

printf;

printf;

printf;

/*以十进制形式输出无符号整数*/

printf;

printf;

printf;

/*以小数形式输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*以指数形式输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*以%f%e中较短的输出宽度输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*输出单个字符*/

printf;

printf;

printf;

/*输出字符串*/

printf;

printf;

printf;

system;

}

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

2.标志

----------------------------------------------------------

标志意义

----------------------------------------------------------

-结果左对齐, 右边填空格

+输出符号

空格输出值为正时冠以空格, 为负时冠以负号

#对c, s, d, u类无影响; 对o类, 在输出时加前缀0;

对x类在输出时加前缀0x或者0X; 对g, G类防止尾随0被

删除; 对于所有的浮点形式, #保证了即使不跟任何数字,

也打印一个小数点字符

0对于所有的数字格式, 用前导0填充字段宽度, 若出现-标

志或者指定了精度,忽略

----------------------------------------------------------

示例见3.

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

3.输出最小宽度

用十进制整数来表示输出的最少位数. 若实际位数多于定义的宽度,

则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0

//测试标志字符-、+、#、空格, 和 输出最小宽度

#include

#include

void main

{

system;

/*以十进制形式输出带符号整数*/

printf;

printf;

printf;

printf;

printf;

/*以八进制形式输出无符号整数*/

printf;

printf;

printf;

printf;

printf;

/*以十六进制形式输出无符号整数*/

printf;

printf;

printf;

printf;

printf;

/*以十进制形式输出无符号整数*/

printf;

printf;

printf;

printf;

printf;

/*以小数形式输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*以指数形式输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*以%f%e中较短的输出宽

度输出单、双精度实数*/

printf;

printf;

printf;

printf;

printf;

/*输出单个字符*/

printf;

printf;

printf;

printf;

printf;

/*输出字符串*/

printf;

printf;

printf;/* 不足补空格 */

printf;

printf;

system;

}

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

4.精度

精度格式符以”.”开头, 后跟十进制整数. 本项的意义是: 如果输出数字,

则表示小数的位数; 如果输出的是字符, 则表示输出字符的个数;

若实际位

数大于所定义的精度数, 则截去超过的部分.

//测试精度

#include

#include

void main

{

printf;

printf;

printf;

printf;

printf;

printf;

printf;

system;

}

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

5.长度

格式符为h,l两种, h表示按短整型量输出, l表示按长整型量输出.

--------------------------------------------------------------------------------------------------------------------

格式符示例说明

--------------------------------------------------------------------------------------------------------------------

h%hu, %hx, %6.4hd和整数转换说明符一起使用, 表示一个short int

或者unsigned short int类型的数值

hh%hhu, %hhx, %6.4hhd和整数转换说明符一起使用, 表示一个short int 或者unsigned short类型的数值

j%jd,%8jx和整数转换说明符一起使用, 表示一个int max_t或者uint

max_t类型的数值

l%ld,%8lu和整数转换说明符一起使用, 表示一个long int 或者unsigned long int类型的数值

ll%lld,%8llu和整数转换说明符一起使用, 表示一个long int 或者

unsigned long int类型的数值

L%Lf, %10.4Le和浮点转换说明符一起使用, 表示一个long double的值

t%td,%12ti和整数转换说明符一起使用, 表示一个ptrdiff_t值

z%zd,%12zx和整数转换说明符一起使用, 表示一个size_t值

--------------------------------------------------------------------------------------------------------------------

#include

#include

void main

{

int a = 15;

float b = 138.3576278f;

double c

= 35648256.3645687;

char d = „p‟;

printf;

printf;

printf;

printf;

system;

}

//输出:

//a = 15, 15, 17, f

//b = 138.357620, 138.357620, 138.3576, 1.383576e+002

//c = 35648256.364569, 35648256.364569, 35648256.3646

//d = p, p

//请按任意键继续. . .

#include

#include

void main

{

int a = 29;

float b = 1243.2341f;

double c = 24212345.24232;

char d = „h‟;

printf;

//下面的 %f 和 %lf 格式的输出相同, 说明 l 对 f 类型无影响

//%5.4lf 指定输出宽度为5, 精度为4

printf;

//输出双精度实数, %8.4lf 由于指定精度为4位故截去了超过4位的部分

printf;

//输出字符量d, 其中 %8c 指定输出宽度为8故在输出字符p之前补加7个空格

printf;

system;

}

//输出:

//a = 29, 29, 35, 1d

//b = 1243.234131, 1243.234131, 1243.2341,1.243234e+003

//c = 24212345.242320, 24212345.242320, 24212345.2423

//d = h, h

//请按任意键继续. . .

使用printf函数时还要注意一个问题, 那就是输出表列中的求值顺序. 不同的

编译系统不一定相同, 可以从左到右, 也可从右到左. VC是按从右

到左进行的

#include

#include

void main

{

int i = 0;

printf;

}

//输出:

//-1, -1, 0, -1, 0

//请按任意键继续. . .

----------------------------------------------------------

%[标志][输出最小宽度][.精度][长度]类型

----------------------------------------------------------

6.特殊用法 %*.*

printf;

前边的*定义的是总的宽度, 后边的定义的是输出的个数. 分别对应外面的参数m和n.

我想这种方法的好处是可以在语句之外对参数m和n赋值, 从而控制输出格式.

#include

#include

void main

{

float f = 12.34567f;

char s[] = “abcdefgh”;

printf;

printf;

}

//输出

//12.346

// abc

//请按任意键继续. . .

篇二 : if和unless的用法讲解

If 和 unless引导的条件状语从句

我们用if引导的条件状语从句来讨论可能的条件以及该条件成立时可能的结果。和 aa 后缀组合构成,第二个文件名由前缀和 ab

后缀组合构成,如此按字典顺序一直到 zz。后缀的字母数及因此的输出名称文件数可用 -a 标志增加。

您指定的 Prefix 不能长于 PATH_MAX - 2 个字节。

PATH_MAX 变量指定系统的最大路径名的长度。

如果您不指定输入文件或如果您指定 -文件名,那么 split 命令从标准输入读取文件。

标志

注:-b 和 -l 标志是互斥的。

-a SuffixLength 指定用于形成输出名称文件后缀部分的字母数。字母数确定可能的输出文件名组合数。缺省是两个字母。

-b Number 将文件分割成 Number 变量指定的字节数。将 k或 m乘数加到 Number 值的末尾使文件分别分割成 Number*1024

字节或 Number*1,048,576 字节的几个段。

-l LineCount 指定每个输出文件的行数。缺省值是 1000 行。

退出状态

该命令返回以下退出值:

0 命令成功运行。

>0 发生错误。

示例

代码如下:

1. 要将文件分割成 1000 行的段,请输入:

split book

此示例将 book 分割成 1000 行的段,命名为 xaa、 xab、 xac

等等。

2. 要将文件分割成 50 行的段并指定文件名前缀,

标签:matlab 杂谈 分类:matlab

matlab中,每个figure都有一个colormap,翻译过来就是色图。

COLORMAP 用MAP矩阵映射当前图形的色图。

COLORMAP 默认的设置是 JET.

MAP = COLORMAP 获得当前色图矩阵.

COLORMAP 应用色图到AX坐标对应的图形,而非当前图形。

MAP实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值,

[1 0 0] 代表红色,[0 1 0]代表绿色,[0 0 1]代表蓝色。系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。用户可以自定义自己的colormap,而且不一定是64维的。

[0 0 0] is black, [1 1 1] is white,

[1 0 0] is pure red, [.5 .5 .5] is gray, and

[127/255 1 212/255] is aquamarine.

那么颜色在fill或patch,SURFACE等函数中到底是如何显示的呢?本质上,是把具体的颜色变成colormap中的相应index,也就是行数。这个过程叫做换算映射:将指定的数值颜色向量C,映射到对应的颜色。颜色矩阵C的数值范围为[Cmin, Cmax], Cmin 和Cmax的数值或者为

min) max),也可以在CAXIS中设置。

在matlab中,图形窗的属性‟CdataMapping‘缺省设置值为‟scaled‟,也就是线性的映射。

Cmin对应的值映射到colormap的第一行,Cmax对应的值映射到colormap的最后一行。

映射过程如下:

首先,需要根据caxis取得Cmin和Cmax两个变量,画图时如果指定了数值颜色向量C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色。

根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。

也就是说,当制定了数值颜色向量C之后画图,图中颜色的使用范围会自动占满整个颜色范围!

实例:

clc;

clear all;

x=[0 1 1 0];

y=[0 0 1 1]; %定义四个点 [0 0] [1 0] [1 1] [0 1]

H_F=fill; %定义四个点的C值

row_cmap = 15; %定义色图矩阵的行数

color_map1=zeros; %定义色图矩阵

color_r = 0:1/:1;

color_g = 0:1/:1;

color_b = 0:1/:1;

color_map1 = color_r;

color_map1 = color_g;

colormap;

colorbar;

%本例中颜色从[0 0 0] 变化到[1 1 0]

%增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。


本文标签: 输出 颜色 形式 指定 整数