首页 > 其他分享 >洛谷 P1957 口算练习题

洛谷 P1957 口算练习题

时间:2022-12-06 15:46:03浏览次数:43  
标签:练习题 P1957 洛谷 int s2 ss3 char sym str

 

 

 

 实现代码(原创):

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char* itoa(int value, char* str, int radix) {
    static char dig[] =
        "0123456789"
        "abcdefghijklmnopqrstuvwxyz";
    int n = 0, neg = 0;
    unsigned int v;
    char* p, *q;
    char c;
	/* 负数:十进制直接在前面加负号,其它进制用补码 */
    if (radix == 10 && value < 0) {
        v = -value;
        neg = 1;
    }else
    {
        v = value;
    }
    /* 其它进制的负数转为unsigned int类型,即取了补码 */
    do {
        str[n++] = dig[v%radix];
        v /= radix;
    } while (v);
    if (neg)
        str[n++] = '-';
    str[n] = '\0';
	/* 字符串反转 */
    for (p = str, q = p + (n-1); p < q; ++p, --q)
        c = *p, *p = *q, *q = c;
    return str;
}


int main()
{
    int nums[60];
    char str[60][32];
    int n;
    scanf("%d",&n);
    getchar();
    char sym[6];
    char s2;
    int i,j,k;
    int m=0;
    while(n)
    {
        scanf("%s",sym);
        //getchar();
        if(strlen(sym)==1 && (sym[0]=='a'||sym[0]=='b'||sym[0]=='c'))
        {
            char ss1[20],ss2[20],ss3[20];
            int l1,l2,l3;
            int x,y,z;
                s2 = sym[0];
                scanf("%d%d",&x,&y);
                itoa(x,ss1,10);
                itoa(y,ss2,10);
                l1 = strlen(ss1);
                l2 = strlen(ss2);
                if(s2=='a')
                {
                    z = x+y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                    s2='+';
                }else if(s2=='b')
                {
                    z = x-y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                    s2='-';
                }else if(s2=='c')
                {
                    z = x*y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                    s2='*';
                }
                for(i=0;i<l1;i++)
                    str[m][i] = ss1[i];
                str[m][i] = s2;
                i++;
                for(k=0;k<l2;k++,i++)
                    str[m][i] = ss2[k];
                str[m][i] = '=';
                i++;
                for(j=0;j<l3;j++,i++)
                    str[m][i] = ss3[j];
                nums[m]=l1+l2+l3+2;
                m++;

        }else
        {
            char ss2[20],ss3[20];
            int l1,l2,l3;
            int x,y,z;
            x = atoi(sym);
            scanf("%d",&y);

                itoa(y,ss2,10);
                l1 = strlen(sym);
                l2 = strlen(ss2);
                if(s2=='+')
                {
                    z = x+y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                }else if(s2=='-')
                {
                    z = x-y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                }else if(s2=='*')
                {
                    z = x*y;
                    itoa(z,ss3,10);
                    l3 = strlen(ss3);
                }
                for(i=0;i<l1;i++)
                    str[m][i] = sym[i];
                str[m][i] = s2;
                i++;
                for(k=0;k<l2;k++,i++)
                    str[m][i] = ss2[k];
                str[m][i] = '=';
                i++;
                for(j=0;j<l3;j++,i++)
                    str[m][i] = ss3[j];
                nums[m]=l1+l2+l3+2;
                m++;

        }
        n--;
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<nums[i];j++)
            printf("%c",str[i][j]);
        printf("\n");
        printf("%d\n",nums[i]);
    }
    return 0;
}

  

标签:练习题,P1957,洛谷,int,s2,ss3,char,sym,str
From: https://www.cnblogs.com/kmxojer/p/16955463.html

相关文章

  • 洛谷P2504聪明的猴子
    思路:最小生成树1#include<cstdio>2#include<cstdlib>3#include<iostream>4#include<cstring>5#include<cmath>6#include<algorithm>7#include<vecto......
  • 洛谷P1111修复公路
    思路:并查集1#include<cstdio>2#include<iostream>3#include<algorithm>4#include<math.h>5#include<vector>6#include<set>7usingnamespacestd;......
  • 新生第三次练习题解
    bs来送签到啦简单思考下就知道无论选择何种路线从左上角到右下角,通过平移后就等价于先向下走到底再向右走到底,所以只要两个循环累加下两条边的的价值就能得到答案(注意循......
  • 【洛谷P8866】喵了个喵
    题目题目链接:https://www.luogu.com.cn/problem/P8866小E喜欢上了一款叫做《喵了个喵》的游戏。这个游戏有一个牌堆和\(n\)个可以从栈底删除元素的栈,任务是要通过游......
  • 洛谷 P1891 疯狂 LCM
    \(\text{lcm}\)不好处理,转化为\(\gcd\):\[n\sum_{i=1}^n\frac{i}{\gcd(i,n)}\]\(\gcd\)相关题目的套路——枚举因数:\[n\sum_{d|n}\sum_{i=1}^n\fracid[......
  • 练习题
    1.求两个数的最大公约数#include<stdio.h>intmain(){inta=1;intb=2;intr=0;scanf("%d%d",&a,&b);while(r=a%b)//辗转相除法{a=b;b=r;}prin......
  • 洛谷 P4552 [Poetize6] IncDec Sequence(差分)
    题目分析直接贴一个洛谷上的题解,真的秀,讲的又清楚又好要使得序列的数全部相等,其实就是让他们之间的差全为0,也就是差分序列的除了第一项每一项都是0,为什么除了第一项呢,因......
  • 洛谷 P1387 最大正方形(前缀和,二分)
    题目分析当一个边长为x的正方形不包含0时,这个正方形内的二维前缀和为x*x,题目想求满足条件的最大的正方形的边长假如最大的正方形的边长为ans,那么凡是边长大于ans的正方形......
  • 洛谷 P1205 [USACO1.2] 方块转换 Transformations
    [USACO1.2]方块转换Transformations题目描述一块\(n\timesn\)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转......
  • 洛谷-P5541 Sleepy Cow Herding S
    SleepyCowHerdingSSleepyCowSorting的升级版,从\(3\)头牛变成\(n\)的情况分类讨论+双指针先把答案本就连续的特判丢掉最大值最大值就尽量把每个空位......