我正在尝试创建一个程序,要求一个类大小来定义程序要求测试分数的次数。
一旦得到它,它会使用for循环询问测试分数,直到达到班级大小
我想要做的是记录每个分数,以便最后可以公布,但我不知道如何在我正在使用的代码中记录每个单独的输入。我想让它运行如下:
输入分数:95
输入分数:25
原创得分:95,25
如果用户输入的班级大小为2.我该怎么做?也许有阵列,但我不知道如何加入这个?
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int size;
double score;
cout << "Enter class size <1-20> \n";
cin >> size;
for (int i = 0; 0 <= size; i++) {
cout << "Enter Score \n";
cin >> score;
}
return 0;
}
答案 0 :(得分:5)
在for
循环之前,实例化std::vector<double> scores(size);
。这就是你用来记录所有分数的方法。 (写#include <vector>
以引入此功能。)
然后在循环for (int i = 0; i < size; i++) {
中修复拼写错误。
然后将cin
调整为cin >> scores[i];
。 (难道C ++标准库不聪明吗?不要试图理解背后的机制 - 只是接受这种符号似乎是合理的。)
然后您可以通过std::vector
迭代来输出分数。本网站上有很多问题可以告诉你如何做到这一点。
(最后,您将使用std::size_t
作为矢量索引的类型,而不是int
。)
答案 1 :(得分:2)
您只需使用double
数组即可。这是代码段。
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int size;
double score[20]; // as size must me less than or equal 20
cout << "Enter class size <1-20> \n";
cin >> size;
for (int i = 0; i < size; i++) {
cout << "Enter Score \n";
cin >> score[i];
}
cout<<"Original Scores: ";
// Now iterate through all scores.
for(int i=0;i<size; i++){
if(i){
cout<<",";
}
cout<<score[i]
}
return 0;
}
注意:未选中得分大小(20)。
答案 2 :(得分:0)
使用range-for可以编写更紧凑的代码来读取值:
size_t sz;
std::cin >> sz;
std::vector<double> input(sz);
for(auto& el : input)
std::cin >> el;