ACM程序设计书中题目--J(大写字母的更替)

题目大意:首先输入一个n,然后接下来n行每一行输入一串由不多于50个大写字母组成的字符串,将字符串中的每一个字母都依次变为其下一个字母,例:A->B,C->D,以此类推,Z->A。

解题思路:

1、该题是多组测试数据,且每组测试数据的字符串数量确定,所以先输入n,之后用while(cin>>n)。

2、因为有大量的测试数据,所以应用结构体,首先要把每组测试数据中的字符串进行输入,即构建一个结构体,应用char型数组,输入测试数据。

3、对于每组测试数据,由于字母的变换规律相同,所以很容易想到应用字符的ACSII码值,即对于一个数组内所有的字母,除Z之外的,均可以直接将该字母+1,得到新的字母,而Z则-25,完成对字符串的变换。

4、对结构体内字符数组的输出,用循环,逐个输出。要注意的是,样例输出中的String #1中间有空格,所以输出要控制格式。

源代码

#include <bits/stdc++.h>

using namespace std;

struct aaa           //定义结构体

{

   char a[50];

}b[10000];

int main()

{

    int i,n,l,j;

   while(cin>>n)   //输入n

    {

   for (i=1;i<=n;i++)

    {

       cin>>b[i].a;    //输入字符串

       for (j=0;j<(int)strlen(b[i].a);j++)    //字符串内字母的变换

       {

           if (b[i].a[j]=='Z')

           b[i].a[j]=b[i].a[j]-25;

           else

           b[i].a[j]=b[i].a[j]+1;

       }

    }

   for (i=1;i<=n;i++)    //输出

    {

       cout<<"String #"<<i<<endl;    //注意这里的空格

       for (j=0;j<(int)strlen(b[i].a);j++)

       cout<<b[i].a[j];

       cout<<endl<<endl;

    }

    }

   return 0;

}

做题感想:在一个自认为比较难的题没有解决之后,做了这个还是比较简单的题。这个题因为粗心提交错了好几遍,主要文体出现在了字母的变换以及输出的格式。之前几次提交错误是因为Z变A的时候粗心写成了-26,应该是-25,输出的格式首先第一点是每组样例后都有一行空格,其次string和#之间有空格,这些都是不应该出现的问题。虽然A了,但是以后还是要注意避免这些不该出现的错误。不过总算做出来一个,虽然比较简单但是还是比较开心的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值