c 语言初级问题

[复制链接]
查看11 | 回复1 | 2008-12-12 17:29:39 | 显示全部楼层 |阅读模式
这是一个求当天是一年中第几天的程序 但是编写了下面的第一个代码觉得效率不高又写了类似的一个第二个为什么第儿歌不可以运行 望高手指教
#include
void main()
{
int f(int year,int month,int day);
int year,month,day,c;
scanf("%d %d %d",&year,&month,&day);
c=f(year,month,day)+day;
printf("number is %d day\n",c);
}
int f(int year,int month,int day)
{
int i,number1;
number1=0;
if((year%4==0 && year%100!=0) || (year%400==0))
{
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
for (i=0;i<month;i++)
{
number1=a+number1;
}
}
else
{
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for (i=0;i<month;i++)
{
number1=a+number1;
}
}
return(number1);
}
void main()
{
int f(int year,int month,int day);
int year,month,day,Number;
scanf("%d %d %d",&year,&month,&day);
Number=f(year,month,day);
printf("number is %d day\n",Number+day);
}
int f(int year,int month,int day)
{
int number1,i;
number1=0;
if((year%4==0 && year%100!=0)||(year%400==0))
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
else
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<month;i++)
{
number1=number1+a;
}
return(number1);
}
儿歌--二个

回复

使用道具 举报

千问 | 2008-12-12 17:29:39 | 显示全部楼层
因为你定义的数组属于局部变量,在if的条件判断中才有效。如果要在函数中使用就必须在函数中定义。int f(int year,int month,int day) { int number1,i; number1=0; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((year%4==0 && year%100!=0)||(year%400==0)) a[2]=29; for(i=0;i<month;i++) { number1=number1+a; } return(number1); }...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行