1.编写一个函数int Count(double a[],int n),统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数并返回这个值。ps:使用for循环实现。
#include<stdio.h>
int Count(double a[], int n)
{
int j = 0, i;
double c, b = 0;
for (i = 0; i < n; i++)
{
b += a[i];
}
c = b / n;
for (i = 0; i < n; i++)
{
if (a[i] >= c)
{
j = j + 1;
}
}
return j;
}
int main()
{
double a[100];
int i, x;
printf("请输入x的值,x=");
scanf_s("%d", &x);
printf("\n请输入%d个数:", x);
for (i = 0; i < x; i++)
{
scanf_s("%lf", &a[i]);
}
printf("\n这组数中大于等于所有元素平均值的元素个数为%d\n", Count(a, x));
return 0;
}
2.编写一个函数comm(int n,int k),用递归算法计算从n个人中选择k个人组成一个委员会的不同组合数,由n个人里挑选k个人的组合数=由(n-1)个人里选k个人的组合数+由(n-1)个人里选(k-1)个人的组合数。
#include <stdio.h>
int comm(int n, int k)
{
if (k > n)
return 0;
else if (k == n || k == 0)
return 1;
else
return comm(n - 1, k) + comm(n - 1, k - 1);
}
int main()
{
int n, k,c;
printf("请输入n和k的值(在n个人中选取k个):");
scanf_s("%d%d", &n, &k);
c = comm(n, k);
printf("%d",c);
return 0;
}
3.将数组a[n]中每一个元素依次循环向后移动一位。
#include<stdio.h>
int main()
{
int a[10];
int i, j, n, m, b;
int* p;
printf("输入共有几个数字");
scanf_s("%d", &n);
printf("需要后移几位");
scanf_s("%d", &m);
printf("依次输入%d个数\n", n);
for (i = 0; i < n; i++)
scanf_s("%d", &a[i]);
for (i = 0; i < m; i++)
{
b = *(a + n - 1);
p = a + n - 1;
for (j = n - 1; j > 0; j--)
{
*p = *(p - 1);
p--;
}
*p = b;
}
printf("输出移动后的数");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
4.编写函数,给出年,月,日后,求该日是该年的第几天。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int Data(int year, int month, int day);
int main()
{
int year, month, day;
printf("请输入年月日:\n");
scanf_s("%d %d %d", &year, &month, &day);
printf("这天是该年的第%d天\n", Data(year, month, day));
return 0;
}
int Data(int year, int month, int day)
{
int sum = 0, d;
for (int i = 1; i < month; i++)
{
switch (i)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
d = 31; break;
case 4: case 6: case 9: case 11:d = 30; break;
case 2: d = 28;
if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0))
d = 29;
}
sum += d;
}
sum += day;
return sum;
}