帮我解决以下这个编程题!谢谢大家!
编写函数void countValue(int *a, int *n),功能是:求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数并存放在数组a中,并通过n返回这些满足条件整数的个数。
程序代码:
/* File Name: CountValue.c * Date: 2010/11/29 * Des:求出1到1000之内能被7或11整除但不能同时被7或11 * 整除的所有整数并存放在数组a中,并通过n返回这些满 * 足条件整数的个数. */ #include <stdlib.h> #include <stdio.h> #define MIN_NUMBER 1 #define MAX_NUMBER 1000 /*Model*/ #define MODEL_EXP( valName, num, sign, res) (valName % num sign res) #define MODEL_EXP_EQUAL_ZERO( valName, num) MODEL_EXP( valName, num, ==, 0) #define MODEL_EXP_NEQUAL_ZERO( valName, num) MODEL_EXP( valName, num, !=, 0) void countValue( int *, int *); int main( int argc, char * argv[]) { int * numArray = ( int *)calloc( sizeof( int), MAX_NUMBER); int count = 0; int i = 0; countValue( numArray, &count); /*Show array*/ while( i < count) { if ( MODEL_EXP_EQUAL_ZERO( i, 10)) { printf("\n"); } printf( "%3d ", numArray[i]); i++; } free( numArray); return 0; } void countValue( int * a, int * n) { int number = MIN_NUMBER; *n = 0; for ( ; number < MAX_NUMBER; number++) { if( ( MODEL_EXP_EQUAL_ZERO( number, 7) && MODEL_EXP_NEQUAL_ZERO( number, 11)) || ( MODEL_EXP_EQUAL_ZERO( number, 11) && MODEL_EXP_NEQUAL_ZERO( number, 7)) ) { a[ ( *n)++] = number; } } }