C语言数据类型和变量(下)

【投稿赢 iPhone 17】「我的第一个开源项目」故事征集:用代码换C位出道! 10w+人浏览 1.8k人参与

9、printf函数

9.1基本用法

可以通过该网址:https://legacy.cplusplus.com/   ​​​​

来查看printf函数的用法

printf()函数的作用就是将参数文本输出到屏幕中。printf中的f代表format(格式化),表示可以定制输出文本的格式。

示例:

//prinf函数
#include<stdio.h>
int main()
{
	printf("hello c world");
	return 0;
}

结果:

printf()函数不会自动在行尾添加换行符,运行结束后,光标会停在输出结束的地方,不会自动换行。

我们知道换行\n可以达到换行的目的,那么我们就可以在文本的末尾添加换行符\n

示例:

对于printf函数而言,该函数是库函数,使用printf函数时,要包含头文件:stdio.h

9.2占位符

printf()可以在输出文本中指定占位符

所谓的占位符就是在这个位置可以用其他值代入

例如:

在上述的示例中,i  have  %d   books 就是输出文本,里面的%d就是占位符,表示这个位置要用其他值来替换。占位符的第一个字符一律用

百分号%,第二个字符表示占位符的类型,%d表示这个代入的值必须是一个整数。

printf()的第二个参数就是替换占位符的值,在上述的示例中,3替换了%d,执行后的结果是: i  have    3  books.

举例:如果占位符要表示的事字符串类型的数据,那么占位符就是%s

示例:

当然输出文本也可以有多个占位符:

第一个%d对应5,第二个%d对应4,第三个%d对应9;

在printf()中的都是printf的参数,从上述示例中,我们可以得出如下结论:

printf函数参数与占位符是一 一对应关系,如果有n个占位符,printf函数的参数就有n+1个。

9.3占位符列举

printf函数的占位符有许多类型,与C语言的数据类型相对应。

比如:

int  类型的整数的十进制形式打印:%d

int  类型的整数的八进制形式打印:%o

int  类型的整数的十六进制形式打印:%x

short int  类型的整数的十进制形式打印:%hd

short int  类型的整数的八进制形式打印:%ho

short int  类型的整数的十l六进制形式打印:%hx

long  int  类型的整数的十进制形式打印:%ld

long  int  类型的整数的八进制形式打印:%lo

long  int  类型的整数的十六进制形式打印:%lx

%c用于打印字符,%s用于打印字符串  %f用于打印float类型的数据

%lf用于打印double类型的数据    %p用于打印地址

9.4输出格式

(1)限定宽度

printf()允许限定占位符的最小宽度

示例:

上面示例中,%6d表示占位符的宽度至少是6位,如果不满6位,则会在该值的前面添加空格,直至满6位

但是如果超过了6位,则会直接打印该数据(一定不要认为超过6位的数据就不打印了)

示例:

扩展:

%nd(n是正整数)输出的值默认是右对齐,即输出的数据如果不满n位会在该数据的前面添加空格;如果希望改成左对齐(即:输出的数据如果不满n位会在该数据的后面添加空格),可以在占位符%的后面插入一个“-”号

示例:

对于小数,这个限定符会限制所有数字的最小显示宽度

示例:

分析:%12f表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位,所以123.45输出结果的头部会添加2个空格(注意:小数点也占一位)

(2)总是显示正负号

默认情况下,printf()不对整数显示+号,只对负数显示-号。如果想让正数也输出+号,可以在占位符的%后面加一个+

示例:

(3)限定小数位数

输出小数时,有时希望只需要输出小数点后3位,那么此时占位符可以写成:%.3f

示例:

注意:在用%.nf(n表示正整数)时,会有四舍五入的效果

示例:

对于小数来说,限定小数位数可以和限定宽度结合使用:

示例:

上述示例中,小数占3位,小数点占1位,整数部分占一位,总共有5位,不足6位,末尾是右对齐,所以在该数的前面加一个空格

扩展:

在限定宽度和限定小数结合使用时,可以用*分别来代替宽度和小数的位数,而两个*代表的数据可以通过printf函数参数来传入,然后代替

例如:

(4)输出部分字符串

%s占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以用%.[m]s指定输出的长度,其中[m]代表一个数字,表示所要输出的长度。

示例:

10、scanf函数

printf函数用于将变量输出到屏幕上,而scanf函数是在屏幕上输入变量的值

示例:

10.1基本用法

scanf()函数用于读取用户在键盘上输入的信息

scanf()函数具体执行过程:程序运行到这个语句时,会停下来,等待用户从键盘上输入信息,用户输入数据,按下回车键后,scanf()函数就会处理用户在键盘上输入的信息,将用户输入的信息存入变量中。

注意:使用scanf函数时,要包含头文件:stdio.h

scanf()的语法跟printf()函数类似

int i=0;//初始化

scanf("%d",&i);

scanf函数的第一个参数是一个格式字符串,里面会放置占位符(与printf()的占位符基本一致),告诉编译器如何解读用户的输入,需要提取的数据是什么类型。这是因为C语言的数据都是有类型的,scanf()必须提前知道用户输入的数据类型,这样才能处理用户从键盘上输入的数据。

它的其余参数就是存放用户输入的变量,格式字符串里面有多少个占位符,就有多少个变量。

在上面的示例中,scanf()的第一个参数%d表示用户输入的应该是一个整数。%d就是一个占位符,%就是占位符的标志,d表示整数。第二个参数&i表示:将用户从键盘输入的整数存入变量i中。

注意:scanf函数中,变量前面必须加上&运算符(指针变量除外),因为scanf函数传递的不是值,而是地址,即将变量i的地址指向用户输入的值。

如果这里的变量是指针变量(比如:字符串变量),那就不用加&操作符

如下是一次将键盘输入和读入多个变量的例子

//scanf函数一次读入多个变量
#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	float x = 0.0f;
	float y = 0.0f;
	scanf("%d%d%f%f", &i, &j, &x, &y);
	printf("i=%d\n", i);
	printf("j=%d\n", j);
	printf("x=%f\n", x);
	printf("y=%f\n", y);
	return 0;
}

结果:

上述代码中,格式字符串%d%d%f%f,表示用户输入的前两个值是整数,后两个值是浮点数。我在上述代码执行过程中输入了:1 2 2.3 2.6

那么这四个值依次放入i,j,x,y四个变量中。

一定要注意:scanf函数在处理数值占位符(即:数字型数据,比如:整型,浮点数)时,会自动过滤掉空白字符,包括:空格,制表符,换行符等。

所以,用户输入的数据之间,有一个或多个空格不影响scanf函数读取数据。另外,用户使用回车键,将输入分成几行进行输入(我用的就是这种方法),也不影响解读。

10.2scanf的返回值

scanf()的返回值是一个整数,表示成功读取的变量个数(什么叫成功读取呢?就是输入的数据要跟占位符一致)

如果scanf没有读取任何项,或者匹配失败,则返回0;如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF(本质上是-1)

示例:

10.3占位符

scanf函数常用的占位符与printf函数是占位符基本一致

%c:字符

%d:整型

%f:float型浮点数

%lf:double型浮点数

%Lf:long double  类型浮点数

%s:字符串

上述所有占位符中,除了%c以外,都会自动忽略起首的空白字符。%c不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。

如果要强制跳过字符前的空白字符,可以写成  char  ch;scanf("  %c",&ch),即:%c前加上一个空格,表示跳过0个或多个空白字符。

在scanf函数中的%s占位符,它不能简单地等同于字符串。它的原则是:从当前第一个非空白字符开始读起,直到遇到空白字符(即:空格,换行符,制表符等)为止

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现扩展应用。; 适合人群:具备电力系统基础知识Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值