只做了前三个题,在本地调试好了,不知为什么错了,好歹做了那么久,就记录一下了(注:这不是标准答案,只是我给出的解答)

这是第一题的代码:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct ar{
int a[];
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+);
j2=i; for(i3=;i3<=i2;++i3)
{
p=p->next;
p->a[j2]=x;
} } void showResult(arNode *p,int n,int m)
{
int i,j;
for(i=;i<m;++i)
{
p=p->next;
for(j=;j<n;++j)
{
printf("%d ",p->a[j]);
}
printf("\n");
}
} int main()
{
arNode *L,*p;
int m,n,i,j,x; L=(arNode *)malloc(sizeof(arNode));
L->next=NULL;
p=L;
for(i=;i<;++i)
{
p->next=(arNode *)malloc(sizeof(arNode));
p->next->next=NULL;
p=p->next;
}
scanf("%d %d",&n,&m);
fflush(stdin);
for(i=;i<n;++i)
{
for(j=;j<m;++j)
{
scanf("%d",&x);
insert(L,x,i,j,n,m);
}
} showResult(L,n,m);
return ;
}

这是第二题的代码:

#include<stdio.h>
struct ar{
int n;
int t;
}a[];
int nn=;
void insert(int x)
{
int i;
for(i=;i<nn;++i)
{
if(a[i].n==x)
break;
}
if(i<nn)
{
++a[i].t;
}
else{
a[nn].n=x;
a[nn].t=;
++nn;
}
} void output()
{
int i;
for(i=;i<nn;++i)
{
printf("%d %d\n",a[i].n,a[i].t);
}
} void pai()
{
int i,j,k,tmp,index;
struct ar ttt;
for(i=;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=;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-];
}
a[i]=ttt;
}
} int main()
{ int n,i,x;
scanf("%d",&n);
fflush(stdin);
for(i=;i<n;++i)
{
scanf("%d",&x);
insert(x);
}
pai(); output();
return ;
}

这是第三题的代码:

#include<stdio.h>
int a[]={,,,,,,,,,,,,};
int daysYear(int year)//返回某年有多少天
{
if(!(year%))
return ;
else{
if(!(year%) && (year%))
{
return ;
}else{
return ;
}
}
} int week(int year,int month)//返回某年某月1日是星期几
{
int i,sum=,result;
for(i=;i<year;++i)
{
sum+=daysYear(i);
}
for(i=;i<month;++i)
{
if((daysYear(year)==) && i==)
{
sum+=;
}
else{
sum+=a[i];
}
}
result=(sum+)%;
return result==?:result;
} int jihao(int year,int month,int b,int c)
{
int yihao,count,d;
yihao=week(year,month);//1号是星期几
d=(daysYear(year)== && month==)?:a[month];//本月天数
if(c>=yihao)
{
count=(b-)*+(c-yihao)+;
}else{
count=b*-(yihao-c)+;
}
if(count>d)
{
count=;
}
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)==)
{printf("none\n");}
else{
printf("%d/%.2d/%.2d\n",i,a1,jihao(i,a1,b1,c1));
}
}
//printf("%d",jihao(2015,5,2,7));
return ;
}

就做出这三个题。。。。。。

05-08 08:02