欢迎光临散文网 会员登陆 & 注册

C语言,一道麻烦题

2022-05-28 10:34 作者:偶尔k  | 我要投稿

/*照相(20分)

题目内容:

总有些字符串中,存在一些重复出现的字符,请将每一个字符串中重复出现的最后一个字符替换成相应的重复数。

例如,在aaa字符串中,a重复了3次,那么就将最后一个a替换为3,即aa3

只出现1次的,当然就不用处理了,因为没有出现重复次数嘛

我们这里的字符串,在变换后长度也不会超过100的


输入样例

aaa

输出样例

aa3

输入样例:

abc


输出样例:


abc 

咱就是说我期末考试白扔20分,考试后改了几个数据就能行。

思路:记录各种字母出现的次数,在最后一次用itoa把它的次数转化成字符串录入

我错在了把结构体中几个变量搞混了,结果大失败。

修正后:

#include <stdio.h>

#include <string.h>

#include <math.h>

#include <stdlib.h>

typedef struct 

{

char x;

int y;

int z=1;

}st;

int main()

{

st fen[1000];int cou=0;

char a[100000];

scanf("%s",a);

int len=strlen(a);

fen[cou++].x=a[0];

fen[cou-1].y=1;

for(int i=1;i<len;i++)

{ int flag=0;

for(int j=0;j<cou;j++)

{

if(a[i]==fen[j].x)

{

fen[j].y++;flag=1;

break;

}

}

if(flag==0) 

{

fen[cou].x=a[i];

fen[cou++].y++;

}

}

char ne[100000];int cv=0;

for(int i=0;i<len;i++)

{   int uu=0;

for(int j=0;j<cou;j++)

{

if(a[i]==fen[j].x )////////////

{

if(fen[j].y==1)

{

ne[cv++]=a[i];              uu=1;

break;

}

else if(fen[j].y!=fen[j].z )

{

ne[cv++]=a[i];                  uu=2;

fen[j].z++;break;

}

else 

{

if(fen[j].y%100==1) 

{

strcat(ne,"100");cv++;cv++;cv++;           uu=3;break;

}

else 

{ char str[3];

itoa(fen[j].y,str,10);

if(fen[j].y>=10)  

{

strcat(ne,str);cv++;cv++;              uu=4;break;

}

else

{

strcat(ne,str);cv++;          uu=5;break;

}

}

}

}

}

}

ne[cv]='\0';

printf("%s",ne);

}

本学期首寄

看我多拉贡dangsi 


C语言,一道麻烦题的评论 (共 条)

分享到微博请遵守国家法律