Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建一个程序,使用einput中的单词输入名称并退出另一个单词_C++_Ascii - Fatal编程技术网

C++ 如何创建一个程序,使用einput中的单词输入名称并退出另一个单词

C++ 如何创建一个程序,使用einput中的单词输入名称并退出另一个单词,c++,ascii,C++,Ascii,范例 如果用户输入lilian。。。在ascii中取第一个单词的L号,然后将该数字与名称中的所有单词相加,依此类推 实例 h=104 输入 你好 输出104+5。。。。e+5的数量等等 目标是从输入的单词中输出新的名称或单词 #include <iostream> using namespace std; int main() { char word[20] ; int x=0; cin>>word; while(word[x] != 0) { cout <

范例 如果用户输入lilian。。。在ascii中取第一个单词的L号,然后将该数字与名称中的所有单词相加,依此类推 实例 h=104 输入 你好 输出104+5。。。。e+5的数量等等

目标是从输入的单词中输出新的名称或单词

#include <iostream>
using namespace std;

int main()
{
char word[20] ;
int x=0;
cin>>word;
while(word[x] != 0)
{
    cout << int(word[x]) ;
    x++;

}

cout << "\n";
return 0;
}

我想我理解了你的问题。让我知道这是否有助于下面的解释:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
char word[20] ;
int x=0;

cin>>word;

size_t shift=strlen(word); //////

while(word[x] != 0)
{
    cout << char(word[x]+shift) ; //////
    x++;

}

cout << "\n";
return 0;
}
输出:

mjqqt
说明: 我唯一更改的行是由//标记的行。第一个使用cstring see included头中的strlen函数来获取字符串的长度。现在,对于第二个:在您的原始代码中,您实际上没有向word[x]添加任何内容,并且在cout语句中对int进行了无效的转换。您将得到的只是与字符的ASCII码对应的数字。在上面的代码中,单词[x]+shift的结果被转换回char,因此打印出一个实际字符

注意事项:
请注意,我只做了使您的程序工作所需的最小更改。代码中没有边界/溢出检查。如果字符溢出,则会发生意外情况,并且如果输入字符接近字母表的末尾,或者如果单词很长,则不会得到字母数字输出。您必须考虑在这些情况下希望代码做什么。还可以考虑使用STD::String代替Char [],然后使用String成员函数代替StrLin,或者编写一个单独的函数来进行移位,处理特殊情况下的包绕等。

让我们看看这是否符合您的要求:

#include <string>
#include <iostream>

int main(void)
{
  static const char letters[] =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz";
  std::string name;
  std::cout << "Enter name: ";
  std::cin >> name;
  std::string::size_type posn = 0;
  for (posn = 0; posn < name.length(); ++posn)
  {
    char c = name[posn];
    char offset_letter;
    if (c == std::toupper(c))
    {
      offset_letter = 'A';
    }
    else
    {
      offset_letter = 'a';
    }
    if (std::isalpha(c))
    {
      c = ((c - offset_letter) + 5) % 26; // 26 letters in alphabet.
      c += offset_letter;          
    }
    std::cout << c;
  }
  std::cout << "\n";
  return 0;
}

上述程序输入一个名称,将每个字母旋转5圈,并将超过字母末尾的值换行。

第一句话比我的纳税申报表更令人困惑,我经营着一家大型离岸企业。你想要更多信息或更清晰的解释,或者你想要什么?你和我一起使用,因为你用letr混合了单词的定义。“丽兰是一个词。”“L”是一封信。@ThomasMatthews我想这还不足以让OP理解事实上:P…OP的建议:下次你发帖时,让一个不知道你想做什么的朋友或同事先把你的文章读一遍。如果她理解你的帖子,你很可能会得到回复。如果你的问题不那么琐碎,那么你几乎不可能理解这个问题。这一次,请看下面我的答案。这是正确的,但我想让它计算字符单词[20]的数量;并将其替换为数字5,该数字将添加到cout in while循环中
#include <string>
#include <iostream>

int main(void)
{
  static const char letters[] =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz";
  std::string name;
  std::cout << "Enter name: ";
  std::cin >> name;
  std::string::size_type posn = 0;
  for (posn = 0; posn < name.length(); ++posn)
  {
    char c = name[posn];
    char offset_letter;
    if (c == std::toupper(c))
    {
      offset_letter = 'A';
    }
    else
    {
      offset_letter = 'a';
    }
    if (std::isalpha(c))
    {
      c = ((c - offset_letter) + 5) % 26; // 26 letters in alphabet.
      c += offset_letter;          
    }
    std::cout << c;
  }
  std::cout << "\n";
  return 0;
}