C++day017(练习题)
习题1
输出一个整数序列中与指定数字相同的数的个数
输入包含2行:第1行为N和m,表示整数序列的长度(N≤100)和指定的数字, 中间用一个空格分开;第2行为N个整数,整数之间以一个空格分开。
#include<iostream>
using namespace std;
int main()
{
int N,m,x=0;
cin>>N>>m;//N表示整数序列长度,m表示指定数字
int a[N]={0} ;
for(int i=0;i<=N-1;i++)
{
cin>>a[i];
}
for(int i=0;i<=N;i++)
{
if(a[i]==m)
{
x+=1;
}
}
cout<<x;
return 0;
}
习题2
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
#include<iostream>
using namespace std;
int main()
{
//10个100到200之间的整数
int a[10]={0};
for(int i=0;i<=9;i++)
{
cin>>a[i];
}
//表示陶陶把手伸直的时候能够达到的最大高度。(100-120)
int h,sum=0;
cin>>h;
for(int i=0;i<10;i++)
{
if(a[i]<=h+30)
{
sum++;
}
}
cout<<sum;
return 0;
}
下面是一个图书的单价表:
1、计算概论 28.9 元/本
2、数据结构与算法 32.7 元/本
3、数字逻辑 45.6 元/本
4、C++程序设计教程 78 元/本
5、人工智能 35 元/本
6、计算机体系结构 86.2 元/本
7、编译原理 27.8 元/本
8、操作系统 43 元/本
9、计算机网络 56 元/本
10、JAVA程序设计 65 元/本
给定每种图书购买的数量,编程计算应付的总费用。
输入一行,包含 10 个整数(大于等于 0,小于等于 100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。
输出一行,包含一个浮点数 f,表示应付的总费用,精确到小数点后一位。
#include<iostream>
using namespace std;
int main()
{
//将10本图书价格放入数组中
double a[10]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65},sum=0;
int n;
for(int i=0;i<10;i++)
{
cin>>n;
sum+=a[i]*n;
}
printf("%.1lf",sum);
return 0;
}
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18岁、19-35岁、36-60岁、61以上(含61)四个年龄段统计的患病人数以及占总患病人数的比例。
输入:共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。
输出:按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病总人数以及人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。
#include<iostream>
using namespace std;
int main()
{
//过往病人的数目n(0 < n <= 100)
int n;
cin>>n;
double age[n]={0};
//每个病人患病时的年龄
double a,b,c,d;
for(int i=0;i<=n-1;i++)
{
cin>>age[i];
if(age[i]>0&&age[i]<=18)
a+=1;
if(age[i]>=19&&age[i]<=35)
b+=1;
if(age[i]>=36&&age[i]<=60)
c+=1;
if(age[i]>=61)
d+=1;
}
printf("%d %.2lf%%\n",a,a/n*100);
printf("%d %.2lf%%\n",b,b/n*100);
printf("%d %.2lf%%\n",c,c/n*100);
printf("%d %.2lf%%\n",d,d/n*100);
return 0;
}
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18岁、19-35岁、36-60岁、61以上(含61)四个年龄段统计的患病人数以及占总患病人数的比例。
输入:共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。
输出:按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病总人数以及人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。
#include <iostream>
using namespace std;
int main()
{
int l,m,i,q,s=0;
cin >> l >> m;
int a[2][m];
int b[l]={0};
for(i=0;i<m;i++)
{
for(q=0;q<=1;q++)
{
cin >> a[q][i];
}
}
for(i=0;i<m;i++)
{
for(q=a[0][i];q<=a[1][i];q++)
{
b[q]=-1;
}
}
for(i=0;i<l;i++)
{
s = b[i] + s;
}
cout << s + 2;
return 0;
}
N0I2005普及组
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都 是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的 位置;数轴上的每个整数点,即0,1,2,…,L都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表 示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。 现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些 树都移走后,马路上还有多少棵树。 比如:L=5,那么马路上默认有6棵树,分别种在0,1,2,3,4,5 这几个位置,现要求将 1~3 及2~4之间的树移走,那么需要移走4棵树,还剩2棵树。
解析:题目的核心就是一排树,从中选取一段通高铁,选取出来的树移走,剩下多少棵树
分析:
1、需要那些变量
l(总共树)、m(移走的树)、u、v
通过数组表示每个树a[10005]
2、如何实现数据的输入
l、m输入一次
u、v需要输入m次
3、怎么求解
a0-al先赋值为1,代表有树
au-av赋值为0,代表无树
a0-al遍历找1的值,统计剩下多少棵树
#include<iostream>
using namespace std;
int main()
{
int l,m,u,v,a[10005],sum=0;
cin>>l>>m;//l总共多少棵树,m需要挪走几个区域
//将每个树都赋值1
for(int i=0;i<=l;i++)
{
a[i]=1;
}
//m个区域,u代表起点,v代表终点,
for(int i=0;i<m;i++)
{
cin>>u>>v;//输入起点和终点
//挪走区域之间的树
for(int j=u;j<=v;j++)
{
a[j]=0;//代表树挪走了
}
}
//遍历还剩多少树
for(int i=0;i<=l;i++)
{
if(a[i]==1)
{
sum++;
}
}
cout<<sum;
return 0;
}
输入样例
500 3
150 300
100 200
470 471
输出样例
298
OJ题目
在线性代数、计算几何中,向量点积是一种十分重要的运算。
给定两个n维向量a=(a1,a2,…,an)和b=(b1,b2,…,bn),求点积a·b=a1b1+a2b2+…+anbn。
输入
第一行是一个整数n。1 <= n <= 1000。
第二行包含n个整数a1,a2,…,an。
第三行包含n个整数b1,b2,…,bn。
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。
输出
一个整数,即两个向量的点积结果。
解析:
#include<iostream>
using namespace std;
int main()
{
//定义数组
int n;
cin>>n;
int a[n],b[n];
//循环输入a数组
for(int i=0;i<n;i++)
{
cin>>a[i];
}
//循环输入b数组
for(int i=0;i<n;i++)
{
cin>>b[i];
}
//求和
int sum=0;
for(int i=0;i<n;i++)
{
sum=sum+a[i]*b[i];
}
cout<<sum;
return 0;
}
更多推荐


所有评论(0)