gpt4 book ai didi

c++ - 添加新阵列会改变以前的阵列吗?

转载 作者:行者123 更新时间:2023-11-30 02:16:41 25 4
gpt4 key购买 nike

我正在尝试制作一个询问用户姓名的程序,然后重复它,说出姓名中有多少个字母,姓名的第一个字母,以及姓名中的第一个字母在字母表中的什么位置。到目前为止我有这个,但是当我引入新的 char alpha 时,char 名称被更改,即。 name[0] 自动变为 alpha[0],或 a.我该如何解决这个问题?

#include <iostream>

int main()
{
char name[30];
int y;

std::cout << "What is your name? \n";
std::cin >> name;

char p;
int z=0;

for (int i= 0; p = name[i], p != '\0'; i++)
{
std::cout << "Calculating... \n";
z = i+ 1;
}

std::cout << "Your name is " << name << '\n';
std::cout << "You have " << z << " letters in your name \n";
std::cout << "The first letter of your name is " << name[0] << '\n';

char alpha[] = "abcdefghijklmnopqrstuvwxyz";

if (name[0] = alpha[0])
{
y = 1;
}
else
for (y = 1 ; name[0] != alpha[y]; y++)
{
}

std::cout << name[0] << " is the " << y << " letter of the alphabet \n";

return 0;
}

最佳答案

我推荐使用 std::string 类,您可以使用它的成员,例如 std::string::length() 来检索字符串的长度字符串(字符数)。此外,您不需要将字母表存储在字符数组中,而是使用 isalphatoupper...

这是一个例子:

std::string name;
std::cout << "name: ";
std::cin >> name;

std::cout << "Your name is: " << name << std::endl;
std::cout << "The first letter in your name is: " << name[0] << std::endl;
std::cout << "The index of the first letter in your name is: " << (int)( toupper(name[0]) - 'A' + 1 ) << std::endl;
std::cout << "There are " << name.length() << " letters in your name" << std::endl;

您可能认为这有点复杂 (int)( toupper(name[0]) - 'A' + 1 ) 但它是这样工作的:

  • 用户可能会输入小写字母或大写字母,所以我不在乎,所以我将其转换为大写字母,例如 a 变为 A 所以我减去 A 来自实际字母并加 1 以获得其在字母表中的索引。例如:如果用户输入 hellotoupperh 变为 H 然后是 H - A 给出了字母表中字母的索引,但索引为 0,所以我加 1。因此 A 是 1 而不是 0 而 H 是8 而不是 7...

关于c++ - 添加新阵列会改变以前的阵列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54560100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com