m0_62685905 2021-10-14 22:08 采纳率: 100%
浏览 1436
已结题

输出的字符变成了方框怎么办

简单来说这道题要把同字符A*4(不让我打四个A)变成4A,异字符ABC变成1ABC1,1变成11;
现在我做了个结构数组ab,a存放按三种类型切割的字符串,b对应转码
然后输出不知道为什么会有框框
快疯了
input:AAAAAABCCCC12344
output:6A1B14C11123124
我的output:A1B1C1112314


#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

struct encryption{
    char a[10] = {0};
    char b[10] = {0};
};


int main ()
{
    char input[100];
    cin >>input; 
    int len = strlen(input);
    encryption str[100];
    //切割 ,后同前不同换行,前后都不同不换,前同不换,如果有1单独出列 (优先检查 
    //这段代码没有问题 
    for (int i=0,j=0,k=0;i<len;i++){
        if (input[i] == 49)
            str[k++].a[0] = 49;
        else if(input[i]!=input[i+1]&&input[i]==input[i-1]){
            str[k++].a[j] = input[i];
            j = 0;
        }
        else if(input[i]!=input[i+1]&&input[i+1]==input[i+2]){
            str[k++].a[j] = input[i];
            j = 0;
        }
        else
            str[k].a[j++] = input[i];
    }
    //转换
    for (int i=0;str[i].a[0];i++){
        if (str[i].a[0] == str[i].a[1]){            //同字符串 
            str[i].b[0] = strlen(str[i].a);
            str[i].b[1] = str[i].a[0];
        }
        else if (str[i].a[0] == 49){                        //1
            str[i].b[0] = '1';
            str[i].b[1] = '1';
        }
        else if (str[i].a[0] != str[i].a[1]){            //不同字符串 
            str[i].b[0] = '1';
            int j;
            for (j=1;j<=strlen(str[i].a);j++)         
                str[i].b[j] = str[i].a[j-1];
            str[i].b[j] = '1';
        }
    }
    //输出
    int i = 0,j = 0;
    while (str[i].b[0]){
        while (str[i].b[j]){
            cout <<str[i].b[j++];
        }
        i++;
        j = 0;
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-14 22:58
    关注

    代码中吧'1'和1搞混了。表示数量的1不能是'1',表示字符的'1'不能是1。

    目前主要是因为把数量1处理成‘1’了。导致6A的6成了ASCII码,变成乱码了。

    再梳理一下代码吧。作为统计数据的数字,不能当成char输出,因为会自动当作字符输出,但实际要按照整型输出才是

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 创建了问题 10月14日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)