c语言程序填空题。求大神指导一番!!!

程序功能:调用函数f,去除数组中的负数,输入数组x[7],输出结果为1 3
#include <stdio.h>
void f(int *a,int *m)
{ int i,j;
for(i=0;i<*m;i++)
if(a[i]<0) {
for(j=i--;j<*m-1;j++) a[j]=a[j+1];
_____1_____;
}
}
void main()
{ int i,n=7,x[7]={1,-2,3,4,-5,6,-7};
_______2_______;
for(i=0;i<n;i++) printf("%5d",x[i]);
printf("\n");
}

第1个回答  2013-04-21
如果仅根据程序功能的话,输出应该是 1 3 4 6 吧。。

填空为:

1. --*m
2. f(x,&n)追问

不知为何、无法运行!

还有能否告知为何这样填写!谢谢、

追答

分号。。

追问

程序可以运行了!!!
谢谢、然后可以稍微整体解释下此程序么???
还有为何如此填空!
我不是很懂、、、这是计算机二级考试题目。

追答

f函数的主要作用如你所述

由于f函数的头表是(int *a,int *m) *x是一个指针

指针的含义是指向该数组元素的地址
f(x,&n) 由于x本身是一个数组,所以可以直接用x表示x[0]的地址
而n只是一个整型元素,所以用&符号取其地址
*m代表的m指向的元素的值
--*m表示将m指向元素的值减1

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网