L1-027 出租(20 分)

匿名 (未验证) 提交于 2019-12-03 00:30:01

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

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[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};

#include<stdio.h> int index[11]; char array_t1[11]; int array_t2[10]; int phone[11]; int array[10]; int main() { 	scanf("%s",array_t1); 	for(int i=0;i<11;i++)        {     	int t=(int)array_t1[i]-48; 		array_t2[t]++; 		phone[i]=t; 	}         int cnt=0; 	for(int i=9;i>=0;i--) 	{ 		if(array_t2[i]>0) 		{ 			array[cnt]=i; 			cnt++; 		} 	} 	for(int i=0;i<11;i++) 	{ 	   for(int j=0;j<cnt;j++) 	   { 	   	if(phone[i]==array[j]) 	   	  { 	   	    index[i]=j;	 		  } 		}	 	} 	printf("int[] arr = new int[]{"); 	for(int i=0;i<cnt;i++) 	{ 		if(i!=cnt-1) 	 printf("%d,",array[i]); 	    else 	 printf("%d",array[i]);     }      printf("};\n");      printf("int[] index = new int[]{"); 	for(int i=0;i<11;i++) 	{ 		if(i!=10) 	  printf("%d,",index[i]); 	    else 	  printf("%d",index[i]); 	}  	 printf("};");   return 0; }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!