#include stdio.h void fun(int *n) { int m,k=0,i; m=*n; while(m!=0) { i=m%10; m/=10; if(i%2==1) k=k*10+i; } m=0; while(k!=0) { i=k%10; k/=10; m=m*10+i; } *n=m; } int main( ) { int n=-1; while(|n0) { scanf(%d,n); } fun(n); printf(%d\n,n); return 0; } 求非偶数的除数 请编写函数 fun ,它的功能是:求出能整除形参 x 且不是偶数的各整数 , 并按从小到大的顺序放在 aa数组中 , 这些除数的个数通过形参 n 返回。 例如,若 x 中的值为 : 35 ,则有 4 个数符合要求,它们是 : 1, 5, 7, 35 。 int main( ) { int x, aa[1000], n, i ; scanf(%d, x) ; fun(x, aa, n ) ; for( i = 0 ; i n ; i++ ) printf( %d, aa[i]) ; printf(\n) ; return 0; } #include stdio.h int?fun(int?x,int?*aa,?int?*n?)?? {?? ??int?i,j=0;?? ??for(i=1;i=x;i+=2)?? ??{if(x%i==0)?? ??{*(aa+j)=i;j++;}?? ??}*n=j;?? ??return?0;?? }?? int main( ) { int x, aa[1000], n, i ; scanf(%d, x) ; fun(x, aa, n ) ; for( i = 0 ; i n ; i++ ) printf( %d, aa[i]) ; printf(\n) ; return 0; } A pointer is a variable whose value is a memory address representing the location of the chunk of memory on either the run-time stack or on the heap. 示例:用非指针实现求10个数的和(非指针法) #include stdio.h int main() { int i, x, sum=0; printf(输入10个整数:); for(i=0; i10; i++) { scanf(%d, x); sum = sum + x ; } printf(累加和为%d, sum ); return 0; } 指针使用示例 指针使用示例 示例:用指针实现求10个数的和 #include stdio.h int main() { int i, x, sum; int *p1 = x; int *p2 = sum; *p2 = 0; printf(输入10个整数:); for(i=0; i10; i++) { scanf(%d, p1); *p2 = *p2 + *p1 ; } printf(累加和为%d, *p2 ); return 0; } #include stdio.h main( ) { int i, x=1, sum=0; int *p1 = x; int *p2 = sum; for( i=0; i100; i++ ) *p2 += (*p1)++; printf( 1+2+...+100=%d\n, sum ); } 用指针实现求1~100的累加和 优先级 间接寻址运算符* 与取地址运算符 都是单目运算符,它们的优先级和其它 单目运算符如!,++,--相同,都高于 算术运算符,这些单目运算符都是右结 合,从右向左运算。 普通变量作函数参数——按值调用(Call by Value) Can not m
原创力文档

文档评论(0)