第一题 写一个函数 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;}
新闻热点
疑难解答