C++ 如何创建一个程序,使用einput中的单词输入名称并退出另一个单词
范例 如果用户输入lilian。。。在ascii中取第一个单词的L号,然后将该数字与名称中的所有单词相加,依此类推 实例 h=104 输入 你好 输出104+5。。。。e+5的数量等等 目标是从输入的单词中输出新的名称或单词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 <
#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;
}