1

在下面的代码中,我是否有可能接受多个输入,进行一些计算(如最后一个字符)并在最后打印..然后再次输入直到 5 次?

#include <iostream>
using namespace std;
int main ()
{
    char name;
    int i=0;
    while(i != 5){

        while(!(name != '<' || name != '>')){
            cin>>name;
            //do some calculation with the inputs
            //cout<<name;
        }
        i++;
        cout<<name;
        //print the result of calculation this loop
    }
}

出于某种原因,我不允许使用string, or array, or break, 以及除iostream. 是否可以使用循环?什么是替代品?

编辑::在上面的代码中,我想确定最后输入的内容。如果我输入asdf>然后我得到>>>>>。我希望它打印>并返回循环并要求我再拍一张。

4

3 回答 3

2

解决方案是在此行之前重置名称变量:

while (!(name != '<' || name != '>')) {

你需要做的是:

name = 0;

另外,我建议在进入第一个 while 循环之前初始化变量。

编辑:或者,您可以使用'\0'而不是 0. 不过内部没什么区别。该代码只会对大多数没有经验的用户更有意义。

于 2013-03-19T16:53:54.943 回答
2

在内部while终止之后name保持<or>并且在下次遇到内部之前不重置,内部while立即终止,name仍然是<or >name只需在内部while或轻微重组之前重置:

while (cin >> name && !(name != '<' || name != '>'))
{
}
于 2013-03-19T16:54:31.850 回答
1

看起来你想要一个指向字符的指针。这将表现得就像一个数组,实际上并不是一个数组,并且只需要#include <iostream>输入和输出。

char* name;

您也可以尝试使用字符向量,但这是很长的路要走,并且会打破“只有<iostream>规则:

#include <vector>
#include <iostream>

using namespace std;

vector<char> CharVec;
vector<char>::iterator it;

int main ()
{
    char input;
    int i=0;
    while(i != 5){
        if(input != '<'){ //this should be if, not while
            CharVec.push_back(input);
        }
        i++;
    }
    //move print to outside the character entering loop
    it = CharVec.begin();
    while(it != CharVec.end())
    {
        cout << *it;
        it++;
    }

}

于 2013-03-19T16:51:06.633 回答