while循环的格式:
C++中for循环和while循环的区别
for循环一般应用于循环次数已知的情况;
while循环一般应用于循环次数未知的情况;
在一般情况下,这两者是可以相互转化的。
举一个简单较适合用for循环的例子:
求1-100的和。
接下来再举一个适用于while循环的例子:
求输入的一个整数各位数字之和。
输入:
一行一个整数
输出:
一个整数
样例输入:
2147483646
样例输出:
45
一尺之棰 查看测评数据信息
《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a(a<=1000000000 ) 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍会变为 1?
输入格式
一个整数a,表示木棍的长度。
输出格式
一个整数n,表示到第n天的时候,木棍会变成的长度1。
输入/输出例子1
输入:
100
输出:
7
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
cin>>a;
b=1;
while(a!=1){
b++;
a=a/2;
}
cout<<b;
return 0;
}
累加 查看测评数据信息
读入一批数据,把它们累加起来,当结果超过100时退出循环并输出结果。
输入格式
两行。
第1行为n,表示输入的整数的个数。
第2行包含n个整数,整数之间使用空格隔开。
输出格式
输出结果。
输入/输出例子1
输入:
5
14 90 4 5 6
输出:
104
#include<bits/stdc++.h>
using namespace std;
int n,a,s=0;
int main(){
cin>>n;
while(s<=100){
cin>>a;
s=s+a;
}
cout<<s;
return 0;
}
天数 查看测评数据信息
某学习网站为了鼓励学员们每天登录学习,设定了登录奖励积分;如果是连续登录n天,第1天奖励1分,第二天奖励2分,第三天奖励3分……第n天奖励n分。如果中间有间断,那么下次登录又要从第一天开始重新计算。乐乐想尽快拿到m分以兑换礼物,请问:他至少要连续登录多少天?
输入格式
一个整数m,表示能兑换礼物的积分数。
输出格式
乐乐至少要连续登录的天数。
输入/输出例子1
输入:
667
输出:
37
#include<bits/stdc++.h>
using namespace std;
int n,s=0,i=0;
int main(){
cin>>n;
while(s<n){
i++;
s=s+i;
}
cout<<i;
return 0;
}
总分 查看测评数据信息
数学试卷发下来了,同学们都三五成群的在讨论着这次测验的成绩。小明想统计一下n位同学这次测验的数学总分。请你编写一个程序,帮助一下小明同学。要求是:从键盘输入n个同学的数学成绩,当输入0时,表示输入完毕,这时在屏幕显示这些同学的数学总分。
输入格式
输入n个数字,数字之间用空格隔开,最后一个数字是0。
输出格式
总分。
输入/输出例子1
输入:
80 90 99 0
输出:
269
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,s=0;
while(a!=0){
cin>>a;
s=s+a;
}
cout<<s;
return 0;
}
第几项 查看测评数据信息
对于正整数n,m,求s=1+2+3……+n,当加到第几项时,s的值会超过m?。
输入格式
一个数m
输出格式
一个数n
输入/输出例子1
输入:
499
输出:
32
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m=0,s=0;
cin>>n;
while(n>s){
m=m+1;
s=s+m;
}
cout<<m;
return 0;
}
恰好的值 查看测评数据信息
求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值。(2<=x<=10)
输入格式
输入只有一行,包括1个整数X
输出格式
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
输入/输出例子1
输入:
2
输出:
4
#include<bits/stdc++.h>
using namespace std;
int n,x;
double s;
int main(){
cin>>x;
n=0;
s=0;
while(s<=x){
n++;
s=s+1.0/n;
}
cout<<n;
return 0;
}
最小公倍数的简单方法 (课程A) 查看测评数据信息
输入2个2000以内的正整数a和b,找到最小的这样正整数X:X可以被a和b整除。
输入格式
一行2个正整数:a和b,范围在[1,2000]。
输出格式
一个正整数。
输入/输出例子1
输入:
4 6
输出:
12
#include<bits/stdc++.h>
using namespace std;
int a,b,t=1;
int main(){
cin>>a>>b;
while(t%a!=0||t%b!=0){
t++;
}
cout<<t;
return 0;
}
可口可乐 查看测评数据信息
便利店给出以下的优惠:“每3个空瓶可以换1瓶可⼝可乐。”
现在,您准备从便利店买⼀些可⼝可乐(N瓶),您想知道您最多可以从便利店拿到多少瓶可⼝可乐。下图给出N=8的情况。⽅法是:喝完8瓶可乐之后,您有8个空瓶;您⽤6只空瓶去换,得到了2瓶新的可⼝可乐;喝完后您有4个空瓶⼦,因此您⽤3个空瓶⼜换了⼀瓶新的可乐。最后,您⼿上有2只空瓶,所以您不能再去换到新的可乐了。因此,您⼀共获得8+2+1 =11瓶可乐。
输入格式
一个正整数N(N <= 30000)。
输出格式
一个正整数,表⽰您可以喝到的最多可乐,你不可以向别⼈借空瓶⼦。
输入/输出例子1
输入:
8
输出:
11
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s=0,t=0;
cin>>n;
while(n>0){
s+=n;
n+=t;
t=n%3;
n=n/3;
}
cout<<s;
return 0;
}
角谷猜想 查看测评数据信息
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。
输入格式
一个正整数N(N <= 2,000,000)。
输出格式
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
输入/输出例子1
输入:
5
输出:
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
while(n!=1){
if(n%2==0){
cout<<n<<"/2="<<n/2<<endl;
n=n/2;
}
else {
cout<<n<<"*3+1="<<n*3+1<<endl;
n=n*3+1;
}
}
cout<<"End";
return 0;
}