C语言的指针函数编写问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 11:21:59
编写函数,把一个整型数组的偶数增加1倍,奇数加2倍,利用该函数对数组11,12,13,15,16,17,18 进行处理。我代码都写出来了,但在函数体里不知道怎么对奇数和偶数进行加倍的处理,所以程序输出时还是那几个数,所以请大家教教我 谢谢了
#include "stdio.h"
void show (int s[] ,int n)
{
int *p ;
int x[50];
for (p=x;p<x+n;p++)
*p=*p+*p;
if (*p%2==0)
*p=*p+*p+*p;
}
main ( )
{
int x[]={11,12,13,14,15,16,17,18},*z;
for (z=x;z<x+7;z++)
show (x,7);
for (z=x;z<x+7;z++)
printf ("%d ",*z);
}

通过数组或者指针把主函数main()中的数据传到函数中,程序改动如下,已经在win-tc和Dev-c++下调试通过。
#include "stdio.h"
void show (int s[] ,int n) /* x[]的地址这里已经传给了s[] */
{
int *p ;
p=s;/* s的地址给了p,p就指向了x[] */
for(p=s;p<s+n;p++)/* 这里已经遍历了数组各元素 */
{if(*p%2==0)
*p=*p+*p;
else
*p=*p+*p+*p;
}
}

int main( )
{int num;
int x[]={11,12,13,14,15,16,17,18},*z;
num=sizeof(x)/sizeof(x[0]);/* 你的是8个数吧 */
show(x,num); /*把num改成8也可以,一个意思*/
for (z=x;z<x+num;z++)
printf ("%d ",*z);
printf ("\n");
system("pause");
}