【问题标题】:how to create a program to input name and exit another words using the words of the einput如何创建一个程序来输入名称并使用 einput 的单词退出另一个单词
【发布时间】:2014-11-17 23:30:18
【问题描述】:

示例 如果用户输入 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;
}

【问题讨论】:

  • 第一句话比我的报税更迷惑,我经营的是大型离岸业务。
  • 你想要更多的信息或者更清晰的解释或者你想要什么?
  • U cofuse me cuz U mix defn of word wit letr。 “立兰”是一个字。 “L”是一个字母。
  • @ThomasMatthews 恐怕 1337 还不足以让 OP 真正理解:P ...
  • 对 OP 的建议:下次您发布问题时,请让某人(朋友、同事,他们不知道您要做什么)先阅读您的文字。如果她理解你的帖子,你很可能会得到回复。如果您的问题只是不那么琐碎一点,那么几乎不可能理解这个问题。这次,请参阅下面的答案。

标签: c++ ascii


【解决方案1】:

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

#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 圈,然后环绕字母表末尾的值。

【讨论】:

    【解决方案2】:

    我想我理解了你的问题。让我知道这是否有帮助(解释如下):

    #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;
    }
    

    输入:

    hello
    

    输出:

    mjqqt
    

    说明: 我更改的唯一行是////// 标记的行。第一个使用来自cstringstrlen 函数(参见包含的标题)来获取字符串的长度。现在,对于第二个:在您的原始代码中,您实际上并没有向word[x] 添加任何内容,并且您在cout 语句中对int 进行了徒劳的转换。您将得到的只是与字符的 ASCII 代码相对应的数字。在上面的代码中,word[x]+shift 的结果被转换回char,所以打印的是一个实际的字符。

    注意事项: 请注意,我只进行了使您的程序正常运行所需的最小更改。您的代码中没有边界/溢出检查。如果char 溢出并且如果输入字符接近字母表末尾(或者甚至不那么接近,如果单词很长),您将不会得到字母数字输出,则会发生意想不到的事情。在这些情况下,您将不得不考虑您希望代码做什么。还可以考虑使用std::string 而不是char[](然后使用length() 成员函数而不是strlen)并且可能编写一个单独的函数来进行移位和处理特殊情况(环绕等)。

    【讨论】:

    • 没错,但我想让它计算 char word[20] 的单词数;并用数字 5 替换它,这将添加到 while 循环中的 cout
    猜你喜欢
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2021-02-28
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多