C++基础语法(循环

由 ssnhy13 发布

C++基础语法(循环)

作者:xinyi

第一题偶数

题目链接:https://www.acwing.com/problem/content/710/

#include <cstdio>

int main(){

    int i;
    i=1;
    while(i<=100){
        if(i%2==0) printf("%d\n",i);
        i++;

    }
    return 0;
}

第二题奇数

题目链接:https://www.acwing.com/problem/content/711/

#include <iostream>

using namespace std;

int main(){

    int x;
    cin >>x;
    for(int i=1;i<=x;i++){
        if (i%2)cout<<i<<endl;
    }

}

第三题正数

题目链接:https://www.acwing.com/problem/content/714/

#include <iostream>

using namespace std;

int main(){

    double x,sum;
    for(int i=0;i<6;i++){
    cin>>x;
    if(x>0) sum++;

    }
    cout <<sum<<" positive numbers"<<endl;
    return 0;

}

第四题连续奇数的和1

题目链接:https://www.acwing.com/problem/content/716/

#include <iostream>

using namespace std;

int main(){

    int x,y;
    int sum=141;
;

;

;

;

    if(x>y)swap(x,y);
    for (int i=x+1;i<y;i++){
        if(i%2) sum+=i;
    }cout <<sum<<endl;
    return 0;
}

第五题最大数和它的位置

题目链接:https://www.acwing.com/problem/content/718/

#include <iostream>

using namespace std;

int main(){

    int x=0,y,a;
    for(int i=1;i<=100;i++){
        cin >>a;
        if (a>x){
            x=a;
            y=i;
        }
    }
    cout <<x<<endl<<y<<endl;
    return 0;
}

第六题递增序列

题目链接:https://www.acwing.com/problem/content/723/

#include <iostream>

using namespace std;

int main(){

    int x;
    while(cin>>x){
        if(x==0)break;
        for(int i=1;i<=x;i++)
        cout<<i<<' ';
        cout<<endl;
    }
    return 0;
}

第七题连续整数的和

题目链接:https://www.acwing.com/problem/content/722/

#include <iostream>

using namespace std;

int main(){

    int a,n;
    cin>>a;
    while(cin>>n,n<=0);
    cout<<((a+a+n-1)*n)/2<<endl;
    return 0;
}

第八题约数

题目链接:https://www.acwing.com/problem/content/726/

#include <iostream>

using namespace std;

int main(){

    int a;
    cin >>a;
    int i=1;
    while(i<=a){
    if(a%i==0){
        cout<<i<<endl;
    } i++;  

    }
    return 0;
}

第九题PUM

题目链接:https://www.acwing.com/problem/content/725/

#include <iostream>

using namespace std;

int main(){

    int a,b;
    cin >>a>>b;
    for(int i=0,k=1;i<a;i++){
        for(int j=0;j<b-1;j++){
            cout<<k<<' ';
            k++;
        }
    cout<<"PUM"<<endl; 
        k++;
    } 
    return 0;
}

第十题六个奇数

题目链接:https://www.acwing.com/problem/content/712/

#include <iostream>

using namespace std;

int main(){

    int x;
    cin >>x;
    int n=6;
    while(n>0){
        if(x%2)
        {
        cout<<x<<endl;
        n--;

        }
         x++;
    }

    return 0;

}

第十一题余数

题目链接:https://www.acwing.com/problem/content/717/

#include <iostream>

using namespace std;

int main(){

    int n;
    cin >>n;
    for (int i=1;i<10000;i++){

        if(i%n==2)
        cout<<i<<endl;
    }

    return 0;

}

第十二题乘法表

题目链接:https://www.acwing.com/problem/content/713/

#include <iostream>

using namespace std;

int main(){

    int n;
    cin >>n;
    for (int i=1;i<=10;i++){

        cout <<i<<" x "<<n<<" = "<<i*n<<endl;

    }
    return 0;

}

这个题目一定要注意空格不然就不能ac会出现Presentation Error

第十三题实验

题目链接:https://www.acwing.com/problem/content/720

#include <iostream>
#include <cstdio>
using namespace std;

int main(){

    int n;
    cin>>n;
    int a;
    char t;
    int tz=0,ls=0,qw=0,sum=0;
    while(n--){

        cin >>a>>t;
        if(t=='C')tz+=a;
        else if (t=='R')ls+=a;
        else qw+=a;
        sum=tz+ls+qw;
    }
     printf("Total: %d animals\nTotal coneys: %d\n",sum,tz);
    printf("Total rats: %d\nTotal frogs: %d\n",ls,qw);
    printf("Percentage of coneys: %.2lf %\n",(double)tz/sum*100);
    printf("Percentage of rats: %.2lf %\n",(double)ls/sum*100);
    printf("Percentage of frogs: %.2lf %\n",(double)qw/sum*100);
    return 0;
}

第十四题区间2

题目链接:https://www.acwing.com/problem/content/715/

#include <iostream>

using namespace std;

int main(){

    int n;
    cin>>n;
    int t=0,y=0;
    while(n--){
        int x;
        cin>>x;
        if(x>=10&&x<=20)t++;
        else y++;

    }
    cout <<t<<" in"<<endl;
    cout<<y<<" out"<<endl;
    return 0;
}

第十五题连续奇数的和2

题目链接:https://www.acwing.com/problem/content/721/

#include <iostream>

using namespace std;

int main(){

    int n;
    cin>>n;
    int x,y;

    while(n--){
        int sum=0;
        cin>>x>>y;
        if(x>y)swap(x,y);
        for(int i=x+1;i<y;i++){
            if(i%2)sum+=i;

        }
        cout <<sum<<endl;
    }
    return 0;
}

第十六题简单的斐波那契

题目链接:https://www.acwing.com/problem/content/719/
这个题就是要用滚动第一次a1=0 b1=1 第二次a=1 b的结果是第一次的b=a1+b1以此类推;


#include <iostream>

using namespace std;

int main(){

    int n;
    cin>>n;
    int a=0,b=1,c=0;
    while(n--){
        cout<<a<<' ';
        c=a+b;
        a=b;
        b=c;
    }

    return 0;

}

第十七题数字序列和它的和

题目链接:https://www.acwing.com/problem/content/724/

#include <iostream>

using namespace std;

int main(){

    int m,n;

    while(cin>>m>>n,n>0&&m>0){
        int sum=0;
        if(m>n) swap(m,n);
        for(int i = m;i<=n;i++){
            cout<<i<<' ';
            sum+=i;
        }

        cout<<"Sum=" <<sum<<endl;
    }
    return 0;
}

第十八题完全数

题目链接:https://www.acwing.com/problem/content/727/
这个题目给的X的范围是1≤X≤10^8
然后查了一下在100000000只能内就几个完全数然后就很简单就可以写出这个题。

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    while (n--) {
        int x;
        cin >> x;
        if (x == 6 || x == 28 || x == 496 || x == 8128 || x == 33550336)  
            cout << x << " is perfect" << endl;
        else cout << x << " is not perfect" << endl;
    }

    return 0;
}

第二十题质数

题目链接:https://www.acwing.com/problem/content/728/
错误代码
这样写就会超时time limit exceeded要优化 一下解法

#include <iostream>

using namespace std;

int main(){

    int n;
    cin>>n;
    while(n--){
        bool i_p=true;
        int x;
        cin>>x;
        if(x==1) cout<<x<<" is not prime"<<endl;
        for(int i=2;i<x;i++){
            if(x%i==0){
                i_p=false;
                break;
            }
            else i_p =true;
        }
        if(i_p) cout <<x<<" is prime"<<endl;
        else cout <<x<<" is not prime"<<endl;
    }
    return 0;
}

优化解法
思考怎么优化

#include <iostream>

using namespace std;

int main(){

    int n;
    cin>>n;
    while(n--){
        bool i_p=true;
        int x;
        cin>>x;
        if(x==1) cout<<x<<" is not prime"<<endl;
        for(int i=2;i*i<=x;i++){
            if(x%i==0){
                i_p=false;
                break;
            }
            else i_p =true;
        }
        if(i_p) cout <<x<<" is prime"<<endl;
        else cout <<x<<" is not prime"<<endl;
    }
    return 0;
}

这样子就可以AC了。

第二十一题菱形

题目链接:https://www.acwing.com/problem/content/729/
这个题就要用到曼哈顿距离公式了


#include <iostream>

using namespace std;

int main(){

    int  n;
    cin >>n;
    int cx=n/2,cy=n/2 ;//确定中心点坐标
    for(int i=0;i<n;i++){
        for(int j=0;j<=n;j++){//这个j<=n和j<n都是可以AC的;

            if(abs(i-cx)+abs(j-cy)<=n/2) cout <<'*';
            else cout<<' ';
        }

        cout <<endl;
    }
        return 0;
    }

过几天继续数组的练习


0条评论

评论已关闭