• [打基础]luogu1957口算练习题——字符串基本操作


    题意:第一行给出数据组数n,之后n行每行给出三个或两个数据,若给三个数据,则第一个数据用单个字符a/b/c分别表示+/-/*运算,后两个数表示参与运算的数字,若给两个数据延续之前的运算

    要求对每行数据输出对应的计算表达式(如a 1 2输出1+2=3)和表达式的长度


    我啥都忘记…


    思维上没有难度,几个小的地方处理清楚

    • 比如对于每行两个数据还是三个数据的判定可以先读入两个数据p,q(默认当做参与运算的数字),再getchar一下,如果得到 或者 说明行尾了,如果是空格后面还有一个数据,那就应该让运算符变成第一个p,实际上的p应该是读到的q,然后q另外再读一个。这里用到 strcpy(p,q); 来用q覆盖p
    • 再然后是把字符串弄成数字,应该没问题,如果是负数判个负号(不过这题甚至都保证非负),接着从高位往低位逐位求和就行
    • 最后用一个新字符串保存要输出的表达式,用 strcat(p,q); 把q接到p的后面,计算结果直接当数字输出,最后输出长度的时候用 strlen(表达式)+答案长度 
    • 然后要说的是我第一次交的时候wa掉的地方…如果答案是0的话长度是1…特别提醒
     1 #include<cstdio>
     2 #include<cstring>
     3 const int N=105;
     4 int l,f,m,n,ans;
     5 char p[N],q[N],r[N],pri[N];
     6 inline void work(char *t,int *g)
     7 {
     8     *g=0;
     9     int len=strlen(t);
    10     for(register int i=0;i<len;i++)*g=*g*10+t[i]-'0';
    11 }
    12 inline int calc(int g)
    13 {
    14     int res=0;if(g<=0)res++,g=-g;
    15     /*
    16     attention!
    17     if g equal to,res should be 1 not 0; 
    18     */
    19     while(g){g/=10;res++;}
    20     return res;
    21 }
    22 int main()
    23 {
    24     //freopen("input.in","r",stdin);
    25     scanf("%d",&l);f=-1;
    26     while(l--)
    27     {
    28         scanf("%s%s",p,q);char c=getchar();
    29         if(c==' ')
    30         {
    31             strcpy(r,p);strcpy(p,q);
    32             scanf("%s",q);
    33             f=r[0]-'a';
    34         }
    35         work(p,&m);work(q,&n);
    36         
    37         strcat(pri,p);
    38         if(f==0)ans=m+n,strcat(pri,"+");
    39         else if(f==1)ans=m-n,strcat(pri,"-");
    40         else if(f==2)ans=m*n,strcat(pri,"*");
    41         strcat(pri,q);strcat(pri,"=");
    42         
    43         printf("%s%d
    ",pri,ans);
    44         printf("%d
    ",strlen(pri)+calc(ans));
    45         memset(pri,0,sizeof(pri));
    46     }
    47     return 0 ;
    48 }
  • 相关阅读:
    Jmeter监控服务器性能
    三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
    从0到1搭建移动App功能自动化测试平台(0):背景介绍和平台规划
    Jmeter监控系统等资源,ServerAgent端口的修改
    Performance plugin离线安装
    Oracle定义常量和变量
    通过FTP将一个数据文件从A服务器下载到B服务器的整个过程
    Oracle使用%rowtype变量存储一行数据
    Oracle使用%type类型的变量输出结果
    mdf与ldf文件如何还原到SQLserver数据库
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/13548010.html
Copyright © 2020-2023  润新知