41528d3028836879cd698677c3999917.gifC语言数据结构编程题

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= 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=n; i--) {result[j] = *source++;result[j+1] = \0 ;find(source, result, n-1);}}}int main(int argc, char* argv[]) {int const n = 3;char *source = “ABCDE“, result[n+1] = {0};if(n>0 m /= n;prim(m, n);printf(“%d*“, n);}}int main(int argc, char* argv[]) {int n = 435234;printf(“%d=“, n);prim(n, 2);}6、寻找迷宫的一条出路,o:通路; X:障碍。(大家经常谈到的一个小算法题)#define MAX_SIZE 8int H[4] = {0, 1, 0, -1}; int V[4] = {-1, 0, 1, 0}; char Maze[MAX_SIZE][MAX_SIZE] = {{ X , X , X , X , X , X , X , X },{ o , o , o , o , o , X , X , X },{ X , o , X , X , o , o , o , X },{ X , o , X , X , o , X , X , o },{ X , o , X , X , X , X , X , X },{ X , o , X , X , o , o , o , X },{ X , o , o , o , o , X , o , o },{ X , X , X , X , X , X , X , X }};void FindPath(int X, int Y) {if(X == MAX_SIZE || Y == MAX_SIZE) {for(int i = 0; i = 0 int Sum = 0;for(int i=0; i0; i++)if(Value-Stamp[i] >= 0) {Flag[k++] = i;Combine(n-1, Value-Stamp[i]);Flag[--k] = 0;}return Found;}int main(int argc, char* argv[]) {for(int i=1; Combine(N, i); i++, Found=0);}10、大整数数相乘的问题。(这是 2002 年在一考研班上遇到的算法题)void Multiple(char A[], char B[], char C[]) {int TMP, In=0, LenA=-1, LenB=-1;while(A[++LenA] != \0 );while(B[++LenB] != \0 );int Index, Start = LenA + LenB - 1;for(int i=LenB-1; i>=0; i--) {Index = Start--;if(B[i] != 0 ) {for(int In=0, j=LenA-1; j>=0; j--) {TMP = (C[Index]- 0 ) + (A[j]- 0 ) * (B[i] - 0 ) + In;C[Index--] = TMP % 10 + 0 ;In = TMP / 10;}C[Index] = In + 0 ;}}}int main(int argc, char* argv[]) {char A[] = “21839244444444448880088888889“;char B[] = “38888888888899999999999999988“;char C[sizeof(A) + sizeof(B) - 1];for(int k=0; k= 0 // 连续数字的长度增 1 } else { // 出现字符或不连续数字if(iLen > iMax) {iMax = iLen; iHead = iTmp; } // 该字符是数字,但数字不连续if(strSource[Index] >= 0 k++)if(Board[i-k][j-k]) return 0;for(k=1; i>=k;k++)if(Board[i-k][j]) return 0;for(k=1; i>=k i++)Scheme[i] = TmpScheme[i];} else if(Direction == 1) { // 过桥方向向右,从桥左侧选出两人过桥for(int i=0; i Time[j] ? Time[i] : Time[j]);if(Position[j] == 0 i+=3)printf(“ %d-%d %d“, Scheme[i], Scheme[i+1], Scheme[i+2]);printf(“\b\b “);}16、2005 年 11 月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符 * 移到串的前部分,前面的非 * 字符后移,但不能改变非 * 字符的先后顺序,函数返回串中字符 * 的数量。如原始串为:ab**cd**e*12 ,处理后为*****abcde12,函数并返回值为 5。(要求使用尽量少的时间和辅助空间)int change(char *str) { /* 这个算法并不高效,从后向前搜索效率要高些 */

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐