只做了前三个题,在本地调试好了,不知为什么错了,好歹做了那么久,就记录一下了(注:这不是标准答案,只是我给出的解答)
这是第一题的代码:
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct ar{ int a[1000]; struct ar *next; }arNode; void insert(arNode *p,int x,int i,int j,int n,int m) { int i2,j2,i3,j3; i2=m-(j+1); j2=i; for(i3=0;i3<=i2;++i3) { p=p->next; p->a[j2]=x; } } void showResult(arNode *p,int n,int m) { int i,j; for(i=0;i<m;++i) { p=p->next; for(j=0;j<n;++j) { printf("%d ",p->a[j]); } printf(" "); } } int main() { arNode *L,*p; int m,n,i,j,x; L=(arNode *)malloc(sizeof(arNode)); L->next=NULL; p=L; for(i=0;i<1000;++i) { p->next=(arNode *)malloc(sizeof(arNode)); p->next->next=NULL; p=p->next; } scanf("%d %d",&n,&m); fflush(stdin); for(i=0;i<n;++i) { for(j=0;j<m;++j) { scanf("%d",&x); insert(L,x,i,j,n,m); } } showResult(L,n,m); return 0; }
这是第二题的代码:
#include<stdio.h> struct ar{ int n; int t; }a[1000]; int nn=0; void insert(int x) { int i; for(i=0;i<nn;++i) { if(a[i].n==x) break; } if(i<nn) { ++a[i].t; } else{ a[nn].n=x; a[nn].t=1; ++nn; } } void output() { int i; for(i=0;i<nn;++i) { printf("%d %d ",a[i].n,a[i].t); } } void pai() { int i,j,k,tmp,index; struct ar ttt; for(i=0;i<nn;++i) { for(j=i;j<nn;++j) { if(a[i].n>a[j].n) { ttt=a[i]; a[i]=a[j]; a[j]=ttt; } } } for(i=0;i<nn;++i) { index=i; for(j=i;j<nn;++j) { if(a[index].t<a[j].t) { index=j; } } ttt=a[index]; for(k=index;k>i;--k) { a[k]=a[k-1]; } a[i]=ttt; } } int main() { int n,i,x; scanf("%d",&n); fflush(stdin); for(i=0;i<n;++i) { scanf("%d",&x); insert(x); } pai(); output(); return 0; }
这是第三题的代码:
#include<stdio.h> int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int daysYear(int year)//返回某年有多少天 { if(!(year%400)) return 366; else{ if(!(year%4) && (year%100)) { return 366; }else{ return 365; } } } int week(int year,int month)//返回某年某月1日是星期几 { int i,sum=0,result; for(i=1850;i<year;++i) { sum+=daysYear(i); } for(i=1;i<month;++i) { if((daysYear(year)==366) && i==2) { sum+=29; } else{ sum+=a[i]; } } result=(sum+2)%7; return result==0?7:result; } int jihao(int year,int month,int b,int c) { int yihao,count,d; yihao=week(year,month);//1号是星期几 d=(daysYear(year)==366 && month==2)?30:a[month];//本月天数 if(c>=yihao) { count=(b-1)*7+(c-yihao)+1; }else{ count=b*7-(yihao-c)+1; } if(count>d) { count=0; } return count; } int main() { int a1,b1,c1,year1,year2,i; scanf("%d %d %d %d %d",&a1,&b1,&c1,&year1,&year2); for(i=year1;i<=year2;++i) { if(jihao(i,a1,b1,c1)==0) {printf("none ");} else{ printf("%d/%.2d/%.2d ",i,a1,jihao(i,a1,b1,c1)); } } //printf("%d",jihao(2015,5,2,7)); return 0; }
就做出这三个题。。。。。。