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;
}