⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zp1225.cpp

📁 浙江大学acm在线判题器代码集。 本人在浙大acm判题器上的所有代码(心血) acm.zju.edu.cn acm/icpc acm大学生程序设计竞赛 练习网站
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
//aAaAab, aaaaabb, aaaaac, aaaaab

#pragma argsused
#include <stdio.h>
#include <string.h>

int chcmp(char s1,char s2)
{
  if (s1>='A' && s1<='Z')
    s1-='A'-'a';
  if (s2>='A' && s2<='Z')
    s2-='A'-'a';
  if (s1>s2)
    return 1;
  if (s1<s2)
    return -1;
  return 0;
}
int scmp(char *s1, char *s2)
{
  int i=0;
  while (chcmp(s1[i],s2[i])==0
      && i<strlen(s1) && i<strlen(s2))
    i++;

  if (i==strlen(s1) && i==strlen(s2))
    return 0;
  else
    if (i==strlen(s1))
      return -1;
    else
      if (i==strlen(s2))
        return 1;

  return chcmp(s1[i],s2[i]);
}
int main(int argc, char* argv[])
{
  char st[1000],str[100][1000];
  int s,r,m,t,ln,k,i,j,a[100],w[100];
  while (scanf("%s",st) && st[0]!='.')
  {
    s=0;
    r=0;
    m=0;
    while (1)
    {
      ln=strlen(st);
      k=1;t=0;
      for (i=ln-2;i>0;i--)
        if (st[i]<='9' && st[i]>='0')
        {
          t+=(st[i]-'0')*k;
          k*=10;
        }
        else
          break;

      if (i==0 && (st[i]<='9' && st[i]>='0' || st[i]=='-'))
        if (st[i]=='-')
          t=-t;
        else
          t+=(st[i]-'0')*k;
      else
        i++;

      if (i==0)
        a[r++]=t;
      else
      {
        strcpy(str[s],st);
        str[s++][ln-1]='\0';
      }
      w[m++]=i;

      if (st[ln-1]=='.')
        break;
      scanf("%s",st);
    }
    for (i=0;i<r-1;i++)
      for (j=i+1;j<r;j++)
        if (a[i]>a[j])
        {
          t=a[i];
          a[i]=a[j];
          a[j]=t;
        }
    for (i=0;i<s-1;i++)
      for (j=i+1;j<s;j++)
        if (scmp(str[i],str[j])>0)
        {
          strcpy(st,str[i]);
          strcpy(str[i],str[j]);
          strcpy(str[j],st);
        }
    r=0;
    s=0;
    for (i=0;i<m-1;i++)
      if (w[i])
        printf("%s, ",str[s++]);
      else
        printf("%d, ",a[r++]);
    if (w[i])
      printf("%s.\n",str[s++]);
    else
      printf("%d.\n",a[r++]);

  }
  return 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -