題目描述
小紅又給小明出難題了,這次的問題是給小明一些非負(fù)整數(shù),讓他按照一定的規(guī)則編程改寫這些整數(shù),規(guī)則如下:
如果某個(gè)正整數(shù)中有n個(gè)相同的數(shù)字x連續(xù)出現(xiàn),那么將它們改寫成“nx”的形式;
對(duì)于單獨(dú)出現(xiàn)的數(shù)字x,將其改寫成“1x”的形式。
例如,122344111應(yīng)該改寫為1122132431。
由于小明的編碼能力太弱,所以請(qǐng)你幫他編程解決這個(gè)問題。
輸入格式
輸入的第一行是一個(gè)正整數(shù)n(n<=1000),表示測試數(shù)據(jù)的組數(shù)。
接下來n行,每行輸入一個(gè)要改寫的非負(fù)整數(shù),每個(gè)整數(shù)的位數(shù)不超過1000。
輸出
對(duì)于每組輸入,輸出改寫后的形式。
樣例輸入
3
122344111
1111111111
12345
樣例輸出
1122132431
101
1112131415
?
分析:
#include<stdio.h>
#include<string.h>
int main()
{
int k;
char a[9999];
int b[9999];
scanf("%d",&k);
getchar();
while(k--)
{
gets(a);
int l=strlen(a);
for(int i=0; i<l; i++)
{
b[i]=a[i]-'0';
}
int w=1;
//for(int i=0;i<l;i++)
// printf("%d ",b[i]);
for(int i=0; i<l; i++)
{
if(b[i]!=b[i+1])
{
printf("%d%d",w,b[i]);
w=1;
}
else w++;
}
printf("\n");
}
return 0;
}
?
20++WA:原因是int型數(shù)組里面存放著00000000000000000;;;;;if(b[i]!=b[i+1])這地方就沒法判斷了。。。
AC源碼:
//還是用字符型數(shù)組存吧
#include<stdio.h>
#include<string.h>
void f(char x[1000])
{
int n=1;
int l=strlen(x);
for(int i=0;i<l;i++)
{
if(x[i]!=x[i+1])
{
printf("%d%c",n,x[i]);
n=1;
}
else n++;
}
printf("\n");
}
int main()
{
int k;
char a[1000];
scanf("%d",&k);
for(int i=0;i<k;i++)
{
scanf("%s",a);
f(a);
}
return 0;
}
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

