首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙改错,多谢

2012-03-25 
帮忙改错,谢谢题目描述:读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入:测试输入包含若干测试

帮忙改错,谢谢
题目描述: 
读入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楼正解

热点排行