文本描述
部分IT公司笔试算法题1、将一整数逆序后放入一数组中(要求递归实现)void convert(int *result, int n) {?if(n>=10)??convert(result+1, n/10);?*result = n%10;?}int main(int argc, char* argv[]) {?int n = 123456789, result[20]={};?convert(result, n);?printf("%d:", n);?for(int i=0; i<9; i++)??printf("%d", result);}2、求高于平均分的学生学号及成绩(学号和成绩人工输入)double find(int total, int n) {?int number, score,? average;?scanf("%d", &number);?if(number != 0) {??scanf("%d", &score);??average = find(total+score, n+1);??if(score >= average)???printf("%d:%d\n", number, score);??return average;?} else {??printf("Average=%d\n", total/n);??return total/n;?}}int main(int argc, char* argv[]) {?find(0, 0);}3、递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)int find(char *str, int n) {?if(n<=1)?return 1;?else if(str[0]==str[n-1])?return find(str+1, n-2);?else??return 0;}int main(int argc, char* argv[]) {?char *str = "abcdedcba";?printf("%s: %s\n", str, find(str, strlen(str)) ? "Yes" : "No");}4、组合问题(从M个不同字符中任取N个字符的所有组合)void find(char *source, char *result, int n) {?if(n==1) {??while(*source)???? printf("%s%c\n", result, *source++);?} else {??int i, j;??for(i=0; source?!= 0; i++);??for(j=0; result[j] != 0; j++);