pta 7-215 出租(C语言)

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

思路:

数组a存下电话号码的每一位,0到9开布尔数组b,打印第一行,要点是如何控制 " , " 的打印,我是用flag标记第一个 “ { ” ,之后打印逗号,然后开数组c储存下来,第二行双层for循环,第一层找数组a的每一位,第二层找数组c的位置,同样注意逗号的打印。

数组尽量开大点,电话号码有十一位就最好开到十六甚至更大。

AC代码:

#include<stdio.h>
int main()
{
	char t[16];
	gets(t);
	int tt=0,m=0;
	int a[16];
	while(m<=10)
	{
		a[tt++]=t[m]-'0';
	//	printf("##%d\n",a[tt-1]);//测试用
		m++;
	}
	int n=11;
	int b[16]={0};
	for(int i=0;i<=10;i++)
	{
		b[a[i]]=1;
	}
	int flag=0;
	printf("int[] arr = new int[]");//打印第一行
	int c[16];
	int cnt=0;
	for(int i=9;i>=0;i--)
	{
		if(b[i])
		{
			c[cnt++]=i;
			if(!flag)//用flag控制逗号
			{
				printf("{");
				flag=1;
			}
			else
			printf(",");
			
			printf("%d",i);
		}
	}
	cnt--;
	flag=0;
	printf("};\nint[] index = new int[]");//打印第二行
	for(int i=0;i<=10;i++)
	{
		for(int j=0;j<=cnt;j++)
		{
			if(a[i]==c[j])
			{
				if(!flag)
				{
					printf("{");
					flag=1;
				}
				else
				printf(",");
				
				printf("%d",j);
				break;
			}
		}
	}
	printf("};\n");
	return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值