C++第七次作业

本文通过四个实例展示了使用C++进行数组操作及算法实现的方法,包括素数排序、杨辉三角生成、数组统计分析以及奇偶阶乘计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目1:数组素数排序

#include <iostream>  
using namespace std;  
  
void sort(int p[], int n);  
bool prime(int x);  
void print(int p[], int n);  
  
int main() {  
    int a[10] = {2, 13, 5, 47, 19, 53, 27, 23, 28, 11};  
    int b[10];  
    int j = 0;  
    for (int i=0; i<10; i++) {  
        if(prime(a[i]))  
           b[j++] = a[i];  
    }  
    print(b, j);  
    sort(b, j);  
    print(b, j);  
    return 0;  
}  
  
bool prime(int x) {  
    if(x == 1)  
        return 0;  
    for (int i=2; i<x; i++) {  
        if(x%i == 0)  
            return 0;  
    }  
    return 1;  
}  
  
void sort(int p[], int n) {  
    for (int i=0; i<n; i++) {  
        for (int j=i+1; j<n; j++) {  
            if(p[j]<p[i]) {  
                int t = p[j];  
                p[j] = p[i];  
                p[i] = t;  
            }  
        }  
    }  
}  
  
void print(int p[], int n) {  
    for (int i=0; i<n; i++)  
        cout << p[i] << ' ';  
    cout << endl;  
}  

二、杨辉三角

#include <iostream>  
using namespace std;  
  
void YHtri(int n);  
  
int main() {  
    int n;  
    while (cin >> n) {  
        if(n == 0) break;  
        YHtri(n);  
    }  
    return 0;  
}  
  
void YHtri(int n) {  
    int a[100][100];  
    for (int i=0; i<n; i++) {  
        a[i][0] = 1;  
        a[i][i] = 1;  
    }  
    for (int i=2; i<n; i++) {  
        for (int j=1; j<n-1; j++) {  
            a[i][j] = a[i-1][j-1] + a[i-1][j];  
        }  
    }  
    for (int i=0; i<n; i++) {  
        for (int j=0; j<i+1; j++) {  
            cout << a[i][j] << '\t';  
        }  
        cout << endl;  
    }  
    cout << endl;  
}  

三、从有一个10个数的数组,求出这10个数的最大数、最小数和平均数,并统计出大于平均数的个数。

#include <iostream>  
using namespace std;  
  
double aver(int x[], int n, int &max, int &min);  
int count(int x[], int n, double score);  
  
int main() {  
    int x[10] = {4, 6, 8, 16, 19, 14, 5, 10, 1, 21};  
    int max, min, num;  
    double averscore;  
    averscore = aver(x, 10, max, min);  
    num = count(x, 10, averscore);  
    cout << "Max: " << max << ", Min: " << min << ", Average: " << averscore  
         << ", Counts: " << num << endl;  
    return 0;  
}  
  
double aver(int x[], int n, int &max, int &min) {  
    max = min = x[0];  
    int s = x[0];  
    for (int i=1; i<n; i++) {  
        if(x[i] > max)  
            max = x[i];  
        if(x[i] < min)  
            min = x[i];  
        s += x[i];  
    }  
    return s * 1.0/n;  
}  
  
int count(int x[], int n, double score) {  
    int count = 0;  
    for (int i=0; i<n; i++) {  
        if(x[i] > score)  
            count++;  
    }  
    return count;  
}  

四、奇偶阶乘

#include <iostream>  
using namespace std;  
  
bool odd(int n);  
int fac(int n);  
  
int main() {  
    int a[10] = {1, 2, 3, 4, 5, 5, 4, 3, 2, 1};  
    int s1,s2;  
    s1 = s2 = 0;  
    for (int i=0; i<10; i++) {  
        if(odd(a[i]))  
            s1 += fac(a[i]);  
        else  
            s2 += fac(a[i]);  
    }  
    cout << s1 << ' ' << s2 << endl;  
    return 0;  
}  
  
bool odd(int n) {  
    return n%2;  
}  
  
int fac(int n) {  
    int s = 1;  
    for (int i=n; i>0; i--) {  
        s *= i;  
    }  
    return s;  
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值