北航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; }