這道題有幾個點還是需要注意的,話不多説直接看代碼:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[1010] = { 0 };
gets(arr);
int len = strlen(arr), i, j;
int count = 0;
for (i = 0; i <= len; i++)//如果字符串末尾是一串連續且符合題意的'6',則什麽也不打印,所以必須多一次循環
{//可以思考一下爲什麽要先輸出數字字符,而非非數字字符
if (arr[i] != '6') {
if (count > 0 && count <= 3) {
for (j = 0; j < count; j++) {
printf("6");
}
}
else if (count > 3 && count <= 9) {
printf("9");
}
else if (count > 9)
printf("27");
printf("%c", arr[i]);
count = 0;//記得初始化
}
else {
count++;
}
}
return 0;
}
關於第一條注釋:爲什莫是“i<=len”而非"i<len",各位可以找兩個例子自行試驗,例如;
正確結果應爲:”I 9“。詳細原因看注釋多試幾次就好了。
希望能對各位讀者有所幫助。