《ACM程序设计》书中题目Z 第二十六题 判断首字母缩写是相同

1.简单描述

可多次测试输入,先输入一个数字,规定需要判断几组句子,输入这组中各句子单词数,判断二者首字母缩写是否相同。

2.思路

输入字符串,将大写首字母存入动态数组,然后比较两句话的缩写是否相同。思路很简单,但写起来复杂,而且改了好多遍才能得出样例输出。

错误做法

#include <iostream>
#include<vector>
#include<string>

using namespace std;

int main()
{
    vector<char>v;
    vector<char>e;
    int i,n;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        int p,q;
        string s1,s2;
        cin>>p;
        getline(cin,s1);//用法错误
        cin>>q;
        getline(cin,s2);
        if(p!=q)cout<<"DIFFERENT"<<endl;
        else
        {
          for(i=0;i<p;i++)
          {
              if(char(s1[i])<='Z'&&char(s1[i])>='A')
              v.push_back(char(s1[i]));
              if(char(s2[i])<='Z'&&char(s2[i]>='A'))
              e.push_back(char(s2[i]));
              if(e[i]!=v[i]){cout<<"DIFFERENT"<<endl;break;}

          }
          for(i=0;i<p;i++)
          if(v[i]==e[i]) cout<<"SAME"<<endl;

        }
    }
    return 0;
}


这个太过复杂,我参考了答案的思路,利用string函数的串连接和串比较,思路清晰多了。

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a,aa,aaa;
    int b,m,n,i,j;
    cin>>b;
    for(i=0;i<b;i++)
    {
        cin>>m;
        for(j=0;j<m;j++)
        {
            cin>>a;
            aa+=a[0];                                                                                     //将首字母串连接存入
        }
        cin>>n;
        for(j=0;j<n;j++)
        {
            cin>>a;
            aaa+=a[0];
        }
        if(aa.compare(aaa)==0)                                                                 //串比较
        cout<<"SAME"<<endl;
        else cout<<"DIFFERENT"<<endl;
        aa="";
        aaa="";                                                                                               //清空
    }
    return 0;
}

3.体会

很多问题直接利用string函数会简单得多 

输出的单词拼写错,找了好久的wa在哪,注意细节。           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值