//传统方法 #include <stdio.h> int main() { int i,x,y,n; while (scanf("%d", &n) != EOF) { int min=1000,y1=1000; for(i=0;i<n;i++){ scanf("%d%d",&x,&y); if(min>x){ min=x; y1=y; } if(min==x){ if (y1>y){ y1=y; } } } printf("%d %d\n",min,y1); } return 0; }
#include <stdio.h> #include <stdlib.h> typedef struct all{ int x; int y; }all; int cmp(const void *a,const void *b){ all *c=(all *)a; all *d=(all *)b; if(c->x!=d->x) return c->x - d->x; else return c->y - d->y; } int main(){ int n; while(scanf("%d",&n)!=EOF){ all num[1000]; for(int i=0;i<n;i++){ scanf("%d %d\n",&num[i].x,&num[i].y); } qsort(num,n,sizeof(num[0]),cmp); printf("%d %d\n",num[0].x,num[0].y); } return 0; }法二:边输入边比较
#include <stdio.h> #include <stdlib.h> #define INT_MAX 0x7fffffff int main(){ int n,a,b,mina,minb; mina=minb=INT_MAX; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d %d\n",&a,&b); if(mina>a){ mina=a; minb=b; }else if(mina==a){ if(minb>b){ minb=b; } } } printf("%d %d\n",mina,minb); } return 0; }注意:没有搞懂二维数组怎么写!