C語言,一道麻煩題
/*照相(20分)
題目內(nèi)容:
總有些字符串中,存在一些重復(fù)出現(xiàn)的字符,請將每一個字符串中重復(fù)出現(xiàn)的最后一個字符替換成相應(yīng)的重復(fù)數(shù)。
例如,在aaa字符串中,a重復(fù)了3次,那么就將最后一個a替換為3,即aa3
只出現(xiàn)1次的,當(dāng)然就不用處理了,因為沒有出現(xiàn)重復(fù)次數(shù)嘛
我們這里的字符串,在變換后長度也不會超過100的
輸入樣例
aaa
輸出樣例
aa3
輸入樣例:
abc
輸出樣例:
abc?
咱就是說我期末考試白扔20分,考試后改了幾個數(shù)據(jù)就能行。
思路:記錄各種字母出現(xiàn)的次數(shù),在最后一次用itoa把它的次數(shù)轉(zhuǎn)化成字符串錄入
我錯在了把結(jié)構(gòu)體中幾個變量搞混了,結(jié)果大失敗。
修正后:
#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);
}
本學(xué)期首寄

看我多拉貢dangsi?
