标签:结构 int 赋值 scanf for can 开头 c语言实现 sam
4
4 1 2 3 4
2 21 88
3 756 12 3
3 1 98 46
1 2 3 4
88 21
3 12 756
1 98 46
首先找到火星数字对应的映射关系即int b[]数组,创建结构体,每次进while和for用memeset()清空结构体数组,每次赋值结构体数组里面的火星数字,和对应的地球数字,然后对结构体进行排序
#include <stdio.h>
#include <string.h>
struct map
{
int earth ;
int mars ;
}MAP[100];// //火星与地球数字对应关系的结构体
void transform(struct map * p,int *b,int *c,int i);
int main()
{
int b[10]={0,2,4,5,7,3,9,8,1,6}; //映射关系
int c[10],t,n,i,j;
struct map temp ;
scanf("%d",&t);
while(t--)
{
memset(MAP,0,sizeof(MAP));
scanf("%d",&n);
for(i=0;i<n;i++)
{
memset(c,0,sizeof(c));
scanf("%d",&MAP[i].mars);
transform(&MAP[i],b,c,i);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(MAP[j].earth>MAP[j+1].earth)
{
temp =MAP[j] ;
MAP[j]=MAP[j+1];
MAP[j+1]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",MAP[i].mars);
}
printf("\n");
}
}
void transform(struct map * p,int *b,int *c,int i)////将火星数字转化为对应的地球数字
{
int ii=0,j,n,r ;
n= p->mars;
r=n;
while(n)
{
c[ii++]=n%10;
n/=10;
}
for(j=ii-1;j>=0;j--)
{
p->earth=p->earth*10+b[c[j]];
}
// printf("火星数%d对应的地球数是:%d\n",r,p->earth);
}
标签:结构 int 赋值 scanf for can 开头 c语言实现 sam
原文地址:https://www.cnblogs.com/cocobear9/p/12571804.html