数数
题目描述
小凯今年上一年级了,他只学会了0-9这十个数字,对于两位以上的数字,小凯自创了一套读法。
连续出现的x个y,小凯将其读作“xy”
比如:11 小凯读作"21" (连续2个1)
21 小凯读作"1211" (连续1个2 连续1个1)
99 小凯读作"29" (连续2个9)
310 小凯读作"131110"(连续1个3 连续1个1 连续1个0)
330111 小凯读作"231031"(连续2个3 连续1个0 连续3个1)
给定一个由数字组成的字符串n(2 <= |n| <= 100),请输出小凯对n的读法
|n|表示字符串n的长度
保证连续出现同一个数字的次数不会超过9次(因为小凯最多只能数到9)
比如:2223311111111118(非法,因为数字1连续出现了10次)
输入
由纯数字组成的一行字符串
输出
在小凯的自创规则下这一长串数的读法
样例输入
13145
样例输出
1113111415
解析
当作一个字符串处理就可以了,当数到第i位数时,如果这位数和第i-1的数不一样,那么就输出i-1这个数的个数和这个i-1数 并重新赋值sum=1,不给sum赋值0的原因是循环已经到i了,这个i数已经开始计数了。
在这里插入代码片
#include <string.h>
#include <stdio.h>
int main()
{
char s[100];
int sum = 0;
scanf("%s", &s);
/*%s是字符串的转换说明
可用scanf函数进行字符串输入
遇到空格或回车就结束*/
char x = s[0];
for(int i=0; i<strlen(s); i++){
if(x==s[i])
sum++;
else{
printf("%d%c", sum, x);
x = s[i];
sum = 1;
}
}
printf("%d%c\n", sum, x);
return 0;
}