华科历年上机题汇总(欢迎补全)代码都很多是我自己写的,不一定正确啊!错了可不负责任的,呵呵~~~仅供参考!
==》10年保送生上机试题
1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 #include
#include
int main(){
char s1[200],s2[100];
int i,len1,len2;
scanf("%s %s",s1,s2);
for(i=0;i<200;i++){
if(s1[i]=='\0'){
len1=i;
break;
}
}
for(i=0;i<100;i++){
if(s2[i]=='\0'){
len2=i;
break;
}
}
for(i=len1;i
s1[i]=s2[i-len1];
}
printf("%s\n",s1);
system("pause");
}
2、输入一串数,要求建平衡二叉排序树,然后先序遍历。 3.、有4个小问,是超长整数的存储、计算、输出。要把超长整数存在一个单向循环链表中,是每四位一个节点。
注:我是用单链表写的!感觉单循环链表没有什么用处么~~~
#include
#include
#include
#define MAXLEN 100
typedef struct node{
int data;
struct node *next;
}LNode,*LinkList;
int changeString(char s[],int len){//把字符串长度变成4的整数倍;
int i,temp;
char ss[MAXLEN];
if(len%4!=0){
temp=4-len%4;//需要在前面添加的0的个数;
for(i=0;i
ss[i]=s[i];
}
for(i=0;i
s[i]='0';
}
for(i=temp;i
s[i]=ss[i-temp];
}
}
return temp;
}
LinkList createList(char *s,int len){//创建单链表;
int i,temp,add_len;
LinkList L,p,start;
if(len<=0){
return NULL;
}
add_len=changeString(s,len);
len+=add_len;
i=0;
temp=0;
while(i<4&&i
temp=temp*10+s[i]-'0';
i++;
}
L=(LinkList)malloc(sizeof(LNode));//头结点;
L->data=temp;
L->next=NULL;
start=L;
temp=0;
while(i
if((i+1)%4==1){//需新建一个结点;
p=(LinkList)malloc(sizeof(LNode));
}
temp=temp*10+s[i]-'0';
if((i+1)%4==0||i==len-1){//一个结点结束;
p->data=temp;
p->next=NULL;
start->next=p;//插入结点;
start=p;
temp=0;//重新计数;
}
i++;
}
start->next=NULL;
return L;
}
LinkList reverse(LinkList L){//逆转单循环链表;
LinkList p,q,r;
if(L!=NULL){
p=L->next;
L->next=NULL;
while(p!=NULL){
q=p;
p=p->next;
q->next=L;
L=q;
//printf("**%d\n",L->data);
}
return L;
}