这是我的代码。我希望能够输入九个考试成绩,然后让程序对分数进行排序并按降序显示。但是当我输入考试成绩时,例如65,它只输出'6'而不是'65'。我做错了什么?
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
string tests;
double i;
double j;
std::string person;
cout << "Please enter your name" << endl;
getline( std::cin, person );
for (i = 0; i < 9; i++)
{
cout << "Enter the grade you received for exam ";
cout << i + 1;
cout << " ";
cin >> tests[i];
cin.get();
}
for (i = 0; i <= 8; i++)
{
for (j = i +1; j < 9; j++)
{
double temp;
if (tests[i] < tests[j])
{
temp = tests[i];
tests[i] = tests[j];
tests[j] = temp;
}
}
}
for (j = 0; j < 9; j++)
{
cout << tests[j] << endl;
}
return 0;
}
答案 0 :(得分:0)
您的代码的主要问题是您将用户输入转换为字符串。
string是一个几乎的类,相当于char类型的数组,因此调用string tests
几乎相当于调用{{ 1}},因此当您输出文本[ x ]时,您输出的是一个字符,其字符串数组中的位置为 x 。
更好的做法是使用 int 类型的数组:
char tests[]
或者如果你的数组需要一个可变长度,你可以使用std :: array,std :: vector或动态数组。