題目描述
小紅又給小明出難題了,這次的問題是給小明一些非負整數,讓他按照一定的規則編程改寫這些整數,規則如下:
如果某個正整數中有n個相同的數字x連續出現,那么將它們改寫成“nx”的形式;
對于單獨出現的數字x,將其改寫成“1x”的形式。
例如,122344111應該改寫為1122132431。
由于小明的編碼能力太弱,所以請你幫他編程解決這個問題。
輸入格式
輸入的第一行是一個正整數n(n<=1000),表示測試數據的組數。
接下來n行,每行輸入一個要改寫的非負整數,每個整數的位數不超過1000。
輸出
對于每組輸入,輸出改寫后的形式。
樣例輸入
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型數組里面存放著00000000000000000;;;;;if(b[i]!=b[i+1])這地方就沒法判斷了。。。
AC源碼:
//還是用字符型數組存吧 #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; }
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
