C++ 字符串数组/字符数组
这就是我要做的: 一位老师要求所有的学生按照他们的名字排成一行。例如,在一节课上,艾米将排在队伍的最前面,尤兰达将排在队伍的最后。编写一个程序,提示用户输入课堂上的学生人数,然后循环读取这么多的名字。一旦所有的名字都读过了,报告哪个学生会在队伍的前面,哪个学生会在队伍的末尾。你可以假设没有两个学生有相同的名字。输入验证:不接受学生人数小于1或大于25的数字 这就是我到目前为止所做的:C++ 字符串数组/字符数组,c++,arrays,C++,Arrays,这就是我要做的: 一位老师要求所有的学生按照他们的名字排成一行。例如,在一节课上,艾米将排在队伍的最前面,尤兰达将排在队伍的最后。编写一个程序,提示用户输入课堂上的学生人数,然后循环读取这么多的名字。一旦所有的名字都读过了,报告哪个学生会在队伍的前面,哪个学生会在队伍的末尾。你可以假设没有两个学生有相同的名字。输入验证:不接受学生人数小于1或大于25的数字 这就是我到目前为止所做的: #include <iostream> #include <iomanip> #incl
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
int StudentNum;
cout << "How many student are in the class?\n";
cin >> StudentNum;
char sname[StudentNum + 1][25];
if (StudentNum < 1 || StudentNum > 25)
{
cout << "Please enter a number between 1-25 and try again\n";
return 0;
}
for (int i = 1; i <= StudentNum; i++);
{
cout << "Please enter the name of student #" << i << endl;
cin >> sname[i];
}
for (int output = 0; output <=StudentNum; output++);
{
cout << endl << sname[output] << endl;
}
system ("pause");
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int StudentNum;
cout>StudentNum;
charsname[StudentNum+1][25];
如果(StudentNum<1 | | StudentNum>25)
{
cout您无法创建这样的数组,因为它的长度必须在编译时已知(即,它不能是表达式的结果,例如StudentNum+1
)
您可以解决这个问题,因为根据问题定义,您知道数组大小的上限,因此可以将其用作编译时常量
但是,这个问题根本不需要使用数组就可以解决。请仔细阅读措辞
无阵列解决方案提示:将阵列视为一张纸(变量)所有的名字都是一个接一个地写的。不使用数组意味着你必须能够解决这个问题,而不需要同时查看所有的名字。如果我只允许你一个接一个地查看这些名字,你怎么会得到答案
另一个提示:如果班上有数万亿名学生(唯一的名字不少于数万亿),那么这个问题仍然可以解决,也就是说,任何时候计算机内存中可能容纳的学生都不多。你不能创建这样的数组,因为它的长度必须在编译时知道(即,它不能是表达式的结果,例如StudentNum+1
)
您可以解决这个问题,因为根据问题定义,您知道数组大小的上限,因此可以将其用作编译时常量
但是,这个问题根本不需要使用数组就可以解决。请仔细阅读措辞
无阵列解决方案提示:将阵列视为一张纸(变量)所有的名字都是一个接一个地写的。不使用数组意味着你必须能够解决这个问题,而不需要同时查看所有的名字。如果我只允许你一个接一个地查看这些名字,你怎么会得到答案
另一个提示:如果班上有数万亿名学生(唯一的名字不少于),这个问题仍然是可以解决的,也就是说,任何时候计算机内存中可能容纳的学生都不多。C++数组维度必须在编译时已知(即不依赖于运行时用户输入的变量)。请改用字符串:
string sname[25];
如果您使用的不仅仅是char
数组,还可以使用。C++数组维度必须在编译时已知(即不依赖于运行时用户输入的变量)。请改用字符串:
string sname[25];
如果您使用的不是字符数组,还可以使用。想想问题陈述的实际要求。您的程序只需要按字母顺序输出名字和姓氏。您真的需要存储所有的名字吗?想想问题陈述的实际要求是什么king for。你的程序只需要按字母顺序输出名字和姓氏。你真的需要存储所有的名字吗?只是为了好玩,我会这样做。除非你准备好向你的老师解释它是如何工作的,否则不要交这个
struct MinMax {
std::string min;
std::string max;
MinMax& operator+(const std::string& kid) {
if( min.empty() || kid < min) min = kid;
if( max.empty() || kid > max) max = kid;
return *this;
}
};
int main() {
int nKids;
std::cout << "How many students? " << std::flush;
std::cin >> nKids;
std::cout << "Enter students' names, followed by EOF\n";
MinMax mm(std::accumulate(
std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
MinMax()));
std::cout << mm.min << ", " << mm.max << "\n";
}
struct MinMax{
std::字符串最小值;
std::字符串最大值;
最小值和运算符+(常量标准::字符串和基德){
如果(最小值为空()| | kidmax)max=kid;
归还*这个;
}
};
int main(){
int-nKids;
std::cout-nKids;
std::cout只是为了好玩,我会这样做。除非你准备好向你的老师解释它是如何工作的,否则不要交这个
struct MinMax {
std::string min;
std::string max;
MinMax& operator+(const std::string& kid) {
if( min.empty() || kid < min) min = kid;
if( max.empty() || kid > max) max = kid;
return *this;
}
};
int main() {
int nKids;
std::cout << "How many students? " << std::flush;
std::cin >> nKids;
std::cout << "Enter students' names, followed by EOF\n";
MinMax mm(std::accumulate(
std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
MinMax()));
std::cout << mm.min << ", " << mm.max << "\n";
}
struct MinMax{
std::字符串最小值;
std::字符串最大值;
最小值和运算符+(常量标准::字符串和基德){
如果(最小值为空()| | kidmax)max=kid;
归还*这个;
}
};
int main(){
int-nKids;
std::cout-nKids;
std::cout那么,在不知道用户输入之前要存储的对象的实际数量的情况下,在变量中存储内容的最佳方法是什么?你必须给我一个提示。这个问题让我很生气哈哈……我知道我可以为所有25个名称创建变量,但我需要一个简单实用的方法way@JoshLake字体你为什么要把所有的数组中的e个名称?我不想先创建单独的变量,然后再执行一堆if语句。我也不想使用switch。@乔什莱克:这不是我问题的答案。我知道你为什么认为你需要数组。我想让你考虑一下。我想要的答案是“将所有学生的名字存储在数组中”.你为什么要存储所有的学生姓名?另外,请看我即将进行的更新。那么,在不知道用户输入之前要存储的对象的实际数量的情况下,在变量中存储某些内容的最佳方法是什么?你必须给我一个提示。这个问题让我非常生气哈哈…我知道我可以为所有25个n的对象创建变量但是我需要一个简单实用的way@JoshLake:为什么要将所有名称放在一个数组中?我不想创建单独的变量,然后执行一系列其他if语句。我也不想使用switch。@JoshLake:这不是我问题的答案。我知道你为什么认为需要数组。我想