2.2 变量的输入和输出

例 2-5

苹果采购(洛谷P5703)。现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?

输入格式

输入两个不超过 109 正整数,分别表示每人分到的数量和同学的人数。

输出格式

一个整数,表示答案。保证输入和答案都在int范围内的非负整数。

输入输出样例

输入 输出
5 3 15

解答

建模分析

已经知道人数和苹果,题目就可以转化成简单的乘法运算了。

#include<iostream>
using namespace std;

int main()
{
    int t,n;
    cin>>t>>n;
    cout<<t*n<<endl;
    return 0;
}

例 2-6

输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。

建模分析

char变量类型本质是一个 0 ~ 127 的整数。大小写转换只需要减去大小写字母之间的差值即可。

解答

#include<iostream>
using namespace std;

int main()
{
    char x;
    cin>>x;
    x=x-('a'-'A'); 
    cout<<x;
    return 0;
}

注意: 小写字母的值比大写字母大。

例 2-7

输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如 123.4 ,要求把这个数字翻转过来,变成 4.321 并输出。

建模分析

首先格式十分规范,保证了是三位数加一位小数。那么就可以通过取余来获得各位数字。小数点后的数字可以通过升位来解决。

得到各位数字后,反向输出即可。

解答

#include<iostream>
using namespace std;

float a;
int bb,q,b,s,g;
    
int main()
{
    cin>>a;
    a=a*10;
    bb=a;
    q=bb/1000;
    b=bb%1000/100;
    s=bb%100/10;
    g=bb%10;
    cout<<g<<"."<<s<<b<<q;
    
    return 0;
}

另外一个解法就是获取输入的时候不把输入当作数字来获取,直接当作一个一个的字符来获取。

而且输入位数固定,那就更简单了。

#include<iostream>
using namespace std;

int main()
{
    char a,b,c,dot,d;
    cin>>a>>b>>c>>dot>>d;
    cout<<d<<dot<<c<<b<<a<<endl;
    return 0;
}

C语言版

#include<cstdio>
using namespace std;

int main()
{
    char a,b,c,d;
    scanf("%c%c%c.%c",&a,&b,&c,&d);
    printf("%c.%c%c%c",d,c,b,a);
    return 0;
}

例 2-8

现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。输入一个实数 t 和一个整数 n,使用空格隔开。输出两个数字表示答案,使用换行隔开。

0≤t≤10000 且不超过3位小数,1≤n≤1000

建模分析

因为知道总数 t 和 n 个同学,可以将题目需求转化成 除法 运算。

解答

#include<iostream>
#include <iomanip>

using namespace std;

float n;
int t;
int main()
{
    cin>>n>>t;
    n=n/(float)t;
    t=t*2;
    cout<<setprecision(3)<<fixed<<n<<endl;
    cout<<t;
    
    return 0;
}

C语言版

#include<iostream>
using namespace std;

int main()
{
    double t;
    int n;
    scanf("%lf%d",&t,&n);
    printf("%.3f\n%d",t/n,n*2);
    return 0;
}

表 2-3

常见输入输出占位符

占位符 说明
%d 一个十进制整数,一般用于int类型。
%nd (n是正整数) 输出一个整数,如果不足 n 位,前面用空格补齐直到够 n 位
%I64d (Windows)
%lld (Linux)
一个十进制整数,一般用于 long long 类型。要非常注意在不同的操作系统下,这个占位符是不一样的
%f 读入一个 float 类型的带小数点的浮点数,或者输出 float 或者 double 类型的浮点数,默认 6 位小数
%lf 读入doulbe类型的浮点数
%.nf (n是正整数) 用于输出一个固定n位小数的浮点数
%0nd (n是正整数) 输出一个整数,如果不足 n 位,前面用 0 补齐直到够 n 位
%c 一个char类型的字符
%s 一个字符串
posted @ 2021-04-13 14:46  CodeSpark  阅读(736)  评论(0)    收藏  举报