提交数:127712 通过数: 88967
【题目描述】
给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。
【输入】
输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。
【输出】
输出有三行,第一行为1出现的次数,第二行为5出现的次数,第三行为10出现的次数。
【输入样例】
5
1 5 8 10 5
【输出样例】
1
2
1
#include<bits/stdc++.h> using namespace std; int main(){ int m,n,a=0,b=0,t=0; cin>>n; for(int i=0;i<n;i++) { cin>>m; if(m==1) t++; if(m==5) a++; if(m==10) b++; } cout<<t<<endl; cout<<a<<endl; cout<<b<<endl; return 0; }
2.关系表达式的值为0或1,利用这一原理统计数字
#include<bits/stdc++.h> using namespace std; int main() { int k, a, s1 = 0, s5 = 0, s10 = 0;//s1,s5,s10分别保存1,5,10的个数 cin>>k; for(int i = 0; i < k; ++i) { cin>>a; s1 += a == 1;//先计算a==1,若a为1,该表达式值为1,s1增加1。否则a==1值为0,s1增加0。 s5 += a == 5; s10 += a == 10; } cout<<s1<<endl<<s5<<endl<<s10<<endl; return 0; }
3.(扩展)使用散列表
#include<bits/stdc++.h> using namespace std; int main() { int k, a, s[15]={};//s[1],s[5],s[10]分别保存1,5,10的个数,数组初始值都设为0 cin>>k; for(int i = 0; i < k; ++i) { cin>>a; s[a]++; } cout<<s[1]<<endl<<s[5]<<endl<<s[10]<<endl; return 0; }