数组函数指针练习

1.编写一个函数 int Count ( double a [], int n ),统计出具有 n 个元素的一维数组中大于等于所有元素平均值的元素个数并返回这个值。注意:请使用 for 循环实现该函数。

#include<stdio.h>
int Count(double a[], int n)
{
    double sum = 0,b;
    int  sum1 = 0,i;
    for (i = 0; i < n; i++) //for (i = 0; i < =n; i++)错误,数组第一个是从0开始计数的
    {
        sum = sum + a[i];
    }
    b = sum / n;
    for (i = 0; i < n; i++)
    {
        if (a[i] >= b)
            sum1 = sum1 + 1;
        printf("%f\n",a[i]);
    }
    printf("大于等于所有元素平均值的元素个数为%d个", sum1);
    return 0;
}
int main()
{
    double a[4] = { 1,2,3,4 };
    Count(a, 4);
}

2.请编写一个函数 comm ( int n , int k ),用递归算法计算从 n 个人中选择 k 个人组成一个委员会的不同组合数,由 n 个人里选 k 个人的组合数=由( n -1)个人里选 k 个人的组合数+由( n -1)个人里选( k -1)个人的组合数。

#include<stdio.h>
#include <iostream>
using namespace std;
int comm(int n, int k)
{
    if (k > n)
        return 0;
    else if (n == k || k == 0)
        return 1;
    else
    {
        return comm(n - 1, k) + comm(n - 1, k - 1);
    }

int main()

{
    int n, k;
    cout << "请输入n和k的值(在n个人中选取k个):";
    cin >> n >> k;
    cout << "C(n,k)=" << comm(n, k) << endl;

    return 0;
}

3.将数组a[n]的每个元素依次循环向后移动一位

#include<iostream>
using namespace std;

int main()
{
    const int n = 10; // 数组大小
    int a[n] = { 1,2,3,4,5,6,7,8,9,10 }; // 初始化数组
    int temp = a[n - 1]; // 存储最后一个元素
    for (int i = n - 1; i >= 1; i--)
    {
        a[i] = a[i - 1];
    }
    a[0] = 0;
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << " "; // 输出移动后的数组元素
    }
    cout << endl;
    return 0;
}

 

4.给出年、月、日,计算该日是该年的第几天
#include <stdio.h>
int countday(int year, int month, int date);
int main()
{
    int year, month, date, sum;
    scanf_s("%d%d%d", &year, &month, &date);
    sum = countday(year, month, date);
    printf("%d", sum);
}

int countday(int year, int month, int date)
{
    int sum = 0, i;

    for (i = 1; i < month; i++)
    {
        if (i == 1 || (i == 3) || (i == 5) || (i == 7) || (i == 8) || (i == 10) || i == 12) {
            sum = sum + 31;
        }
        else if (i != 2) {
            sum = sum + 30;
        }
        else if (i == 2) 
        {
            if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0)) 
            {
                sum = sum + 29;
            }
            else 
            {
                sum = sum + 28;
            }
        }
    }
    sum = sum + date;
    return sum;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值