| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 811 人关注过本帖
标题:程序有个地方看不懂,请指教?
只看楼主 加入收藏
jiawan007
Rank: 1
等 级:新手上路
帖 子:45
专家分:2
注 册:2009-8-1
结帖率:90.91%
收藏
已结贴  问题点数:5 回复次数:11 
程序有个地方看不懂,请指教?
题目:输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
int main(void)
{
    int year,month,day,sum,leap;
    printf("\n please input year,month,day\n");
    scanf("%d,%d,%d",&year,&month,&day);
    switch(month){
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf("data error");break;
    }
    sum=sum+day;
    if(year%400==0||year%4==0&&year%100!=0)
        leap=1;
    else leap=0;
    if(leap==1&&month>2);
    sum++;
    printf("It is the %dth day.",sum);
    return 0;
}
请问一下这里的leap为什么等于1或者0,1和0是不是仅仅是一个表示而已,能否用别的数字代替?
搜索更多相关主题的帖子: 指教 
2009-10-26 21:58
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:0 
可以
2009-10-26 22:12
man's
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2009-10-26
收藏
得分:0 

貌似,当条件    if(year%400==0||year%4==0&&year%100!=0)  成立,是闰年。。
计算机习惯上用1表示“真”,0表示“假”。。。
用其他数值应该大概也许可能是可以的吧。。。
2009-10-26 22:16
我爱好
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2009-10-25
收藏
得分:0 
if(year%400==0||(year%4==0&&year%100!=0))
2009-10-26 22:21
尐傑哭嘞
Rank: 4
来 自:苏州
等 级:业余侠客
帖 子:81
专家分:257
注 册:2009-10-26
收藏
得分:0 
else 后面是不能加语句的,就是你用红颜色写的那个 leap=0,那语句,试试去掉,然后判断是否是闰年的是if(year%4==0&&year%100!=0||year%400==0)
你的感叹号放错地方了

为什么我永远那么倒霉!!!!!!
2009-10-27 16:56
尐傑哭嘞
Rank: 4
来 自:苏州
等 级:业余侠客
帖 子:81
专家分:257
注 册:2009-10-26
收藏
得分:0 
你和我做的题目一样,我也不知道答案,真的好巧,一样的题目,你现在知道答案了吗,能发给我吗,谢谢了

为什么我永远那么倒霉!!!!!!
2009-10-27 16:59
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:2 
lemp是标记变量,无所谓是1还是0,只要是2个不同的两个“东东”就能区别跳出循环时判断的结果
    我细讲一下:
        一般程序只有一个出口,那是顺序执行,在printf就直接输出了,所以没必要设置标记变量
        有个程序会有一个判断,两个出口,一般可以用if-else输出就over了
        但当程序有n个出口的时候怎么办呢?就好比switch语句中case的出口,所以设置一个标记变量,输出的时候根据标记变量的值判断输出。

ps:一个军官不会喊每个士兵的名字,而是喊编号,编号对应了一个人,也就是标记变量对应了一个出口

我可好玩啦...不信你玩玩^_^
2009-10-27 17:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:2 
在 c 语言中,0表示假, 非0表示真。

//-----------------------------------------------------------------

    if(year%400==0||year%4==0&&year%100!=0)
        leap=0;
    else
        leap=1;

        if(leap != 0 && month>2);        //
            sum++;
    printf("It is the %dth day.",sum);
    return 0;
}


//--------------------------------

int a = 5;
int b = (a == 5);       // b = 1
int c = (a == 2);       // c = 0

比较运算符>、<、==、>=、<=、!=,操作数有2个,返回两数比较的结果。如果成立,则返回真(即1),否则返回假(即0)。

关键字“if”在其括号中的表达式如果结果为非0,则执行紧跟其后的语句,否则跳过。

0 为假,非0为真。
!0 等于真,非运算符

—>〉Sun〈<—
2009-10-27 19:12
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 8楼 cosdos
你想表达啥

我可好玩啦...不信你玩玩^_^
2009-10-27 19:17
yilangcb
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2009-10-15
收藏
得分:1 
那个1可以用其他数表示,0不可以
2009-10-27 19:38
快速回复:程序有个地方看不懂,请指教?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088186 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved