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

北航2006年计算机复试上机

2017-03-05 19:16 211 查看
 

第一题  写一个函数 set_same(int a[],int len1,int b[],int len2) 判断数组a和b所含元素是否都相同,就是说,如果把a和b所含元素按成两个集合  判断是两个集合是否相等 既然是集合 那就不考虑重复元素和顺序了

#include<stdio.h>

#include<string.h>

#include<math.h>

#include<malloc.h>

int set_name(int a[],int len1,int b[],int len2){

    int i,j;

    int flag1=0,flag2=0;

    for(i=0;i<len1;i++){

        for(j=0;j<len2;j++){

            if(a[i] == b[j]){

                flag1++;

                break;

            }

        }

    }

    for(i=0;i<len2;i++){

        for(j=0;j<len1;j++){

            if(b[i] == a[j]){

                flag2++;

                break;

            }

        }

    }

    if(flag1 == len1 && flag2 == len2) return 1;

    else return 0;

}

int main(){

    int n,m;

    int i,j;

    scanf("%d %d",&n,&m);

    int* a = (int *)malloc(sizeof(int)* n);

    int* b = (int *)malloc(sizeof(int) * m);

    for(i=0;i<n;i++){

        scanf("%d",a+i);

    }

    for(i=0;i<m;i++){

        scanf("%d",b+i);

    }

    int s = set_name(a,n,b,m);

    if(s) printf("YES\n");

    else printf("NO\n");

    return 0;
}

第二题

用结构体,c++用sort对成绩排序即可。

#include<stdio.h>

#include<malloc.h>

#include<algorithm>

using namespace std;

typedef struct student{

    char name[100];

    double grade;

    bool operator < (const student & a) const{

        return grade > a.grade;

    }

}student;

int main(){

    int n;

    int i;

    scanf("%d",&n);

    student stu[100];

    for(i=0;i<n;i++){

        scanf("%s %llf",stu[i].name,&stu[i].grade);

    }

    sort(stu,stu+n);

    for(i=0;i<n;i++){

        printf("%s %.2llf\n",stu[i].name,stu[i].grade);

    }

    return 0;

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