洛谷(学习c++字符串)写了一整天的王老师的任务
洛谷(学习c++字符串)写了一整天的王老师的任务
爱学习的懒小书

洛谷(学习c++字符串)写了一整天的王老师的任务

lx5555iou
11月16日发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年11月16日,已超过45天没有更新,若内容或图片失效,请留言反馈。
#include<bits/stdc++.h>
using namespace std;
int i,q[1000],z[1000],sum[1000],changdu=0;//i是循环总数,q,z用于存储当前循环的两个数字,sum是两个数通过运算得到的结果,changdu用于计算q+z=sum这个算式的长度
char x[1000],y[1000];//x用于存储当前的运算符,y是用于判断第一个输出结果是运算符还是数字
string string1[1000],string2[1000],string3[1000];//因为c++中数字没有长度的概念,所以需要用三个字符串分别存储数组长度,以便计算算式的长度“changdu”
int main(void)//多数情况下可以省略void,只是我写习惯了$[阿鲁表情]::(高兴){
    cin>>i;
    if(i<=0||i>50)return 0;//根据题意,限制i的范围
    for(int j=0;j<i;j++)//第一个循环用于输入数字,不过我现在相通了,洛谷的题不需要把输入和输出分成两个循环写,因为你输入和输出并不在同一个输入框,所以一边输入一边输出也可以正常执行{
        cin>>y;//用y来判断是否满足算式符号abc或者数字
        if(y[0]>='a'&&y[0]<='z')//如果输入的是运算符就给x赋值{
            x[j]=y[0];
            cin>>q[j]>>z[j];
        }
        else//如果输入的是数字就给q赋值,并让这次的运算符与上一次保持一致{
        sscanf(y,"%d",&q[j]);
        x[j]=x[j-1]; 
        cin>>z[j]; 
        }
        if(x[j]=='a')//这个sum[j]完全可以用q[j]+z[j]代替
          //例如printf("%d+%d=%d",q[j]+z[j],q[j]+z[j])$[阿鲁表情]::(赞一个);{    
            sum[j]=q[j]+z[j];
        }
        else if(x[j]=='b')//减法{
            sum[j]=q[j]-z[j];
        }
        else if(x[j]=='c')//乘法{
             sum[j]=q[j]*z[j];
        }
        else sum[j]=0;
        string1[j]=to_string(q[j]);//to_string可以将括号内的数字类型转换成字符串类型
        string2[j]=to_string(z[j]);
        string3[j]=to_string(sum[j]);
    }  
    for(int c=0;c<i;c++){
      //计算changdu
    changdu=2+string1[c].size()+string2[c].size()+string3[c].size(); 
    
    if(x[c]=='a'){
        
        printf("%d+%d=%d\n",q[c],z[c],sum[c]);
        cout<<changdu<<endl;
    }
    if(x[c]=='b'){
        printf("%d-%d=%d\n",q[c],z[c],sum[c]);
        cout<<changdu<<endl;
    }
    if(x[c]=='c'){
        printf("%d*%d=%d\n",q[c],z[c],sum[c]);
        cout<<changdu<<endl;
    }
    changdu=0;
    }
    return 0;
}

只能说我太菜了,入门题写了这么久,不过通过这题学到了一堆东西。$[泡泡表情]::(惊哭)
按照输入输出同时进行的逻辑,存储q,z是完全没有必要的,并且printf支持直接计算结果sum,所以没有必要多定义一个数组sum来存储运行结果。如果你有更简单的方法,欢迎留言分享。$[泡泡表情]::(吐舌)

《口算练习题》题目链接:
https://www.luogu.com.cn/problem/P1957

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 共6条
OωO
取消
  1. 头像
    lx5555iou 作者
     · 
    回复

    $[经典表情]::(奋斗)继续练!

  2. 头像
    酷侠
     · 
    回复

    不是学C吗?$[泡泡表情]::(疑问)

    1. 头像
      lx5555iou 作者
       · 
      回复

      @酷侠

      我现阶段学的c语言和c++没多大区别,只是写法上略有不同,完全可以同步学习。

      1. 头像
        酷侠
         · 
        回复

        @lx5555iou

        别把语法弄混了$[泡泡表情]::(吐舌)

        1. 头像
          lx5555iou 作者
           · 
          回复

          @酷侠

          谢谢提醒,不过真的没啥区别,只是我现在会习惯性先写c++

          1. 头像
            酷侠
             · 
            回复

            @lx5555iou

            这里显示你网站最近有访客了,加油$[经典表情]::(得意)

SSL