题目中有些需要考虑的问题:
1。 没有给出数组a[10]数据源, 要我们创造出来么? 随机输入还是用户输入? 另外a是什么类型的数组, 整数?单精度双精度浮点?甚至可能是字符串?
2。 两个整数数组b和c需要静态数组还是动态的?因为如果是静态的, 那么最后会出现一些垃圾值, 如果是初始化过的, 那么会多出一些0。
3。 如果数组a是int/double/float类型数组的其中一个, 那么数组中出现0(0。000000)怎么办?
代码如下: 假设整型数组a[10]所有数字是随机产生, b和c数组大小固定和数组a长度相同。
#include
#include /*srand和rand函数都在这个头文件内*/
#include /*time在这个头文件内--只是为了生成逼真的随机数效果*/
#define ARRAYSIZE 10
void Generate_a10(int *ar);
void Separate(int *ar, int *br, int *cr);
void Print(int *br, int *cr);
int main(void)
{
int a[ARRAYSIZE], b[ARRAYSIZE] = {0}, c[ARRAYSIZE] = {0};
srand(time(NULL)); /*设置随机种子*/
Generate_a10(a); /*产生10个随机数到源数组a*/
Separate(a, b, c); /*将正负数分割到数组b和c*/
//Print(b, c); /*输出到屏幕, 因为不确定题目是否要输出, 故屏蔽。
*/
return 0;
}
void Generate_a10(int *ar)
{
int i;
for(i = 0; i 0) { /*整形数组b存储正整数*/
*(br + j) = *(ar + i);
j++;
}
else if(*(ar + i) < 0) { /*c存储负整数*/
*(cr + k) = *(ar + i);
k++;
}
}
}
void Print(int *br, int *cr)
{
int i;
puts("b[N]:");
for(i = 0; i < ARRAYSIZE; i++) {
printf("%d ", *(br + i));
}
puts("\nc[N]:");
for(i = 0; i < ARRAYSIZE; i++) {
printf("%d ", *(cr + i));
}
putchar('\n');
}
。
全部