你应该把编译器报的错误一起贴出来,方便大家看才是。
很久没有写C的程序了,不过大致看了一下,C里面定义了结构体后,使用它的时候也需要加上struct么?
1.把代码中除了定义Time之外的所有使用struct Time的地方都改为Time,也就是把struct删掉,试试。我觉得使用的时候是应该不用struct了的。
2.struct定义后要加个分号;
3.函数定义不要放在main里
4.larger()返回的是一个Time,你却赋值给了一个Time数组
5.好像还有...
改后如下:(没有测试)
#include
#define NUMTIME 2
struct Time
{
int month;
int day;
int year;
};
Time larger();
int main()
{
int i;
Time date1, date2, larger;
scanf("%d %d %d", &date1.month, &date1.day, &date1.year);
scanf("%d %d %d", &date2.month, &date2.day, &date2.year);
larger= larger(date1, date2);
printf("The latter date is %d/%d/%d", larger.month, larger.day, larger.year);
return 0;
}
Time larger(Time d1, Time d2)
{
if (d1.year > d2.year)
{
return d1;
}
else if (d1.year < d2.year)
{
return d2;
}
else
{
if (d1.month > d2.month)
return d1;
else if (d1.month < d2.month)
return d2;
else
{
if (d1.day > d2.day)
return d1;
else
return d2;
}
}
}
共修正10处,请看修改后的程序标记位置
//---------------------------------------------------------------------------
#include
#define NUMTIME 2
struct Time
{
int month;
int day;
int year;
}; /*注意这里*/
struct Time larger(void);
int main(void)
{
int i;
struct Time date; /*注意这里*/
date=larger(); /*注意这里*/
printf("The latter date is %d/%d/%d", date.month, date.day, date.year); /*注意这里*/
return 0;
} /*注意这里*/
struct Time larger(void)
{
struct Time newdate[NUMTIME];
int i; /*注意这里*/
for(i=0;i
scanf("%d%d%d", &newdate[i].month, &newdate[i].day, &newdate[i].year);} /*注意这里*/
return (newdate[NUMTIME-1]); /*注意这里*/
}
//---------------------------------------------------------------------------
测试通过了
#include
#include
struct Time
{
int month;
int day;
int year;
};
struct Time larger();
int main()
{
int i;
struct Time latter;
latter = larger();
printf("The latter date is %d/%d/%d", latter.month, latter.day, latter.year);
return 0;
}
struct Time larger(){
struct Time date[2];
for(int i=0; i<2; i++ ){
printf("Enter the %d month, day and year:",i);
scanf("%d%d%d", &date[i].month, &date[i].day, &date[i].year);
}
if(date[0].year == date[1].year){
if(date[0].month == date[1].month)
return date[0].day>date[1].day?date[0]:date[1];
else return date[0].month>date[1].month?date[0]:date[1];
}
else return date[0].year>date[1].year?date[0]:date[1];
};
别怪我太邪恶:
[57@c-cpp]$ cat test.c
#include
#include
int main()
{
const char *a = "10/9/2001";
const char *b = "11/3/2001";
struct date{int year, month, day;} A, B;
sscanf(a, "%d/%d/%d", &A.month, &A.day, &A.year);
sscanf(b, "%d/%d/%d", &B.month, &B.day, &B.year);
printf("日期大的是:%s\n",
strcmp((const char*)&A, (const char*)&B) > 0 ? a : b);
return 0;
}
[58@c-cpp]$ gcc test.c
[59@c-cpp]$ ./a.out
日期大的是:11/3/2001