给你一个由’0’-'9’组成的字符串s ( 1 <= s 的长度 <= 100 ),和一个正整数n(1<=n<=3)。
我们将所有的’0’都看成空格。
这样你就得到几个分隔开来的字符串。
输出第n个字符串。题目保证分隔开来的字符串的数量大于等于n。
Input
第一行输入正整数T(1<=T<=100),代表T组测试数据。
对于每一组测试数据由一行组成:
给你一个字符串s和一个正整数n.
Output
对于每一组测试数据,输出分隔后的第n个字符串。
Sample Input
2
123456 1
001230234094500 3
Sample Output
123456
945
#include <stdio.h>
#include "string.h"
#include <stdlib.h>
struct st
{
char b[1000];
}s[1000];
int main()
{
char a[1000];
int i,t,n,flag,num,len,j;
scanf("%d",&t);
while(t--)
{
num=1;
flag=0;
j=0;
scanf("%s",a);
scanf("%d",&n);
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]!='0')
{
s[num].b[j++]=a[i];
flag=1;
}
else if(a[i]=='0'&&flag==0)
{
flag=0;
continue;
}
if((a[i]=='0'||i==len-1)&&flag==1)
{
s[num].b[j]='\0';//这一步要注意
num++;
flag=0;
j=0;
}
}
printf("%s\n",s[n].b);
}
return 0;
}
或者
#include<stdio.h>
#include<string.h>
#define N 1000
#define M 1000
int main()
{
char a[N], b[M][N], temp[N];
int n,i,word=0,m,t;
scanf("%d",&m);
while(m--)
{int num=0;
scanf("%s",a);
scanf("%d",&t);
n=strlen(a); // n为a[N]的长度
for(i=0;i<n;i++)
{
if(a[i] == '0')//单词分隔符
{
if (word != 0){
temp[word] = '\0';
strcpy(b[num],temp);
num++;
word = 0;
}
}
else
{
temp[word++] = a[i];//
}
}
if (word != 0){//最后一个单词后面可能没有分隔符
temp[word] = '\0';
strcpy(b[num], temp);
num++;
word = 0;
}
printf ("%s\n", b[t-1]);
}
return 0;
}