c++经典算法(6)

文章展示了C++编程中的基本操作,包括计算五人平均身高、使用数组存储数据、生成数字三角形、处理成绩、插入排序、素数筛选、字符串相似度计算以及登录验证,还涉及统计1-2019中9的出现次数。
摘要由CSDN通过智能技术生成

1、求出五个人的平均身高

int main(){
    float h = 0.0;
    float sum = 0.0;
    for(int i=0;i<5;i++){
        cin>>h;
        sum+=h;
    }
    printf("%.2f",sum/5);
    return 0;
}

方法2(用数组存起来)

int main(){
    float h[5] = {0};
    float sum = 0.0;
    for(int i=0;i<5;i++){
        cin>>h[i];
        //cout<<h[i]<<" ";
    }
      for(int i=0;i<5;i++){
            sum+=h[i];
    }
    printf("%.2f",sum/5);
  

2、数字组成的三角形

int main(){
    int n = 0;
    while(cin>>n){
        int i = 0;
        int j = 0;
        for(i=1;i<=n;i++){
            for(j=1;j<=i;j++){
                cout<<j;
            }cout<<endl;
        }
    }
    return 0;
}
5
1
12
123
1234
12345

3、去掉最高分和最低分输出平均成绩

int main(){
    int score = 0;
    float sum = 0.0;
    int Max = 0;
    int Min = 100;//注意最低分的初始值设置位最大
    for(int i=0;i<7;i++){
        cin>>score;
        sum+=score;
        if(score>Max) Max = score;
        if(score<Min) Min = score;
    }
    printf("%.2f",(sum-Max-Min)/5);
    return 0;
}
99 45 78 67 72 88 60
73.00

4、有序序列,插入新数保证仍然有序。

int main(){
    //输入个数
    int n = 0;
    cin>>n;
    //输入n个数值
    int arr[51] = {0};
    int i = 0;
    for(i=0;i<n;i++){
        cin>>arr[i];
    }
    //输入要插入的数字
    int newnum = 0;
    cin>>newnum;

    //插入算法
    //从后往前找插入位置,方便移动元素
    for (i=n-1;i>=0;i--){
        if(arr[i]>newnum) {
                arr[i+1]=arr[i];
                arr[i]=newnum;
        }
        else{
            arr[i+1]=newnum;
            break;
        }

    }
     for(i=0;i<n+1;i++){
        cout<<arr[i]<<" ";
    }
    return 0;
}
5
1 6 9 22 30
8
1 6 8 9 22 30

5、筛选法找出素数

int main(){
    int n = 0;
    while(cin>>n){
        //int arr[n+1];//变长数组
        int arr[101];//题目说n<=100;
        int i =0;
        for(int i=2;i<=n;i++){
            //存放数据
            arr[i]=i;
        }
        //列举所有的除数
        int j = 0;
        //j从2开始
        for(j=2;j<=n;j++){
            int k = 0;
            //k从j的后一位开始即3,依次来模j即2
            for(k=j+1;k<=n;k++){
                if(arr[k]%j==0){
                    arr[k]=0;
                }
            }//一次循环之后将能被2整除的全部置为0;后面依次3、4、5....
        }
        int cnt = 0;
        for(i=2;i<n;i++){
            if(arr[i]!=0) cout<<arr[i]<<" ";
            else cnt++;
        }cout<<endl;
        cout<<cnt<<endl;
    }
    return 0;
}
20
2 3 5 7 11 13 17 19
10

5(2)不用数组

int main(){
    int n = 0;
    while(cin>>n){
        int i = 0;
        int j = 0;
        int cnt = 0;
        for(i=2;i<=n;i++){
            for(j=2;j<i;j++){
                //不是素数
                if(i%j==0) {
                    cnt++;
                    break;//一旦不是素数马上跳出循环
                }
            }
            //内循环完一次没有找到可整除的即位素数
            if(i==j){
                cout<<i<<" ";
            }

        }cout<<endl;
        cout<<cnt<<endl;
    }

    return 0;
}
20
2 3 5 7 11 13 17 19
11

6、相似度

//相似度
int main(){
    int m = 0;
    int n = 0;
    int arr1[100][100] = {0};
    int arr2[100][100] = {0};
    int cnt = 0;

    cin>>m>>n;
    int i = 0;
    int j = 0;
    //打印第一个图形
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            cin>>arr1[i][j];
        }
    }
    //打印第er个图形
     for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            cin>>arr2[i][j];
        }
    }

    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(arr1[i][j]==arr2[i][j])
                cnt++;
        }
    }
    printf("%.2lf\n",100.0*cnt/(m*n));

    return 0;
}

7、验证登录

int main(){
    char name[100] = {0};
    char password[100] ={0};

    while(cin>>name>>password){
        //strcmp字符串比较函数,返回整型<0说明字符串1小于字符串2;=0说明相同
        if((strcmp(name,"admin")==0)&&(strcmp(password,"123456")==0))
            cout<<"Login"<<endl;
        else cout<<"Error"<<endl;

    }

    return 0;
}

8、1-2019包含多少个9

int main(){
    int i =0;
    int cnt = 0;
    for(i=0;i<2019;i++){
        //一次判断各个位是否有9
        int m = i;

        while(m){
           //个位
          if(m%10==9){
             cnt++;
             break;
          }m/=10;
        }
    }
    cout<<cnt<<endl;
    return 0;
}
543

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值