北航2007年计算机复试上机

第一题、从输入的字符串中,统计空格,回车,TAB出现的次数

#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){     int i=0;     int len,space_count=0,enter_count=0,tab_count=0;     char buf[1024];     char s;     while(s=getchar()!=0){         buf[i] = s;         i++;     }     buf[i] = '\0';         len = strlen(buf);         for(i=0;i<len;i++){             if(buf[i] == ' ')                 space_count++;             if(buf[i] == '\n')                 enter_count++;             if(buf[i] == '\t')                 tab_count++;         }         PRintf("%d %d %d",space_count,enter_count,tab_count);                   return 0; }

第二题、将两个升序字符串合并成一个升序字符串,相同的字母,出现一次。

#include<stdio.h> #include<string.h> int cmp(const void * a,const void * b){     return *(char *)a - *(char*)b; } void merge(char str1[],char str2[]){     int len1 = strlen(str1);     int len2 = strlen(str2);     int i;     char s[100];     for(i=len;i<len1+len2;i++){         str1[i] = str2[i-len];     }     qsort(str1,len1+len2,sizeof(str1[0]),cmp);     for(i=0;i<len1+len2;i++){         if(str1[i] == str1[i-1]){             continue;         }else             s[i] = str1[i];     } }

第三题、多项式相加

#include<stdio.h> #include<malloc.h> typedef struct polynomial{     int factor; //系数     int indice;     struct polynomial *next; }*LinkList,polynomial; void CreateLink(LinkList &L,int n){     LinkList p,s;     int i;     L = (LinkList)malloc(sizeof(polynomial));     L ->next = NULL;     p = L;     for(i=0;i<n;i++){         s = (LinkList)malloc(sizeof(polynomial));         printf("依次输入多项式系数和指数:");         scanf("%d%d",&s->factor,&s->indice);         s->next = NULL;         p->next = s;         p = s;     } } void AddList(LinkList List1,LinkList List2,LinkList &L){     LinkList p1,p2,list,s;     L = (LinkList)malloc(sizeof(polynomial));     L-> next = NULL;     list = L;     p1 = List1->next;     p2 = List2->next;     while(p1 && p2){         if(p1 -> indice < p2 ->indice){             s = p1->next;             list->next = p1;             list = p1;             list->next = NULL;             p1 = s;         }         else if(p1->indice == p2->indice){             p1->factor = p1->factor + p2->factor;             if(p1->factor!=0){                 list->next = p1;                 s = p1->next;                 list = p1;                 list->next = NULL;                 p1 = s;                 p2 = p2->next;             }else{                 p1 = p1->next;                 p2 = p2->next;             }         }         else{             s = p2->next;             list->next = p2;             list = p2;             list->next = NULL;             p2 = s;         }     }     if(p1 != NULL) list->next = p1;     if(p2 != NULL) list->next = p2; } void VisitList(LinkList L){     LinkList p;     p = L->next;     if(p == NULL){         printf("0\n");     }     while(p){         printf("%dX^%d",p->factor,p->indice);         p = p->next;         if(p != NULL)             printf("+");     }     printf("\n"); } int main(){     LinkList p1,p2,sump;     CreateLink(p1,3);     CreateLink(p2,4);     AddList(p1,p2,sump);     VisitList(sump);     free(p1);     free(p2);     free(sump);     return 0; }