#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");} 不好意思昨晚写的,没仔细看,有错误。
#include <stdio.h>#include<string.h>int main(){ char p1[256],q,p2[256]; int i,j,n=0; printf("请输入您想要压缩的字符串\n\t"); gets(p1); j=0; q=p1[0]; j++; for(i=1;i<strlen(p1);i++) { if(q!=p1[i]) { p2[n]=(j+48); n++; p2[n]=q; n++; j=0; q=p1[i]; j++; } else { j++; } } if(j==1) { p2[n]=(j+48); n++; p2[n]=q; n++; } p2[n]='\0'; printf("压缩后的字符串是:%s\n",p2); system("pause"); //暂停,查看结果 return 0;}
#include <stdio.h>struct str{ char ch; int n;}Str[26];//定义一个结构体void main(){ char s[20]; char ch; int i,j; printf("输入字符串\n"); gets(s);//如果输入字符串没排序,增加一个排序过程 //下面只支持大写字母。 for(i=0;i<26;i++) Str[i].n=0; i=0; j=0; while(s[i]!='\0') { if(i==0) //第一个字符直接累加 { ch=s[i]; j=ch-'A'; Str[j].ch=ch; Str[j].n++; i++; continue; } while(s[i]!='\0'&&ch==s[i]) //如果相同,累加 { j=ch-'A'; Str[j].ch=ch; Str[j].n++; i++; } ch=s[i];//不同的记录在结构体中 j=ch-'A'; Str[j].ch=ch; Str[j].n++; i++; } for(i=0;i<26;i++) if(Str[i].n>0) printf("%d%c",Str[i].n,Str[i].ch); printf("\n");}