帮忙改错,谢谢
题目描述:
读入N名学生的成绩,将获得某一给定分数的学生人数输出。
输入:
测试输入包含若干测试用例,每个测试用例的格式为
第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
输出:
对每个测试用例,将获得给定分数的学生人数输出。
以下代码总是WA,那个地方错了呢[b][/b]#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
int n,p;
vector<int> v;
while(cin>>n)
{
if(n==0)break;// 是0就结束
else
{
for(int i=0;i<n;i++)
{
cin>>p;
v.push_back(p);
}
int m,k=0;//m表示分数,k表示个数
cin>>m;
for(int j=0;j<n;j++)
{
if(v[j]==m)k++;//统计个数
}
cout<<k<<endl;
}
}
return 0;
}
[解决办法]
加1行,移1行.
- C/C++ code
#include <iostream> //加#include <vector>using namespace std;int main(int argc, char* argv[]){int n,p;//移到下面 vector<int> v;while(cin>>n){vector<int> v;if(n==0)break;// 是0就结束else{for(int i=0;i<n;i++){cin>>p;v.push_back(p);}int m,k=0;//m表示分数,k表示个数cin>>m;for(int j=0;j<n;j++){if(v[j]==m)k++;//统计个数}cout<<k<<endl;}}return 0;}
[解决办法]
while循环中vector<int> v需要清空,否则会累加原有的数据。
[解决办法]
4楼正解