一、cin语句

cin语句是用来进行读入的,即把外界输入的数据储存在预先声明好的变量中。

cin语句的一般格式:

cin>>变量1>>变量2>>……>>变量n;

示例

观察下列程序,理解cin语句的使用。

#include <iostream>
using namespace std;

int main ()
{
    int a;
    char b;
    double c;
    cin >> a >> b >> c;
    cout << c << " " << b << " " << a << endl;
    return 0;
}

由程序可得,cin语句起到的作用是将键盘写入的数据储存进对应的变量中。

在读入之前,一定要记得提前声明好变量。

 

【例】a+b

 

bibitem引用格式_bibitem引用格式

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

View Code

 

二、程序的交互

有了cin语句,就可以进行基本的程序交互了。

我们设计的程序可以用来解决一类问题,根据不同的输入结果输出相应的计算结果。

 

【例】长方形面积与周长

 

bibitem引用格式_ci_04

【分析】

长方形面积=长×宽

长方形的周长=2×(长+宽)

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    cout << a * b << endl;
    cout << 2 * (a + b) << endl;
    return 0;
}

View Code

 

【例】变量交换

 

bibitem引用格式_bibitem引用格式_07

【分析】

如果直接a=b,b=a行不行?

不行,此时a和b全部都会变成最开始b的值。

所以需要一个新变量来储存a的值。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    int tmp = a;//tmp用来储存a的值
    a = b;
    b = tmp;
    cout << a << " " << b << endl;
    return 0;
}

View Code

【思考】

如果不新增变量,只用a和b这两个变量能达到目的吗?

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;

    a = a + b;
    b = a - b;
    a = a - b;

    cout << a << " " << b << endl;
    return 0;
}

View Code

 

【例】反向输出

 

bibitem引用格式_ci_12

【分析】

设三位数为n。

则个位=n%10;

十位=n/10%10;

百位=n/100。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << n % 10 << n / 10 % 10 << n / 100 << endl;
    return 0;
}

View Code

 

还有一个比较取巧的方法。

因为数字可以看作字符,所以在输入的时候我们可以设定输入的是3个字符,用3个字符变量分别储存,然后直接反向输出就行。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

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

View Code

 

二、格式化输入与输出

C++语言兼容C语言中的基本语句语法,而C语言可以使用scanf语句和printf语句来进行输入和输出。

scan是扫描、读入的意思,print是打印、输出的意思,后面的f是“格式”(format)的意思,所以它们也被称为格式化输入和格式化输出。

对于很多数据的输入输出,使用scanf语句和printf语句会比cin语句和cout语句更加高效。

除此之外,如果输出的结果需要满足特定的格式,比如保留若干位小数,那么用格式化输出会更加简单。

 

要想使用这两个语句,需要添加头文件<cstdio>

printf语句的基本格式为:

printf(“格式控制字符串”,输出列表)

现阶段常用的格式控制字符串有如下几个:

%d 输出int变量;

%lld 输出long long变量;

%c 输出char变量

%f 输出float变量;

%lf输出double变量。

小数输出默认是6位,如果想改变小数位数,那么在f或lf前加“.n”其中n表示小数位数。

如:%.3f表示输出结果保留3位小数。

示例

阅读下列程序并运行,理解printf语句的格式化输出效果。

#include <cstdio>
using namespace std;
int main()
{
    int a = 3;
    char b = '+';
    double c = 3.1415926;
    printf("%d %c %.2lf = %lf", a, b, c, a + c);
    return 0;
}

 

scanf语句的基本格式为:

scanf(“格式控制字符串”,&输入列表)

需要注意的是,在输入的变量之前要加上一个&,它的作用是取变量储存地址。

如果是多个量读入,那么在格式控制字符串部分需要加上空格。

注:scanf没有精度控制,scanf("%.2f", &a)是错误的表达。

示例

阅读下列程序并运行,理解scanf语句的输入效果。

#include <cstdio>
using namespace std;
int main()
{
    int a;
    char b;
    double c;
    scanf("%d %c %lf", &a, &b, &c);
    printf("%d %c %.2lf = %lf", a, b, c, a + c);
    return 0;
}

 

【例】计算总价

 

bibitem引用格式_ci_17

【参考代码】

 

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <cstdio>
using namespace std;

int main()
{
    double a, b;
    scanf(“%lf %lf”, &a, &b);
    printf("%.2lf", a * b);
    return 0;
}

View Code

 

 

 

如果需要输出多个数据,且数据要换行输出的话,那么需要在格式控制中添加\n

如:“%d\n%.3lf"分为3个部分,%d表示这里会有一个整型变量,\n表示要换行,%.3lf表示这里会有一个保留3位小数的浮点数。

 

【例】圆

【分析】

保留4位小数:%.4lf;

分两行输出:\n。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <cstdio>
using namespace std;

int main()
{
    double r;
    const double p = 3.14; 
    scanf("%lf", &r);
    printf("%.4lf\n%.4lf ", 2 * p * r, p * r * r);
    return 0;
}

View Code

 

两种输入输出方式的比较:

变量较少时使用cin和cout,写起来更简单;

变量较多,或者需要进行格式化处理时用scanf和printf,处理效果更好。

 


【课后测】赋值

bibitem引用格式_bibitem引用格式_22

 【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    b = a + c;
    a += 2;
    c *= b;
    a += c;
    cout << a << " " << b << " " << c << " ";
    return 0;
}

View Code

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <cstdio>
using namespace std;

int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    b = a + c;
    a += 2;
    c *= b;
    a += c;
    printf("%d %d %d", a, b, c);
    return 0;
}

View Code

 


【练】三个整数的和

 

bibitem引用格式_ci_27

【分析】

需要注意整数的范围,int可能会越界,需要使用long long。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    long long a, b, c;
    cin >> a >> b >> c;
    cout << a + b + c << endl;
    return 0;
}

View Code

 

【练】翻转六位数

bibitem引用格式_bibitem引用格式_30

【分析】

设六位数为n,则前3位为n/1000,后3位为n%1000。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << n % 1000 << n / 1000;
    return 0;
}

View Code

 

【练】公交车运行时间

 

bibitem引用格式_ci_33

【分析】

以0:00作为起点,把时间都化成分钟,相减,算出两个时刻之间相差的分钟,再把这个时间化成小时和分钟就行。

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d, time;//time用来储存时间
    cin >> a >> b >> c >> d;
    time = c * 60 + d - (a * 60 + b);
    cout << time / 60 << " " << time % 60 << endl;
    return 0;
}

View Code

 

【练】均分饮料

 

bibitem引用格式_bibitem引用格式_36

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <cstdio>
using namespace std;

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

View Code

 


 【选】鸡兔同笼

 

bibitem引用格式_Code_39

【分析】

先通过具体的例子入手:如果有35个头,94只脚。

那么鸡和兔子共有35只,假设全部都是鸡,那么脚的总数应该是35×2=70。

将1只鸡换成1只兔子,那么脚的数量会增加4-2=2。

而94-70=24,要增加24只脚,24÷2=12,则要把12只鸡换成兔子。

即有12只兔子,35-12=23只鸡。

归纳出统一的算式:如果有a个头,b只脚。

则兔子的数量为:(b-a*2)÷2

而鸡的数量为:a-兔子的数量

【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d;
    //a和b分别表示头和脚的数量
    //c和d分别表示兔子和鸡的数量
    cin >> a >> b;
    c = (b - a * 2) / 2;
    d = a - c;
    cout << d << " " << c <<endl;
    return 0;
}

View Code

 

【选】输出算式

bibitem引用格式_Code_42

 

bibitem引用格式_bibitem引用格式_43

【分析】

有特殊格式要求的输出用printf会更简便。

a和b都是整数,要使得结果是小数,得先×1.0变成小数才行。

 【参考代码】

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    printf("%d / %d = %d ... %d\n", a, b, a / b, a % b);
    printf("%d / %d = %.8lf", a, b, a * 1.0 /b);
    return 0;
}

View Code

 

【选】分糖果

bibitem引用格式_Code_46

【分析】

使用五个变量a,b,c,d,e分表表示五个人的糖果数,然后按照题目要求依次操作即可。

【参考代码】

 

bibitem引用格式_#include_02

bibitem引用格式_ci_03

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int a, b, c, d, e;
    cin >> a >> b >> c >> d >> e;
    a /= 3; b += a; e += a;
    b /= 3; c += b; a += b;
    c /= 3; d += c; b += c;
    d /= 3; e += d; c += d;
    e /= 3; a += e; d += e;
    cout << a << " " << b << " " << c << " " << d << " " << e;
    return 0;
}

View Code