#include
#define N 4
int matrixchange(int a[][N], int m)
{
int i,j,ii=-1,jj=-1,k,max,min;
for(i=0;i
for(j=0;j
max=a[i][j];
for(k=0;k
{
min=a[i][j];
for(k=0;k
}
}
}
if(ii!=-1 && jj!=-1)
{
for(i=ii;i
}
else return 0;
}
void main()
{ int i,j,x[N][N]={{4,3,2,1},{8,7,6,5},{12,11,10,9},{16,15,14,13}},k;
k=matrixchange(x,N);
for(i=0;i
for(j=0;j
printf("\n");
}
}
最后输出答案 8 7 6
12 11 10
17 15 14
#include
struct d
{ int y, m, day;};
int days(struct d d1, struct d d2 )
{
int count_day1,count_day2,i,day,count=0;
int month_day[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
bool leap1,leap2;
count_day1=d1.day;
count_day2=d2.day;
if ((d1.y%4==0 && d1.m%100!=0) || (d1.day%400==0))
{
leap1=true;
}
else
{
leap1=false;
month_day[2]=28;
}
for(i=0;i
if ((d2.y%4==0 && d2.m%100!=0) || (d2.day%400==0))
{
leap2=true;
}
else
{
leap2=false;
month_day[2]=28;
}
for(i=0;i
if(d1.y==d2.y)
{
if(d1.m>d2.m)
day=count_day1-count_day2;
if(d2.m>d1.m)
day=count_day2-count_day1;
if(d1.m=d2.m)
{
if(d1.day>d2.day)
day=d1.day-d2.day;
else
day=d2.day-d1.day;
}
}
if(d1.y>d2.y)
{
if(leap1)
day=366-count_day2;
else
day=365-count_day2;
d2.y++;
while(d2.y != d1.y)
{
if ((d2.y%4==0 && d2.y%100!=0) || (d2.y%400==0))
day+=366;
else
day+=365;
d2.y++;
}
day+=count_day1;
}
if(d2.y>d1.y)
{
if(leap1)
day=366-count_day1;
else
day=365-count_day1;
d1.y++;
while(d1.y != d2.y)
{
if ((d1.y%4==0 && d1.y%100!=0) || (d1.y%400==0))
day+=366;
else
day+=365;
d1.y++;
}
day+=count_day2;
}
return day;
}
void main()
{ struct d d1,d2;
puts("\n first date:");
scanf("%d-%d-%d", &d1.y, &d1.m, &d1.day);
puts("\n second date:");
scanf("%d-%d-%d", &d2.y, &d2.m, &d2.day);
printf("%d days",days(d1,d2));
}
兄弟 我可是写了近一个小时哦,我也是初手。
调试正确,实现功能
第一题改成k=matrixchange(x,N); 函数参数错误,格式问题
没看到第二题要用结构体指针啊,题目要求只要把days函数补全就行了,补全给分不?
楼下的有点小问题,不能计算同一年日期相差天数
#include
struct d
{
int y, m, d;
};
int days(struct d d1, struct d d2 )
{
int i;
int days1;
int days2;
int month[13] = {0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 ,31};
days1 = days2 = 0;
if(d1.y < 1990 || d1.y > 9999 || d2.y < 1990 || d2.y > 9999) //输入年份超出1990-9999则返回-1天
{
return -1;
}
for (i = 1990; i < d1.y; i++) //计算第一个日期距离1990年1月1日的天数
{
if ((i+1)%4==0&&(i+1)%100!=0||(i+1)%400==0)
{
days1 += 365;
}
else
{
days1 += 366;
}
}
for (i = 1 ; i < d1.m ; i++)
{
days1 += month[i];
}
if (d1.y%4==0&&d1.y%100!=0||d1.y%400==0)
{
if (d1.m > 2)
{
days1++;
}
}
days1 += d1.d;
for (i = 1990; i < d2.y; i++) //计算第二个日期距离1990年1月1日的天数
{
if ((i+1)%4==0&&(i+1)%100!=0||(i+1)%400==0)
{
days2 += 365;
}
else
{
days2 += 366;
}
}
for (i = 1 ; i < d2.m ; i++)
{
days2 += month[i];
}
if (d2.y%4==0&&d2.y%100!=0||d2.y%400==0)
{
if (d2.m > 2)
{
days2++;
}
}
days2 += d2.d;
i = days1 - days2; //两个天数相减
return i>0?i:-i;
}
main()
{ struct d d1,d2;
puts("\n first date:");
scanf("%d-%d-%d", &d1.y, &d1.m, &d1.d);
puts("\n second date:");
scanf("%d-%d-%d", &d2.y, &d2.m, &d2.d);
printf("%d days",days(d1,d2));}
1.A PS,是一个数组的指针,而不是指针变量
2.B宏名不允许,否则在宏观价值成为无限循环永远不会扩大完成ACD的是合法的声明
3.A结构C元素点两个int单位,因此在初始化C [] = {1,2,3,4}相当于C [] = {{1,2},{3,4}}
4.C点较高优先级比* PS为指针,而不是直接的结合点(* PS)结构的对象,可结合点
第一道:
#include
#define N 4
int matrixchange(int a[][N], int m)
{
int i,j,ii=-1,jj=-1,k,max,min;
for(i=0;i
for(j=0;j
max=a[i][j];
for(k=0;k
{
min=a[i][j];
for(k=0;k
}
}
}
if(ii!=-1 && jj!=-1)
{
for(i=ii;i
}
else return 0;
}
void main()
{ int i,j,x[N][N]={{4,3,2,1},{8,7,6,5},{12,11,10,9},{16,15,14,13}},k;
k=matrixchange(x,N); //这句错误,把函数参数改成这样
for(i=0;i
for(j=0;j
printf("\n");
}
}