程序代码:
#include <stdio.h>
void f(int x[], int y[], int n, int m) {
int i, count = 0;
for(i = 0; i < n; i++)
if(x[i] > m) y[++count] = x[i];
y[0] = count;
}
int main() {
int a[10] = {156, 12, 89, 44, 38, 45, 31, 27, 55, 72}, b[11], i;
f(a, b, 10, 50);
for(i = 1; i < b[0]; i++)
printf("%-4d", b[i]);
printf("%d\n", b[b[0]]);
return 0;
}
看了你的代码,我心碎了一地,首先没有头文件....好吧,开始分析了
1.任何代码都是从main()开始的所以我们先从主函数开始吧
程序代码:
int main() {
int a[10] = {156, 12, 89, 44, 38, 45, 31, 27, 55, 72}, b[11], i;
......
.....
return 0;
}
这个就不解释了,数组的初始化和定义一个数组b,和变量i......你看看你的是什么,我不知道是谁教你那么写的
2.接着到了函数调用f(a, b, 10, 50);
里面是实参等下要进行参数的传递的....截下来看到调用的函数
程序代码:
void f(int x[], int y[], int n, int m) {
int i, count = 0;
for(i = 0; i < n; i++)
if(x[i] > m) y[++count] = x[i];
y[0] = count;
}
传递的参数是a,b数组和10(n),50(m)两个常量
用一个for循环将a数组的每个数与50做比较,如果>50,将值赋给数组b,让count的最终结果赋给y[0]即b[0]
3.最后看输出
for(i = 1; i < b[0]; i++)
printf("%-4d", b[i]);
printf("%d\n", b[b[0]]);
用for循环将b数组中已经放入的大于50的数输出,这里的b[0]即count,最后的b[b[0]]即b[count],相当于将上面的for(i = 1; i <= b[0]; i++)中i=b[0]的情况
搞定睡觉!