改错题AB-装置连接

改错题AB-装置连接

时间: 1ms        内存:128M

描述:

注:本题只需要提交标记为修改部分之间的代码,请按照C++方式提交。

有ABCD四种装置,将一个数输入一种装置后,会输出另一个数,
     装置A:将输入的数加上5:
     装置B:将输入的数除以2;
     装置C:将输入的数减去4;
     装置D:将输入的数乘3,
 这些装置可以连接,如装置A后面连接B,就写成AB。
 给出一种装置的连接序列,当输入m时,输出的结果是多少?

#include <iostream>
using namespace std;
int equipment(char connstr[],int value)
{
    char ch;
    int i=0;
    /*****修改的起始行******/
    while((ch=connstr[i])!='\0')         //可能出错
    {
        switch(ch)
        {
        case 'A':
            value+=5;        //可能出错
        case 'B':
            value/=2;         //可能出错         
        case 'C':
            value-=4;         //可能出错
        case 'D':
            value*=3;         //可能出错
        }                             //可能出错
    }
    /*****修改的终止行*****/
    return value;
}

int main()
{
    char connstr[100];
    int result,value;
    cin>>value;
    cin.getline(connstr,100);
    while(cin.getline(connstr,100))
    {
        result = equipment(connstr,value);
        cout<<result<<endl;
    }
    return 0;
}

输入:

第一行m
第二行开始,每行对应一种装置的连接序列

输出:

每种连接序列的输出结果,每个结果占一行

示例输入:

10
ABCD
DCBA
AABBCCDD
DDCCBBAA

示例输出:

9
18
-27
30

提示:

参考答案(内存最优[1096]):

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n=0,s=0;
    char str[50];
    scanf("%d",&n);
    s=n;
    while(scanf("%s",str)!=EOF)
    {
        n=s;
        for(i=0;i<strlen(str);i++)
        {
            if(str[i]=='A')n=n+5;
            else if(str[i]=='B')n=n/2;
            else if(str[i]=='C')n=n-4;
            else if(str[i]=='D')n=n*3;
        }
        printf("%d\n",n);
    }

    return 0;
}

参考答案(时间最优[0]):


#include <iostream>
using namespace std;
int equipment(char connstr[],int value)
{
    char ch;
    int i=0;
    while((ch=connstr[i])!='\0')
    {
        switch(ch)
        {
        case 'A':
            value+=5;
            break;
        case 'B':
            value/=2;
            break;
        case 'C':
            value-=4;
            break;
        case 'D':
            value*=3;
        }
        i++;
    }
    return value;
}


int main()
{
    char connstr[100];
    int result,value;
    cin>>value;
    cin.getline(connstr,100);
    while(cin.getline(connstr,100))
    {
        result = equipment(connstr,value);
        cout<<result<<endl;
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注