题目描述
请编写函数tun。西数的功能是。统计各年龄段的人数。1个年秘通过调用淹机函数获得,并放在主面救的ke数组中,要求函数赶1至虫9乡年龄段的人敷放在d 01户中,把0至9岁年龄段的人数放1d门1中,把2.至沙岁年龄段社
人数放在
d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
#define N 50
#define M 11
void fun( int *a, int *b)
/不得改动此注释文字及位置,begein/
{
}
/不得改动此注释文字及位置,end/
double rnd()
{ static t=29,c=217,m=1024,r=0;
r=(rt+c)%m; return((double)r/m);
}
NONO(int d[M])
{
FILE wf ; int i ;
wf = fopen(“bc.out”, “w”) ;
for(i = 0 ; i < 10 ; i++) fprintf(wf, “%4d—%4d : %4d\n”, i10, i10+9, d[i]) ;
fprintf(wf, " Over 100 : %4d\n", d[10]) ;
fclose(wf) ;
}
main()
{ int age[N], i, d[M];
for(i=0; i<N;i++)age[i]=(int)(115rnd());
printf(“The original data :\n”);
for(i=0;i<N;i++) printf((i+1)%10==0?“%4d\n”:“%4d”,age[i]);
printf(“\n\n”);
fun( age, d);
for(i=0;i<10;i++)printf(“%4d—%4d : %4d\n”,i10,i*10+9,d[i]);
printf(" Over 100 : %4d\n",d[10]);
NONO(d);
}
”
题解
首先,我们需要理解程序的需求。这个程序的任务是统计年龄段,并将不同年龄段的人数存储在一个称为d的数组中。数组d具有11个元素,分别用于存储年龄段为0-9岁、10-19岁,一直到100岁及以上的人数。
接下来,我们需要在函数fun中实现这个任务。根据程序的要求,我们需要在函数的开头为数组d中的所有元素设置初始值为0。我们可以使用一个for循环来完成这个任务:
void fun(int *a, int *b) {
int i;
for (i = 0; i < M; i++) {
b[i] = 0;
}
// 统计年龄段的人数并将其存储在数组b中
// ...
}
接下来,我们需要统计每个年龄段的人数。根据程序的要求,我们需要将年龄为0-9岁的人数放入d[0],将年龄为10-19岁的人数放入d[1],以此类推,将年龄为100岁及以上的人数放入d[10]。我们可以使用一个for循环遍历数组a中的所有元素,并使用一系列if语句将它们分类到不同的年龄段中:
void fun(int *a, int *b) {
int i;
for (i = 0; i < M; i++) {
b[i] = 0;
}
for (i = 0; i < N; i++) {
if (a[i] < 10) {
b[0]++;
} else if (a[i] < 20) {
b[1]++;
} else if (a[i] < 30) {
b[2]++;
} else if (a[i] < 40) {
b[3]++;
} else if (a[i] < 50) {
b[4]++;
} else if (a[i] < 60) {
b[5]++;
} else if (a[i] < 70) {
b[6]++;
} else if (a[i] < 80) {
b[7]++;
} else if (a[i] < 90) {
b[8]++;
} else if (a[i] < 100) {
b[9]++;
} else {
b[10]++;
}
}
}
最后,我们需要在程序的主函数中调用函数fun,并输出数组d中的每个元素。根据程序要求,我们还需要使用一个称为NONO的函数将输出写入到文件“bc.out”中。我们可以使用以下代码来完成这些任务:
int main() {
int age[N], d[M], i;
for (i = 0; i < N; i++) {
age[i] = (int)(115 * rnd());
}
printf("The original data:\n");
for (i = 0; i < N; i++) {
printf((i + 1) % 10 == 0 ? "%4d\n" : "%4d", age[i]);
}
printf("\n\n");
fun(age, d);
for (i = 0; i < 10; i++) {
printf("%4d---%4d : %4d\n", i * 10, i * 10 + 9, d[i]);
}
printf(" Over 100 : %4d\n", d[10]);
NONO(d);
return 0;
}
标签:10,进阶,++,else,int,程序设计,4d,年龄段,试题
From: https://blog.51cto.com/u_16060410/6317792