while循环

while循环的格式:

图片1.jpg

C++中for循环和while循环的区别

for循环一般应用于循环次数已知的情况;

while循环一般应用于循环次数未知的情况;

在一般情况下,这两者是可以相互转化的。

举一个简单较适合用for循环的例子:

    求1-100的和。

6.jpg

接下来再举一个适用于while循环的例子:

    求输入的一个整数各位数字之和。

    

    输入:

    一行一个整数

    输出:

    一个整数

    样例输入:

    2147483646

    样例输出:

    45

8.png

 

一尺之棰 查看测评数据信息

《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 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瓶可乐。

1.png

输入格式

一个正整数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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值