| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:[讨论]我是看书自学所以有些不会做 请你们交交我
只看楼主 加入收藏
mini610
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-11-6
收藏
 问题点数:0 回复次数:8 
[讨论]我是看书自学所以有些不会做 请你们交交我

因为我买书自己学习c语言 有些不太会做 所以请教大家交我做一下这道题,请大家多多帮忙 。

1题
当a>=0时,请将以下语句改成switch语句。
if (a<30) m=1;
else if (a<40) m=2;
else if (a<50) m=3;
else if (a<50) m=4;
else m=5;

2题
编写程序,输入一位同学的生日(年:y0. 月:m0. 日:d0);并输入当前的日期(年:y1. 月:m1 日:d1);输出该生的实足年龄。

[此贴子已经被作者于2006-11-6 15:13:40编辑过]

搜索更多相关主题的帖子: 自学 看书 
2006-11-06 15:11
baxia
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-3-10
收藏
得分:0 
1题是不是
if (a<30) m=1;
else if (a<40) m=2;
else if (a<50) m=3;
else if (a<60) m=4;
else m=5;
可以这么做:
switch(a/10)
{
case 1:m=1;break;
case 2:m=1;break;
case 3:m=2;break;
case 4:m=3;break;
case 5:m=4;break;
default: m=5;
}
2006-11-06 16:22
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

第二题我给做了.....考虑的东西比较多....

int leap(int year)/*判断是否为闰年,是返回1,否则返回0*/
{return year%4==0&&year%100!=0||year%400==0;
}
int judge(int a,int b,int c) /*判断输入年月日是否合法*/
{int i=0;
if(a<1900||a>2006||b<1||b>12)
i=1;
else if(leap(a)==1&&b==2&&(c<1||c>29))
i=1;
else if(leap(a)==0&&b==2&&(c<1||c>28))
i=1;
else if((leap(a)==0)&&(b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&(c<1||c>31))
i=1;
else if(leap(a)==0&&(c<1||c>30))
i=1;
return i;
}

int caculatebirth(int a,int b,int c) /*计算出生年或今年的天数*/
{int all;
switch(b)
{case 1: all=c;break;
case 2: all=31+c;break;
case 3: all=59+c;break;
case 4: all=90+c;break;
case 5: all=120+c;break;
case 6: all=151+c;break;
case 7: all=181+c;break;
case 8: all=212+c;break;
case 9: all=243+c;break;
case 10:all=273+c;break;
case 11:all=304+c;break;
case 12:all=334+c;
}
if(leap(a))all=all+1;
return all;
}


main()
{int year[2],month[2],day[2];
int middleyear,num=0,i,y;
long yeartotal,monthtotal,daytotal,total;
input1: printf("Input your birthday,the style like this:1985,9,11\n");
scanf("%d,%d,%d",&year[0],&month[0],&day[0]);
if(judge(year[0],month[0],day[0])==1)
{printf("error input,please input again\n");
goto input1;
}
input2: printf("Input the current date,the style like this:2006,11,6\n");
scanf("%d,%d,%d",&year[1],&month[1],&day[1]);
if(judge(year[1],month[1],day[1])==1||year[1]<year[0]||(year[1]==year[0]&&month[1]<month[0])||(year[1]==year[0]&&month[1]==month[0]&&day[1]<day[0]))
{printf("error input,please input again\n");
goto input2;
}
y=year[0]+1;
middleyear=year[1]-year[0]-1;
if(middleyear>=0)
{for(i=1;i<=middleyear;i++,y++)
if(leap(y))num++;
total=middleyear*365+num+365-caculatebirth(year[0],month[0],day[0])+1+caculatebirth(year[1],month[1],day[1]);
if(leap(year[0]))total=total+1;
}
else total=caculatebirth(year[1],month[1],day[1])-caculatebirth(year[0],month[0],day[0]);
yeartotal=total/365;
monthtotal=(total-yeartotal*365)/30;
daytotal=total-yeartotal*365-monthtotal*30;
printf("your birthday is\nyear: %d month: %d day: %d\n\n",year[0],month[0],day[0]);
printf("today is\nyear: %d month: %d day: %d\n\n",year[1],month[1],day[1]);
printf("till now,you have enjoyed your life\nyear : %ld month : %ld day : %ld\n\n",yeartotal,monthtotal,daytotal);
printf("and the total days you have existed are %ld\n",total);
getch();
}


[此贴子已经被作者于2006-11-8 13:00:53编辑过]


这个社会太复杂。。。
2006-11-06 22:49
段帅龙
Rank: 1
等 级:禁止访问
帖 子:82
专家分:0
注 册:2006-11-5
收藏
得分:0 
我晕!我也是自学的!这么多!把头都搞晕了!不过还是得谢谢有这么多热心人在帮我们这些目前的“弱者们”。在此替楼主谢过了!

剑傲网赚论坛诚聘版主url]http://www.[/url],让你的网络生活从此更加精彩!
2006-11-07 22:10
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
其实楼主自己可以给一点程序,无论是对是错,还是不完全也都可以,不能依靠求助,至少大家可以一起讨论。

谁有强殖装甲第二部,可以Q我460054868
2006-11-07 22:30
jackdevil
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-10-26
收藏
得分:0 

判断生日的输入不能那么简单的,还要考虑闰年和非闰年,2月份的日子是不同的

2006-11-07 22:49
jackdevil
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-10-26
收藏
得分:0 

void birthday()
{

start:

printf("请输入生日");
printf("请输入年份(4位数字,以回车结束)\n");
scanf("%d", &year);
//判断是否是闰年
if((year%4) == 0)
{
if(year%100 != 0)
{
LeapYear=1;
}
else
{
if(year%400 == 0)
{
LeapYear=1;
}
else
{
LeapYear=0;
}
}
}
else
{
LeapYear=0;
}
printf("请输入月份(2位数字,以回车结束)\n");
scanf("%d", &month);
//判断生日中的月份是否合法
while(month <= 0||month >12)
{
printf("输入的月份有误!请重新输入月份!\n");
scanf("%d", &month);

}


printf("请输入日期(2位数字,以回车结束)\n");
scanf("%d", &day);
//闰年的时候判断2月份的日期是否在1-29以内
if(LeapYear == 1)
{
if(month == 2)
{
while(day<1||day > 29)
{
printf("输入的的日期有误!请重新输入日期!\n");
scanf("%d", &day);
}
}
}

//判断每个月的日期是否合法
if(LeapYear == 0)
{
switch(month)
{
case 2:
while(day<1||day>28)
{
printf("输入的生日有误!请重新输入日期!\n");
scanf("%d", &day);
}
return;
case 4:

case 6:

case 9:

case 11:
while(day<1||day>30)
{
printf("输入的生日有误!请重新输入日期!\n");
scanf("%d", &day);
}

return;
default:
while(day<1||day>31)
{
printf("输入的生日有误!请重新输入日期!\n");
scanf("%d", &day);
}
}

}


2006-11-07 22:54
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用jackdevil在2006-11-7 22:49:18的发言:

判断生日的输入不能那么简单的,还要考虑闰年和非闰年,2月份的日子是不同的


我在程序中考虑过了。。。是用函数来实现的。。。用函数来判断输入的生日是否合法

[此贴子已经被作者于2006-11-7 23:23:07编辑过]


这个社会太复杂。。。
2006-11-07 23:11
ziyi555
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-11-4
收藏
得分:0 

第一题?
#include <stdio.h>
void main()
{
int a,m;
printf("输入a的值:");
scanf("%d",&a);
switch(a/10)
{
case 1:m=1;break;
case 2:m=1;break;
case 3:m=2;break;
case 4:m=3;break;
case 5:m=4;break;
default: m=5;
}

printf("%d",m);
}


放手一博
2006-11-08 03:49
快速回复:[讨论]我是看书自学所以有些不会做 请你们交交我
数据加载中...
 
   



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

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