uva 10785

/*貌似可以再优化一下,太浪费了,仔细想想就能ac了,呵呵

细心,这题不难,要对输出的元音字母和辅音字母单独排序

*/

#include<stdio.h>
#include<stdlib.h>
char *value="AJSBKTCLUDMVENWFOXGPYHQZIR",output[215],*v="AUEOI";
char a[106],b[106],vowel[106],consonant[106];
int cmp(const void*a,const void*b)
{
 return *(char*)a-*(char*)b;
}
int main()
{
 int i,j,l,m,n=0;
 for(i=0;i<5;i++)
 {
  for(j=0;j<21;j++)
   vowel[n++]=v[i];
 }
 n=0;
    for(i=0;i<26;i++)
 {
  if(value[i]!='A'&&value[i]!='U'&&value[i]!='E'&&value[i]!='O'&&value[i]!='I')
   for(j=0;j<5;j++)
   consonant[n++]=value[i];
 }
 consonant[n]='\0';
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&l);
  if(l%2)
  {
   for(j=0;j<l/2+1;j++)
       a[j]=vowel[j];
      qsort(a,l/2+1,sizeof(char),cmp);
  }
  else
  {
   for(j=0;j<l/2;j++)
       a[j]=vowel[j];
      qsort(a,l/2,sizeof(char),cmp);
  }
  m=0;
  for(j=0;j<l;j+=2)
   output[j]=a[m++];
  for(j=0;j<l/2;j++)
   b[j]=consonant[j];
  qsort(b,l/2,sizeof(char),cmp);
  m=0;
  for(j=1;j<l;j+=2)
   output[j]=b[m++];
  output[l]='\0';
  printf("Case %d: %s\n",i+1,output);
 }
 return 0;
}

你可能感兴趣的:(uva)