能讲一下C语言形参如果是指针变量如何使用吗?
题目:将1-1000之间能整除7或者11,但不能同时整除7和11的数保存在数组中,通过n返回这些数的个数为什么要定义j,在赋值给*n...
题目:将1-1000之间能整除7或者11,但不能同时整除7和11的数保存在数组中,通过n返回这些数的个数为什么要定义j,在赋值给*n
展开
展开全部
一般来说在函数中如果最终要返回或者设置什么结果,通常是定义一个变量(与你结果相同数据类型),在程序中进行运算,之后再返回或者再设置,这样主要是为了方便和好理解,具体到你这题上,因为最终结果是要放在*n里,它的初始值也是0,所以不要j这种中间变量也是可以的,比如说可以是
void fun(int *a,int *n) {
int i=0;
*n=0;
for(i=7; i<1000; i++) {
if(i%7==0||i%11==0)
if(!(i%7==0 &&i%11==0))
a[(*n)++]=i;
}
a[*n]='\0'; //这行其实是没啥太多意义的
}
再比如说一个更简单的例子,比如说有
int fun(int a,int b) {
int sum=0;
sum=a+b;
return sum;
}
这个fun是返回a,b之和,如果要简化因为计算很简单当然也可以里面不要sum,直接改为return a+b; 但是如果计算过程很复杂呢,不定义中间变量就只能把代码写在一行上,理解和阅读还有调试都会比较麻烦
void fun(int *a,int *n) {
int i=0;
*n=0;
for(i=7; i<1000; i++) {
if(i%7==0||i%11==0)
if(!(i%7==0 &&i%11==0))
a[(*n)++]=i;
}
a[*n]='\0'; //这行其实是没啥太多意义的
}
再比如说一个更简单的例子,比如说有
int fun(int a,int b) {
int sum=0;
sum=a+b;
return sum;
}
这个fun是返回a,b之和,如果要简化因为计算很简单当然也可以里面不要sum,直接改为return a+b; 但是如果计算过程很复杂呢,不定义中间变量就只能把代码写在一行上,理解和阅读还有调试都会比较麻烦
展开全部
如图传入的两个参数是数组地址和符合条件筛选个数变量的地址。如果不适用J为中间变量每次计算时需要对传入的 地址取值,理论上这1000次取值操作的效率远低于增加J为中间变量效率。
个人认为直接把个数作为函数返回值最合适。
int fun(int *a)
{ int j = 0;
for(int i= 7;i<=1000; i++)
{
if() //同图条件
j++;
}
return j;
};
n = fun(aa);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询