PAT乙级-1006

1006 换个格式输出整数 (15)(15 分)

让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(&lt10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。

输入格式:每个测试输入包含1个测试用例,给出正整数n(&lt1000)。

输出格式:每个测试用例的输出占一行,用规定的格式输出n。

输入样例1:

234

输出样例1:

BBSSS1234

输入样例2:

23

输出样例2:

SS123

算法分析:该题在于如何通过长度进行输出,可以用case输出,我这里用的是while语句。

#include <stdio.h>

int fun(int *a,int n);
void Print(int *a,int len);

int main()
{
	int n,a[3]={0},len,i;
	scanf("%d",&n);
	len = fun(a,n);
	Print(a,len);
	return 0;
}

int fun(int *a,int n)
{
	int i;
	for(i=0;n>0;i++)
	{
		a[i] = n%10;
		n/=10;
	}
	return i;
}
void Print(int *a,int len)
{
	int i,j,cnt=1;
	for(i=0;i<len;i++)
	{
		j=len-i-1;
		while(a[j]>0&&j==2)	{
			printf("B");
			cnt++;
			if(cnt>a[j]) {
				cnt=1;
				break;
			}
		}
		while(a[j]>0&&j==1){
			printf("S");
			cnt++;
			if(cnt>a[j]) {
				cnt=1;
				break;
			}
		}
		while(a[j]>0&&j==0)
		{
			printf("%d",cnt++);
			if(cnt>a[j]) {
				cnt=1;
				break;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/bridge3/article/details/81105250