一、上机题
1、将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。举例:若输入abc4Efg,则应输出aBc4EFg
(c++)
#include
char ss[10]={'0'}; int i;
for(i=0;i<10;i++) ss[i]='0'; cin.getline(ss,10); for(i=0;ss[i]!='0';i++) {
if((i%2==1)&&ss[i]>'a'&&ss[i]<'z') ss[i]+=('A'-'a'); }
for(i=0;ss[i]!='0';i++) cout< system(\} (c) #include char ss[10]; int i; printf(\ scanf(\ for(i=1;ss[i]!='\\0';i=i+2) { if(ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } printf(\ printf(\ return 0; } 2、在半个中国象棋棋盘上,马在左上角(1,1)处,马走日字...而且只能往右走...不能向左...可上可下...求从起点到(m, n)处有几种不同的走法. 3、给定任意俩组字符串S1和S2,请编程输出他们间的最大相同子串。例如:S1=12abc78, S2=7bc2,则输出为:bc 。 4、已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。 (举例:pred[]/先序:A、B、D、E、C、F、G;inod[]/中序:D、B、E、A、C、G、F;后序遍历序列是:D、E、B、G、F、C、A) 5、在一个整形数组a中既有负数又有正数,编写一个算法将a中所有负数移到整数之前,要求其时间复杂度为O(n),n为数组长度,并且只使用常数个辅助空间。 例如:a[ ]={1,2,3,4-1,1,-2,-1,-4}执行算法后的输出为a[ ]={-4,-1,-2,-1,1,4,3,2,1} 6、编写一个C函数,输入一个二叉树的根节点,返回这棵树中所有值大于0的节点值之和,如果根伟空,返回0. 二叉树的链式存储结构对应的C语言的节点类型定义如下: Typedef struct node{ ElemType data; struct node *lchild; struct node *rchild; }BTree; 7、A是一个长度为N的整形数组,其中可能包含重复的元素,例如A={1,2,2,3,2,1,3,2},删除数组中相同的元素后得到{1,2,3}, a) 如果数组没有排序,写一个C语言函数,输入参数为数组首地址和长度,删除其中重复的元素,返回删除后的数组的长度。 b) 上述函数的时间复杂度为多少,以删除前的数组长度N表示。 c) 如果数组A已经排好序,设计并写出一个C语言函数完成a)中的工作,要求时间复杂度是O(N) 。 8、写一个C语言函数将一颗二叉树用层序遍历列出所有节点,即先列出根节点,再从左向右列出深度为1的节点的值,然后再左向右列出深度为2的节点的值,如此继续。数的节点类型TREENODE包含一个整型值Value和俩个指针:LeftChild和RightChild。可以使用的函数(不限于)包括MaleEmptyQueue (QUEUE *q), EnQueue (QUEUE *q,TREENODE *tn) DeQueue (QUEUE *q,TREENODE *tn) , IsEmpty (QUEUE *q) , DisposeQueue (QUEUE *q)。 9、假设以下关于堆栈的库函数已经给出,unsigned char is empty ();检查堆栈是否为空,如果是,返回1;否则返回0. void push (char element);把一个char型的数据element 推入栈顶。 Char pop (); 弹出栈顶的char型数据。 (1) 利用这些库函数设计一个C语言的函数unsigned char isBalanced (char *string) ,来检查字符串string 中的括号(),[],{}是否平衡,如果平衡,该函数返回1,否则返回0. (2) 你所设计的函数时间复杂性是多少(假定字符串string 长度为n)? 10、在一棵高度为O(logn)的二叉排序树的结点上存储着浮点数,请用C语言写一个函数来计算一棵树上界于任意俩个浮点数x1和x2 (x1 11、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。(8分) (举例:153=1*1*1+3*3*3+5*5*5) #include int i=0,j=0,k=0; for(i=1;i<=9;i++) } for(j=0;j<=9;j++) for(k=0;k<=9;k++) { } if((i*100+j*10+k)==(i*i*i+j*j*j+k*k*k)) { } printf(\ printf(\ 12、求数列s(n)=s(n-1)+s(n-2)的第n项的值。其中s(1)=s(2)=1。要求任意给定n,输出s(n)。(7分) #include int function_s(int n); void main() { int number; printf(\ scanf(\ function_s(number); printf(\} int function_s(int n) { } if(n==1) return 1; else if(n==2) return 1; else return function_s(n-1)+function_s(n-2); 13、按要求输出:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;他既是完全平方数,又是两位数字相同,例如144,676等。 #include int i,j,k=0; int a[9],*p; p=a; for(i=100;i<1000;i++) for(j=0;j<100;j++) { int a,b,c; a=i; b=i/10; c=i/100; if((a==b||a==c||b==c)&&(i==j*j)) { *p=i; p++; } } for(k=0;k<9;k++) printf(\} 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库华科考研上机题合集在线全文阅读。
相关推荐: