杭电acm2055

题目链接如下:

http://acm.hdu.edu.cn/showproblem.php?pid=2055

因为这道题目比较简单,所以不详t细说思路了,只说一下扩展的内容

扩展什么呢?就是如何将字母与数字联系起来的方法

直接用这样一句话(int)( c-'A'+1) 就可以将字母从1到26分别对应起来(为什么这么写,自己想)

那么,如果要把小写字母换成大写字母呢?

c-'a'+'A'就可以啦

这道题我将自己做的解法跟别人做的很好的解法都放在一起对比一下:

#include<stdio.h>
int main()
{
    int t;
    scanf("%d",&t);
    int i;
    for(i=1;i<=2*t;i++)
    {
    char a;
    int y;
    scanf("%c %d",&a,&y);
    if(a=='A')
        printf("%d\n",y+1);
        if(a=='B')
        printf("%d\n",y+2);
        if(a=='C')
        printf("%d\n",y+3);
        if(a=='D')
        printf("%d\n",y+4);
        if(a=='E')
        printf("%d\n",y+5);
        if(a=='F')
        printf("%d\n",y+6);
        if(a=='G')
        printf("%d\n",y+7);
        if(a=='H')
        printf("%d\n",y+8);
        if(a=='I')
        printf("%d\n",y+9);
        if(a=='J')
        printf("%d\n",y+10);
        if(a=='K')
        printf("%d\n",y+11);
        if(a=='L')
        printf("%d\n",y+12);
        if(a=='M')
        printf("%d\n",y+13);
        if(a=='N')
        printf("%d\n",y+14);
        if(a=='O')
        printf("%d\n",y+15);
        if(a=='P')
        printf("%d\n",y+16);
        if(a=='Q')
        printf("%d\n",y+17);
        if(a=='R')
        printf("%d\n",y+18);
        if(a=='S')
        printf("%d\n",y+19);
        if(a=='T')
        printf("%d\n",y+20);
        if(a=='U')
        printf("%d\n",y+21);
        if(a=='V')
        printf("%d\n",y+22);
        if(a=='W')
        printf("%d\n",y+23);
        if(a=='X')
        printf("%d\n",y+24);
        if(a=='Y')
        printf("%d\n",y+25);
        if(a=='Z')
        printf("%d\n",y+26);
        if(a=='a')
        printf("%d\n",y-1);
        if(a=='b')
        printf("%d\n",y-2);
        if(a=='c')
        printf("%d\n",y-3);
        if(a=='d')
        printf("%d\n",y-4);
        if(a=='e')
        printf("%d\n",y-5);
        if(a=='f')
        printf("%d\n",y-6);
        if(a=='g')
        printf("%d\n",y-7);
        if(a=='h')
        printf("%d\n",y-8);
        if(a=='i')
        printf("%d\n",y-9);
        if(a=='j')
        printf("%d\n",y-10);
        if(a=='k')
        printf("%d\n",y-11);
        if(a=='l')
        printf("%d\n",y-12);
        if(a=='m')
        printf("%d\n",y-13);
        if(a=='n')
        printf("%d\n",y-14);
        if(a=='o')
        printf("%d\n",y-15);
        if(a=='p')
        printf("%d\n",y-16);
        if(a=='q')
        printf("%d\n",y-17);
        if(a=='r')
        printf("%d\n",y-18);
        if(a=='s')
        printf("%d\n",y-19);
        if(a=='t')
        printf("%d\n",y-20);
        if(a=='u')
        printf("%d\n",y-21);
        if(a=='v')
        printf("%d\n",y-22);
        if(a=='w')
        printf("%d\n",y-23);
        if(a=='x')
        printf("%d\n",y-24);
        if(a=='y')
        printf("%d\n",y-25);
        if(a=='z')
        printf("%d\n",y-26);
       }











return 0;
}


更好的解法:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n,y;
char c;
scanf("%d",&n);
getchar();
int i;
for(i=1;i<=n;i++)
{
    scanf("%c %d",&c,&y);
    if(c>='a'&&c<='z')
        printf("%d\n",y-(int)(c-'a'+1));
    else if(c>='A'&&c<='Z')
        printf("%d\n",y+(int)(c-'A'+1));
    getchar();
}





return 0;
}




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值