首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

谭浩强C程序设计(第三版)练习11.1

2013-03-12 
谭浩强C程序设计(第三版)习题11.1题目:定义一个结构体变量(包括年,月,日)。计算改日在本年中是第几天?注意

谭浩强C程序设计(第三版)习题11.1
题目:定义一个结构体变量(包括年,月,日)。计算改日在本年中是第几天?注意闰年问题。
我写的代码:

#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
int count(int Y,int M,int D)
{
int k;
k=D;
switch (M)
{
case 12:k=k+30;
case 11:k=k+31;
case 10:k=k+30;
case 9:k=k+31;
case 8:k=k+31;
case 7:k=k+30;
case 6:k=k+31;
case 5:k=k+30;
case 4:k=k+31;
case 3:{
if((Y%4==0)&&(Y%100==0))k=k+29;
else k=k+28;
   }
case 2:k=k+31;
case 1:k=k+0;break;
default:printf("输入的日期有误!\n");
break;
}
return(k);
}
void main()
{
int count(int Y,int M,int D);
int n;
struct date birthday;
scanf("%d%d%d",&birthday.year,&birthday.month,&birthday.day);
n=count(birthday.year,birthday.month,birthday.day);
printf("该日期为本年第%d天\n",n);
getch();
}

问题如下:我写代码的时候,朋友跟我说,switch语句下的case后面的表达式是不能有变量的,但是我的代码在case后面是跟变量k来计算天数的.照我朋友的说法,我的代码应该是语法有错误的.但是编译下来是成功的,输入一个日期,输出的结果也是正确的,这是怎么回事呢?是我朋友弄错了吗?新手求指教 c
[解决办法]
case 后面,‘:’前面的部分一定要常量,‘:’后面的表达式可以有变量

热点排行