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

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


我啥都忘记…


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

  • 比如对于每行两个数据还是三个数据的判定可以先读入两个数据p,q(默认当做参与运算的数字),再getchar一下,如果得到\n或者\r说明行尾了,如果是空格后面还有一个数据,那就应该让运算符变成第一个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\n",pri,ans);
44 printf("%d\n",strlen(pri)+calc(ans));
45 memset(pri,0,sizeof(pri));
46 }
47 return 0 ;
48 }

最新文章

  1. jQuery跨域
  2. 常用git命令及问题解决方法
  3. Oracle函数题
  4. SharePoint 2013设置“以其他用户身份登录”
  5. 马丁&#183;福勒-page对象
  6. MySql的虚拟机和Xshell5的连接过程
  7. c# datatable row
  8. SpringBoot2.0之一 新建项目helloWorld
  9. Android AVD启动报错: This AVD&#39;s configuration is missing a kernel file! Please ensure the file &quot;kernel-qemu&quot; is in the same location as your system image.
  10. Chapter 5 Blood Type——21
  11. Appium IOS 使用多模拟器并发执行测试
  12. [CF536D]Tavas in Kansas
  13. js加密php解密---jsencrypt
  14. 解决安装xcode后git使用报错的问题
  15. HDU 6162 Ch’s gift
  16. 2、OpenSsh
  17. C++ const方法及对象
  18. Android中ListView的使用步骤
  19. SEO记录-1
  20. gradle加载spring包

热门文章

  1. html页面转PDF、图片操作记录
  2. 解决adober reader已停止工作的问题
  3. 2个快速制作完成一幅思维导图的iMindMap思维导图用法
  4. 添加mysqli扩展
  5. PHP 统计文件数和文件大小
  6. LeetCode双周赛#33 题解
  7. synchronized的底层原理?
  8. 【2020.11.30提高组模拟】删边(delete)
  9. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  10. Python+爬虫+xlwings发现CSDN个人博客热门文章