实型变量与格式化输入输出(实型变量与格式化输入输出)

本文介绍了在C++中,当数据量大时cin和cout效率低下的问题,推荐使用scanf和printf进行格式化输入输出,包括格式控制符的使用、实型变量处理、域宽控制等技巧,以及通过示例展示了如何计算松果总重量和平均重量的程序改进。
摘要由CSDN通过智能技术生成

我们学习过的cin、cout,一般情况下,用来输入、输出数据已经足够了。但这种方法电脑的运行效率比较低,尤其是数据量达到10万个以上时会非常明显,很容易就会超时。为了能够更快输入、输出较多的数据,需要使用格式化输入(scanf)和输出函数(printf)。

格式化输入(scanf)和输出函数(printf)的格式如下:

scanf(格式控制符,地址列表)

printf(格式控制符,输出列表)

例如:输入一个整数并将这个数输出。

                  scanf("%d",&a);

            printf("%d",a);

说明:

(1)使用scanf 和printf,需要调用头文件<cstdio>。

(2)“%d”叫做格式控制符,格式控制符代表了输入或输出的“格式说明”,%d表示输入的数据是整数。scanf和printf的使用方法是一样的,只不过前者比后者在变量前多了个“&”号,这些变量跟前面的格式控制符是一一顺序对应的。

一些常用格式控制符说明见下表:

程序改进:

#include<bits/stdc++.h>

using namespace std;

int n,r,a,s;

int main()

{

    cin>>n>>r;

    for (int i=1; i<=n; i++)

    {

       scanf("%d",&a);//cin>>a;

       if (a<=r) s++;

    }

          

    cout<<s;

    return 0;

}

第1题     实型变量

小松鼠非常喜欢吃松果,这天它摘了n个松果回家,然后称出每个松果的重量。现在它想知道这些松果的总重量和平均重量,聪明的你能帮帮它吗?

【输入格式】

第一行输入一个整数n(n≤100000),表示松果的个数;

第二行输入n个松果的各自的重量(有可能是小数)。

【输出格式】

第一行是总重量;

第二行是平均重量,两数均保留两位小数。

【输入样例】

5

98 98.5 100 99.8 99

【输出样例】

495.30

99.06

参考程序:

#include<cstdio>

using namespace std;

int n; double a,s=0,pj;

int main()

{

    scanf("%d",&n);

    for (int i=0; i<n; i++)

    {

     scanf("%lf",&a);

     s=s+a;

}

pj=s/n;

printf("%.2lf\n%.2lf",s,pj);

return 0;

}


 

说明:

1.通常用到小数的情况,我们会将这类数据定义为实数型变量,通常有float和double。例如定义实数变量a:float a;或者double a;

2.数据类型float是单精度浮点数,double叫做双精度浮点数,比float更加精确,它对应的格式控制符是%lf,注意是字母l,而不是数字1!

  3.%.2lf表示保留2位小数输出,\n表示换行。

域宽

在c++里我们可以通过格式控制符去控制域宽,域宽是指数据的宽度,如整数427的宽度是3。如果指定的域宽大于数据的原宽度,则程序会在数据前面补充相应的空格,比原宽度小或者不指定的则按原宽度输出。

例如427的宽度是3,而指定域宽是5,则输出的就会自动前面补充2个空格:□□427(用□表示空格);指定域宽是2,则按原宽输出427。

格式:printf("%5d",a)    (指定域宽是5,a是整数)

          printf("%6.3lf",b) (指定域宽是6,b保留3位小数)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值