Problem Description
读入N名学生的成绩,将获得某一给定分数的学生人数输出。
Input
测试输入包含若干测试用例,每个测试用例的格式为
第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
Output
对每个测试用例,将获得给定分数的学生人数输出。
Sample Input
3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0
Sample Output
1
0
2
#include <iostream> #include<algorithm>
#include<string.h> using namespace std; int main() { //bool pass = false; int N,ggrade,countG=0; int grade[100];
memset(grade,0,sizeof(grade)); cin >> N; for(int i=0;i<N;i++) cin >> grade[i]; cin >> ggrade; sort(grade,grade+N); for(int j=0;j<N;j++){ if(grade[j]<ggrade) continue; else if(grade[j]== ggrade){ //pass = true; countG++; continue; } else break; } //if(pass == true) cout << countG<<endl; //else // count << 0 << endl; return 0; }
发现写的方法和别人不一样。。。别人遍历或者用map写的。。。emmm呵呵了
其他两种写法看别人的例子吧:题目1018:统计同成绩学生人数
memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );
memset(结构体/数组名 , "用于替换的字符“ , 前n个字符 );
函数解释:将s中的前n个字节用ch替换并且返回s
函数作用:在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作,一般用在对定义的字符串进行初始化为‘0 ’或‘/0’。
例:char a[100];
memset(a, '/0', sizeof(a));
memset可以方便的清空一个结构类型的变量或数组。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量:
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是数组:
struct sample_struct TEST[10];
则
memset(TEST,0,sizeof(struct sample_struct)*10);