您的位置:首页 > 理论基础

北航2007年计算机复试上机

2017-03-05 19:49 302 查看
第一题、从输入的字符串中,统计空格,回车,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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  北航 计算机 机试