程序代码:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
char a[10] = {'0','1','2','3','4','5','6','7','8','9'};
char f_array[50];
void GetNextArray(void)
{
/*根据题目的意思奇数位的代表上行序列连续相同数字的个数,
偶数位的是连续相同数字的数,
所用方法没什么可探讨,就是结尾处要做下处理。
*/
int num = 1,i = 1;
char *p, *q, temp[50];
memset(temp, '\0', 50);
q = p = f_array;
p = p + 1;
while(*p)
{
if(*p != *q)
{
temp[i] = *q;
temp[i-1] = a[num];
i = i + 2;
num = 1;
q = p;
}
else
{
num += 1;
}
p = p + 1;
}
temp[i-1] = a[num];
temp[i] = *q;
strcpy(f_array,temp);
}
int main()
{
int m;
//输入限制我就偷懒不做处理了,字符串长度与m的值都需要限制下。
printf("请输入起始序列: ");
gets(f_array);
printf("最终想达到的数列的SIZE: ");
scanf("%d", &m);
printf("以下所得数列:\n");
printf("%s\n", f_array);
while(1)
{
GetNextArray();
if(m >= strlen(f_array))
{
printf("%s\n", f_array);
}
else
{
printf("----it is over----\n");
break;
}
}
system("pause");
return 0;
}