【我好惨】P1957口算练习题

P1957口算练习题

    • 学习点
      • 字符串遇空格、换行输出。
      • OJ(洛谷) 输入和输出
      • C++中 字符串和数字之间的转换
      • 获取数字长度的两种方法
    • 原题
    • 代码

学习点

  • 字符串遇空格、换行输出。

#include
using namespace std;

int main()
{
    string n;
    cin>>n;
    cout<<n;
}

输入 1 空格 2
输出 1

【我好惨】P1957口算练习题_第1张图片

  • OJ(洛谷) 输入和输出

    不一定非要批量输入、批量输出。
    题目中要求:
    【我好惨】P1957口算练习题_第2张图片
    但实际输入输出可为;
    【我好惨】P1957口算练习题_第3张图片

  • C++中 字符串和数字之间的转换

#include
#include //必须包含 sstream 头文件

string str;int num;
stringstream ss;

//数字——>字符串
cin>>num;
ss<<num; ss>>str;

//字符串——>数字
cin>>str;
ss<<str; ss>>num;
  • 获取数字长度的两种方法

1.利用while循环取整计数

int length(int num)
{
    int len=0;
    if(num==0) return 1;
    if(num>0){
        while(num!=0){
            num/=10;
            ++len;
        }
    }
    else{
        len=1;
        num=-num;
        while(num!=0){
            num/=10;
            ++len;
        }
    }
    return len;
}

2.将数字转为字符串,利用字符串的 length() 返回长度。

int length(int num)
{
    string str;
    stringstream ss;
    ss<<num;ss>>str;
    return str.length();
}

原题

P1957 口算练习题

代码


#include
#include
using namespace std;

int length(int num)
{
    int len=0;
    if(num==0) return 1;
    if(num>0){
        while(num!=0){
            num/=10;
            ++len;
        }
    }
    else{
        len=1;
        num=-num;
        while(num!=0){
            num/=10;
            ++len;
        }
    }
    return len;
}

int main()
{

    int n,x,y;
    char ch;
    stringstream ss;
    cin>>n;
    for(int i=0;i<n;i++){
        string c;
        cin>>c;
        switch (c[0])
        {
        case 'a':
            ch='a';
            cin>>x>>y;
            cout<<x<<'+'<<y<<'='<<(x+y)<<endl;
            cout<<length(x)+length(y)+length(x+y)+2<<endl;
            break;
        case 'b':
            ch='b';
            cin>>x>>y;
            cout<<x<<'-'<<y<<'='<<(x-y)<<endl;
            cout<<length(x)+length(y)+length(x-y)+2<<endl;
            break;
        case 'c':
            ch='c';
            cin>>x>>y;
            cout<<x<<'*'<<y<<'='<<(x*y)<<endl;
            cout<<length(x)+length(y)+length(x*y)+2<<endl;
            break;
        default:
            ss<<c;ss>>x;ss.clear(); //用完后必须clear()
            cin>>y;
            switch (ch)
            {
            case 'a':
                cout<<x<<'+'<<y<<'='<<(x+y)<<endl;
                cout<<length(x)+length(y)+length(x+y)+2<<endl;
                break;
            case 'b':
                cout<<x<<'-'<<y<<'='<<(x-y)<<endl;
                cout<<length(x)+length(y)+length(x-y)+2<<endl;
                break;
            case 'c':
                cout<<x<<'*'<<y<<'='<<(x*y)<<endl;
                cout<<length(x)+length(y)+length(x*y)+2<<endl;
                break;
            }
            break;
        }

    }
	return 0;
}

你可能感兴趣的:(刷题)