前段时间做的部分笔试题和答案(提醒自己) 编写一函数实现数组的递归求和 #include < stdio.h > #include " config.h " int sum( int A[], size_t n) { if (1 == n) { return 1; } else { return sum(&A[n-1], n-1) + n; }} int main( void ) { int A[] = { 1, 2, 3, 5, 9, 1}; printf("%d/n", sum(A, ARRAY_LENGTH(A))); return 0;} 头文件config.h的内容如下: #ifndef CONFIG_H #define CONFIG_H #define ARRAY_LENGTH(x) sizeof(x)/sizeof(x[0]) #endif 编写一函数实现str到long的转换 #include < stdio.h > #include < string .h > #include < assert.h > long str2long( const char * str) { long result = 0; while ('/0' != *str) { result = result * 10 + (*str - '0'); ++str; } return result;} int main( void ) { char *str = "1234"; printf("/n%d/n", str2long(str)); return 0;} 上面的代码没有考虑负数^_^ 实现strcpy函数 char * mystrcpy( char * dst, const char * src) { assert(NULL != dst && NULL != src); while (*dst++ = *src++); return dst;} int main( void ) { char *dst[20]; char *src = "test"; mystrcpy(dst, src); puts(dst); return 0;} 判断一个整数是否是回文 long symm( long n) { long i, m; m = 0; i = n; while (i) { m = m * 10 + i % 10; i /= 10; } return (n == m ? 1:0);} 实现Insertion sort #include < stdio.h > #include < string .h > typedef int ElemType; void InsertionSort(ElemType A[], size_t n) { int i; int pass; ElemType tmp; for (pass = 1; pass < n; pass++) { tmp = A[pass]; for ( i = pass; i > 0 && A[i-1] > tmp; i--) { A[i] = A[i-1]; } A[i] = tmp; }} int main( void ) { int i; ElemType A[] = {1, 2, 4, 8, 6, 98, 11, 25, 44, 35}; puts("Before sort:"); for(i = 0; i< sizeof(A)/sizeof(ElemType); i++) { printf("%d ", A[i]); } printf("/n"); InsertionSort(A, sizeof(A)/sizeof(ElemType)); puts("After sort:"); for(i = 0; i< sizeof(A)/sizeof(ElemType); i++) { printf("%d ", A[i]); } printf("/n"); return 0;}