【C++语法】printf()和scanf()的使用

引言

众所周知,在C++中有两个几乎是每个程序都会使用的函数:cout和cin,但是它们并不能满足我们的所有需求,时间复杂度也比较高,所以我们就需要两个更好的函数:scanf()和printf()。 


目录

printf()的使用

scanf()的使用

例题:成绩


printf()的使用

cout和printf()的作用基本一样,只是cout需要用流输出运算符,而printf()只需要括号里的第一个参数,比如输出"Hello world":

//cout写法
cout << "Hello world";

//printf()写法
printf("Hello world");

接下来,我们讲讲printf()的用法:printf()函数的主要用法是这样的:printf(content,var);(别忘记加分号哦)其中,content参数为必选参数,表示输出的内容;而var参数为可选参数,传进需要带入进格式化占位符的变量。同时,printf()函数还能使用转义字符输出特殊字符(想了解转义字符的可以点击蓝色文字查看详细内容)。

而格式化占位符主要有以下7种:%p,%s,%f,%d,%c,%lf,%ld。它们分别表示指针地址,字符串,单精度浮点数,整型,字符,双精度浮点数和长整型(注意区分单精度浮点数类型和双精度浮点数类型、整型和长整型)。同时,部分格式化占位符还可以添加修饰符,例如:

  • %(n)d:输出宽度为n的整数;
  • %-(n)d:输出宽度为n的左对齐整数;
  • %.(n)f:输出保留n位小数的浮点数。

需要注意的是,该函数被封装在cstdio库中(bits/stdc++.h万能头中有),不添加#include<cstdio>会导致错误。

以下为cout和printf()函数的区别:

coutprintf()
头文件iostreamcstdio
用法cout << content;printf(content,var);
作用普通输出格式化输出
时间复杂度(参考资料

scanf()的使用

有输出就大概率有输入,而cin和scanf()的主要作用就是输入。与printf()的学习一样,我们先从下面这段获取输入的代码说起:

//cin写法
cin >> a;

//scanf()写法
scanf("%d",&a);

我们不难发现,scanf()的用法如下:scanf(content,&var);其中,content和var均为必选参数。而content参数意为输入进的格式,var参数意为传入的参数(多个变量需要用逗号隔开)。例如对加法算式进行运算,就可以通过scanf("%f %f",&a,&b);代码输入进两个浮点数a和b。

在content参数中,也需要格式化占位符,表示输入内容的该部分传入变量,而其余未传入内容则不做特殊处理;在var参数中,可以有多个传入进的变量,而每个变量前都需要有取地址符(即&号),否则会传入错误。

该函数也被封装在cstdio库中,在使用printf()和scanf()函数前需要写#include<cstdio>或#include<bits/stdc++.h>。

以下为cin和scanf()函数的区别:

cinscanf()
头文件iostreamcstdio
用法cin >> content;scanf(content,var);
作用普通输入格式化输入
时间复杂度(参考资料

例题:成绩

思路                                                                                                                                                                   这道题很简单,只需要输入进三个变量(这里定义成a,b,c),并输出a*0.2+b*0.3+c*0.5的值即可(以整数类型输出,但是直接%d结果错误,因此我们使用printf("%.0f",a*0.2+b*0.3+c*0.5);输出)。(建议使用printf()和scanf()函数编写)

题解

#include<bits/stdc++.h> //也可以写成#include<cstdio>
using namespace std;
int main(){
    int a,b,c; //定义a,b,c三个变量
    scanf("%d %d %d",&a,&b,&c); //输入进a,b,c
    printf("%.0f",a * 0.2 + b * 0.3 + c * 0.5); //printf()格式化输出
    return 0;
}
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值