3.循环结构-习题
1.for循环求和
【题目描述】
利用for循环。计算输出1+2+3+...+n的和。
【输入】
输入n。
【输出】
如题述,之和。
【输入样例】
10
【输出样例】
55
【提示】
【数据规模及约定】
对于100%的数据,1≤n≤100。
{
int n,j=0;
cin>>n;
for(int i=1;i<=n;i++)
{
j+=i;
}
cout<<j;
}
2.输出偶数
【题目描述】
按照由小到大的顺序,输出1∼n之间的所有偶数。
【输入】
输入n。
【输出】
输出为一行,各个偶数之间用一个空格隔开。
【输入样例】
10
【输出样例】
2 4 6 8 10
【提示】
【数据规模及约定】
对于所有数据,1≤n≤100。
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
if(i%2==0)
{
cout<<i<<" ";
}
}
3.输出奇偶数之和
【题目描述】
利用for循环,分别输出1∼n之间的所有奇数的和、偶数的和。
【输入】
输入n。
【输出】
输出为一行,两个数(用一个空格隔开),偶数之和与奇数之和。
【输入样例】
10
【输出样例】
30 25
【提示】
【数据规模及约定】
对于所有数据,1≤n≤100。
int n,j=0,o=0;
cin>>n;
for(int i=1;i<=n;i++)
{
if(i%2==0)
{
o+=i;
}
else
{
j+=i;
}
}
cout<<o<<" "<<j;
4.求阶乘
【题目描述】
利用for循环求n!的值。
提示,n!=1×2×...×n。
【输入】
输入一个正整数n。
【输出】
输出n!的值。
【输入样例】
4
【输出样例】
24
【提示】
【数据规模及约定】
对于所有数据,1≤n≤20。
long int n,u=1;
cin>>n;
for(int i=1;i<=n;i++)
{
u*=i;
}
cout<<u;
5.求平均年龄
【题目描述】
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
【输入】
第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。
【输出】
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
【输入样例】
2
18
17
【输出样例】
17.50
int n;
cin>>n;
double a=0;
double s;
for(int i=1;i<=n;i++)
{
cin>>s;
a+=s;
}
printf("%.2lf",1.0*a/n);
6.均值
【题目描述】
给出一组样本数据,包含n个浮点数,计算其均值,精确到小数点后4位。
【输入】
输入有两行,第一行包含一个整数n(n小于100),代表样本容量;第二行包含n个绝对值不超过1000的浮点数,代表各个样本数据。
【输出】
输出一行,包含一个浮点数,表示均值,精确到小数点后4位。
【输入样例】
2
1.0 3.0
【输出样例】
2.0000
int n;
cin>>n;
double a=0;
double s;
double h;
for(int i=1;i<=n;i++)
{
cin>>s;
a+=s;
}
printf("%.4lf",a/n);
7.求整数的和与均值
【题目描述】
读入n(1≤n≤10000)个整数,求它们的和与均值。
【输入】
输入第一行是一个整数n,表示有n个整数。
第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。
【输出】
输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。
【输入样例】
4
344
222
343
222
【输出样例】
1131 282.75000
int n,b=0;
cin>>n;
double a=0;
double s;
double h;
for(int i=1;i<=n;i++)
{
cin>>s;
a+=s;
b+=s;
}
printf("%d ",b);
printf("%.5lf",a/n);
8.最高的分数
【题目描述】
孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?
【输入】
输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。
【输出】
输出一个整数,即最高的成绩。
【输入样例】
5
85 78 90 99 60
【输出样例】
99
int n; //数字总数
cin>>n;
int sz=0;//存放每次输入的数字
int d=0; //存放最大值
for(int i=1;i<=n;i++)//重复输入n次
{
cin>>sz;//输入第二行的数字
if(d<sz)//判断新输入的值,是否比默认的值大
{
d=sz;
}
}
cout<<d;
9.最大跨度值
【题目描述】
给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。
【输入】
一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。
【输出】
输出一行,表示序列的最大跨度值。
【输入样例】
6
3 0 8 7 5 9
【输出样例】
9
int n; //数字总数
cin>>n;
int sz=0; //存放每次输入的数字
int x=1000; //存放最小值
int d=0; //存放最大值
for(int i=1;i<=n;i++) //重复输入n次
{
cin>>sz; //输入第二行的数字
if(sz>d) //判断新输入的值,是否比默认的值大
{
d=sz;
}
if(sz<x) //判断新输入的值,是否比默认的值小
{
x=sz;
}
}
cout<<d-x;
10.奥运奖牌计数
【题目描述】
2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目。输出4个整数,为A国所获得的金、银、铜牌总数及总奖牌数。
【输入】
输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。
【输出】
输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。
【输入样例】
3
1 0 3
3 1 0
0 3 0
【输出样例】
4 4 3 11
int n,jp=0,yp=0,tp=0;
int a,b,c;
cin>>n;
for (int i=1,x,y,z; i<=n; i++)
{
cin>>x>>y>>z;
jp += x;
yp += y;
tp += z;
}
cout<<jp<<" "<<yp<<" "<<tp<<" "<<jp+yp+tp<<endl;
11.奇数求和
【题目描述】
计算非负整数m到n(包括m和n)之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3,n=12, 其和则为:3+5+7+9+11=35。
【输入】
两个数 m 和 n,两个数以一个空格分开,其中 0≤m≤n≤300 。
【输出】
输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和
【输入样例】
7 15
【输出样例】
55
int a,b;
int sum=0;
int i;
cin>>a>>b;
if(a%2==0) a++;
for(i=a;i<=b;i+=2)
sum+=i;
cout<<sum<<endl;
12.满足条件的数累加
【题目描述】
将正整数m和n之间(包括m和n)能被17整除的数累加,其中,0<m<n<1000。
【输入】
一行,包含两个整数m和n,其间,以一个空格间隔。
【输出】
输出一行,包行一个整数,表示累加的结果。
【输入样例】
50 85
【输出样例】
204
int a,b;
int sum=0;
int i;
cin>>a>>b;
if(a%2==0) a++;
for(i=a;i<=b;i++)
if(i%17==0)
sum+=i;
cout<<sum<<endl;
13与指定数字相同的数的个数
【题目描述】
输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N<=100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N个数中与m相同的数的个数。
【输入】
第1行为N和m,表示整数序列的长度(N<=100)和指定的数字, 中间用一个空格分开;
第2行为N个整数,整数之间以一个空格分开。
【输出】
输出为N个数中与m相同的数的个数。
【输入样例】
3 2
2 3 2
【输出样例】
2
int n,m,c,s;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>s;
if(s==m)
{
c++;
}
}
cout<<c<<endl;
14.人口增长
【题目描述】
我国现有x亿人口,按照每年0.1%的增长速度,n年后将有多少人?保留小数点后四位。
【输入】
一行,包含两个整数x和n,分别是人口基数和年数,以单个空格分隔。
【输出】
输出最后的人口数,以亿为单位,保留到小数点后四位。1<=x<=100,1<=n<=100。
【输入样例】
13 10
【输出样例】
13.1306
double x,n;
int i;
cin>>x>>n;
for(int i=1;i<=n;i++)
{
x=x*1.001;
}
printf("%.4lf\n",x);
15.菲波那契数
【题目描述】
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
【输入】
输入一行,包含一个正整数k。(1 ≤ k ≤ 46)
【输出】
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。
【输入样例】
19
【输出样例】
4181
int k,a=1,b=1,c=1,i;
cin>>k;
for(int i=3;i<=k;i++)
{
c=a+b;
a=b;
b=c;
}
printf("%d",c);
16.鸡尾酒疗法
【题目描述】
鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。
【输入】
第一行为整数n(1<n<=20);其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。
【输出】
有n-1行输出,分别表示对应改进疗法的效果:如果效果更好,输出better;如果效果更差,输出worse;否则输出same。
【输入样例】
5
125 99
112 89
145 99
99 97
123 98
【输出样例】
same
worse
better
same
int n,t,e;
cin>>n;
cin>>t>>e;
double x=(double)e/t,y;
for(int i=1;i<n;i++)
{
cin>>t>>e;
y=(double)e/t;
if(y-x > 0.05)
cout<<"better"<<endl;
else if (x-y > 0.05)
cout<<"worse"<<endl;
else
cout<<"same"<<endl;
}
17.药房管理
【题目描述】
随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
【输入】
共3行,第一行是每天开始时的药品总量m。
第二行是这一天取药的人数n(0<n<=100)。
第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序)。
【输出】
只有1行,为这一天没有取上药品的人数。
【输入样例】
30
6
10 5 20 6 7 8
【输出样例】
2
int n,m,sl,mqs=0;
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>sl;
if(m>=sl)
{
m-=sl;
}
else
{
mqs+=1;
}
}
cout<<mqs;
18.正常血压
【题目描述】
监护室每小时测量一次病人的血压,若收缩压在90-140之间并且舒张压在60-90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。
【输入】
第一行为一个正整数n(n<100),其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压。
【输出】
输出仅一行,血压连续正常的最长小时数。
【输入样例】
4
100 80
90 50
120 60
140 90
【输出样例】
2
int n;
scanf("%d",&n);
int a,b,c=0,d=0;
for(int i=0;i<n;i++)
{
scanf("%d %d",&a,&b);
if(a>=90 && a<=140 && b>=60 && b<=90)
{
c++;
if(d<c)
{
d=c;
}
}
else
{
c=0;
}
}
printf("%d",d);
19.统计满足条件的4位数
【题目描述】
给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。
【输入】
输入为两行,第一行为四位数的个数n,第二行为n个的四位数。(n<=100)
【输出】
输出为一行,包含一个整数,表示满足条件的四位数的个数。
【输入样例】
5
1234 1349 6119 2123 5017
【输出样例】
3
int n;
cin>>n;
int tot=0;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
if((a%10-((a/1000)%10)-((a/100)%10)-((a/10)%10))>0)
tot++;
}
cout<<tot;
20.余数相同问题
【题目描述】
已知三个正整数a,b,c。现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。
请问满足上述条件的x的最小值是多少?数据保证x有解。
【输入】
一行,三个不大于1000000的正整数a,b,c,两个整数之间用一个空格隔开。
【输出】
一个整数,即满足条件的x的最小值。
【输入样例】
300 262 205
【输出样例】
19
int a,b,c;
cin>>a>>b>>c;
for(int i=2;i<=a;i++)
{
if(a%i==b%i && b%i==c%i)
{
cout<<i;
break;
}
}
21.分苹果
【题目描述】
把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?
【输入】
一个不大于1000的正整数n,代表小朋友人数。
【输出】
一个整数,表示满足条件的最少苹果个数。
【输入样例】
8
【输出样例】
36
int n,a=0;
cin>>n;
for(int i=1;i<=n;i++)
{
a+=i;
}
cout<<a;
22.第几项
【题目描述】
对于正整数n,m
,求s=1+2+3……+n
,当加到第几项时,s
的值会超过m
?
【输入】
输入m
。
【输出】
输出n
。
【输入样例】
1000
【输出样例】
45
int i,x=0,d=1000;
float p=0,g=0;
while (scanf("%d",&i)==1)
{
p+=1;
g+=i;
if(x<i)
{
x=i;
}
if(d>i)
{
d=i;
}
}
printf("%d %d %.3f",d,x,g/p);
24.球弹跳高度的计算
【题目描述】
一球从某一高度h
ℎ
落下(单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10
10
次落地时,共经过多少米? 第10
10
次反弹多高?
输出包含两行,第1行:到球第10
10
次落地时,一共经过的米数。第2行:第10
10
次弹跳的高度。
【输入】
输入一个整数h
ℎ
,表示球的初始高度。
【输出】
第1行:到球第10
10
次落地时,一共经过的米数。
第2行:第10
10
次弹跳的高度。
注意:结果可能是实数,结果用double类型保存。
提示:输出时不需要对精度特殊控制,用cout << ANSWER,或者printf("\%g",ANSWER)即可。
【输入样例】
20
【输出样例】
59.9219
0.0195312
int i=1;
double h,w=0,j=0;
cin>>h;
w=h;
do
{
j+=h;
h=h/2;
i++;
}while(i<=10);
cout<<j*2-w<<endl<<h;
25角谷猜想
【题目描述】
谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3
加1
,如果是偶数,则除以2
,得到的结果再按照上述规则重复处理,最终总能够得到1
。如,假定初始整数为5
,计算过程分别为16
、8
、4
、2
、1
。程序要求输入一个整数,将经过处理得到1
的过程输出来。
【输入】
一个正整数n
(n≤2,000,000
)。
【输出】
从输入整数到1
的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1
,直接输出"End"。
【输入样例】
5
【输出样例】
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
int n;
cin>>n;
if(n==1)
{
cout<<"End";
}
else
{
do
{
if(n%2==0)
{
printf("%d/2=%d \n",n,n/2);
n=n/2;
}
else if(n%2==1)
{
printf("%d*3+1=%d \n",n,n*3+1);
n=n*3+1;
}
}while(n>1);
}
cout<<"End";
26.级数求和
【题目描述】
已知:Sn=1+12+13+…+1n
。显然对于任意一个整数k
,当n
足够大的时候,Sn
大于k
。现给出一个整数k(1<=k<=15)
,要求计算出一个最小的n
,使得Sn>k
。
【输入】
一个整数k
。
【输出】
一个整数n
。
【输入样例】
1
【输出样例】
2
int k,i=1;
double n=0;
cin>>k;
do
{
n+=1.0/i;
i++;
}while(k>=n);
cout<<i-1;
27.分离整数的各个数
【题目描述】
给定一个整数n(1≤n≤100000000)
,要求从个位开始分离出它的每一位数字。从个位开始按照从低位到高位的顺序依次输出每一位数字。
【输入】
输入一个整数,整数在1
到100000000
之间。
【输出】
从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。
【输入样例】
123
【输出样例】
3 2 1
int a,j=0;
cin>>a;
do
{
j=j*10+a%10;
a/=10;
}while(a);
cout<<j;
29.含k个3的数
【题目描述】
输入两个正整数m和k,其中1<m<100000,1<k<5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。 例如,输入:43833 3,满足条件,输出YES。如果输入:39331 3,尽管有3个3,但不能被19整除,也不满足条件,应输出NO。
【输入】
m 和 k 的值,中间用单个空格间隔。
【输出】
满足条件时输出 YES,不满足时输出 NO。
【输入样例】
43833 3
【输出样例】
YES
int n,k,sum=0;
cin>>n>>k;
if(n%19==0)
{
do
{
if(n%10==3)
{
sum++;
}
n/=10;
}while(n);
if(sum==k)
{
cout<<"YES";
}
else
{
cout<<"NO";
}
}
else
{
cout<<"NO";
}
30.末两位数
【题目描述】
求n
个1992
的乘积的末两位数是多少?
【输入】
输入n
。
【输出】
如题述的末两位数。
【输入样例】
3
【输出样例】
88
int n=1;
do
{
if(n%2==1 && n%3==1 && n%4==1 && n%5==1 && n%6==1 && n%7==0)
{
cout<<n;
break;
}
n++;
}while(n);
标签:输出,10,int,样例,cin,循环,习题,输入,结构
From: https://www.cnblogs.com/jsc2014/p/17587217.html