『壹』 c語言編程:字元串壓縮

話說B數組不應該是整形呀,不然不能保存字母了。以下是我的代碼。。。
#include<iostream>
#include<string.h>
#include<stdio.h>
usingnamespacestd;
voidyasuo(chara[],charb[])
{
intcount=1,p=0;
for(inti=0;i<strlen(a);i++)
if(a[i]==a[i+1])
count++;
elseif(count>2)
{
b[p++]=(char)(count+'0');
b[p++]=a[i];
count=1;
}
elseif(count==2)
{
b[p++]=a[i];
b[p++]=a[i];
count=1;
}
else
b[p++]=a[i];
}
voidprintB(charb[])
{
cout<<b<<endl;
}
voidbackB(charb[])
{
for(inti=0;i<strlen(b);i++)
if(b[i]<='9'&&b[i]>='3')
{
for(intj=0;j<(int)(b[i]-'0');j++)
cout<<b[i+1];
i++;
}
else
cout<<b[i];
cout<<endl;
}
intmain()
{
chara[1000]={0},b[1000]={0};
gets(a);
yasuo(a,b);
printB(b);
backB(b);
}
『貳』 使用C語言實現字元串的壓縮。
/*
原串:111225555
壓縮後:312245
原串:333AAAbbbb
壓縮後:333A4b
原串:ASXDCdddddd
壓縮後:1A1S1X1D1C6d
Pressanykeytocontinue
*/
#include<stdio.h>
#include<string.h>
char*CompressStr(chars[]){
chart[255];
inti=0,j,k=0;
while(s[i]){
j=i+1;
while(s[i]==s[j])++j;
t[k++]=j-i+'0';
t[k++]=s[i];
i=j;
}
t[k]='';
strcpy(s,t);
returns;
}
intmain(void){
chari,s[][20]={"111225555","333AAAbbbb","ASXDCdddddd"};
for(i=0;i<3;++i){
printf("原串:%s
",s[i]);
printf("壓縮後:%s
",CompressStr(s[i]));
}
return0;
}
『叄』 c語言字元串如何壓縮

話說B數組不應該是整形呀,不然不能保存字母了。以下是我的代碼。。。
#include<iostream>
#include<string.h>
#include<stdio.h>
usingnamespacestd;
voidyasuo(chara[],charb[])
{
intcount=1,p=0;
for(inti=0;i<strlen(a);i++)
if(a[i]==a[i+1])
count++;
elseif(count>2)
{
b[p++]=(char)(count+'0');
b[p++]=a[i];
count=1;
}
elseif(count==2)
{
b[p++]=a[i];
b[p++]=a[i];
count=1;
}
else
b[p++]=a[i];
}
voidprintB(charb[])
{
cout<<b<<endl;
}
voidbackB(charb[])
{
for(inti=0;i<strlen(b);i++)
if(b[i]<='9'&&b[i]>='3')
{
for(intj=0;j<(int)(b[i]-'0');j++)
cout<<b[i+1];
i++;
}
else
cout<<b[i];
cout<<endl;
}
intmain()
{
chara[1000]={0},b[1000]={0};
gets(a);
yasuo(a,b);
printB(b);
backB(b);
}
『肆』 c語言,如何解壓縮字元串,例如:a12g5y8,反解壓後變成aaaaaaaaaaaagggggyyyyyyyy,,求代碼,謝謝
#include<stdio.h>
voidstrjieya(charsrc[],charres[])
{
intsrc_pos=0;
intres_pos=0;
intchar_num=0;
inti;
while(src[src_pos]!=0)
{
if(src[src_pos]<'0'||src[src_pos]>'9')
{
res[res_pos]=src[src_pos];
src_pos++;
res_pos++;
}
else
{
sscanf(&src[src_pos],"%d",&char_num);
char_num=char_num-1;//因為上面已經放進去一個了
for(i=0;i<char_num;i++)
{
res[res_pos]=src[src_pos-1];
res_pos++;
}
while(src[src_pos]>='0'&&src[src_pos]<='9')
{
src_pos++;
}
}
}
res[res_pos]=0;
}
intmain()
{
chara[]="a12g5y8";
charb[1000];
strjieya(a,b);
printf("%s
",a);
printf("%s
",b);
return0;
}
結果:
a12g5y8
aaaaaaaaaaaagggggyyyyyyyy
Pressanykeytocontinue
『伍』 c語言 壓縮字元串:如AABBCCDDDD,輸出2A2B2C4D,用C語言,求問
#include<stdio.h>
#include<string.h>
void
main()
{
char
s[51];
int
i=0,j=1;
printf("請輸入一個長度不超過五十的字元串(否則會越界出錯):\n");
scanf("%s",s);
if(strlen(s)>50){
printf("輸入不合要求!");
return;
}
while(i<strlen(s))
{
//j用於統計重復的字母個數
if(s[i]==s[i+1])
j++;
else{
printf("%d%c",j,s[i]);
j=1;//j重新計數
}
i++;
}
printf("\n");
}
不好意思昨晚寫的,沒仔細看,有錯誤。
『陸』 下面的c語言字元串壓縮程序怎麼寫呀 輸入樣例 a5b3aba13b4 輸出: aaaaabbbabaaaaaaaaaaaaabbbb
#include <stdio.h>
#include <string.h>
void main()
{
char s[80];
int n=0,i=0,j;
printf("請輸入字元串:");
gets(s);
if(strlen(s)%2!=0)
{
printf("輸入有誤!");
return;
}
for(i=0;s[i]!='\0';i+=2)
{
for(j=1;j<=s[i+1]-48;j++)
printf("%c",s[i]);
}
printf("\n");
}
『柒』 C語言鏈表實現字元串壓縮, 求大神幫助啊,跪謝。...
#include <stdio.h>
typydef struct ch
{
char c;//字元
int num;//字元個數
}Ch;
typedef struct list
{
Ch cha;
Ch *next;
}List;
void main()//以「aaaaabbbbbb」為例
{
List *head; //頭結點
List *l = (List*)malloc(sizeof(List));
l->cha.c = a;
l->cha.num = 5;
head =l;
l ->next= (List*)malloc(sizeof(List));
l = l->next;
l->cha.c = b;
l->cha.num = 6;
l->next =NULL;
l = head;
while(l != NULL)
{
for(int i =0; i< l->cha.num;i++)
printf("%c");
l = l->next;
}
}