急求:C语言编程题的解答:两个问题 如下 20
【程序1】题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大...
【程序1】题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
【程序2】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 展开
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
【程序2】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 展开
3个回答
展开全部
【程序1】:
main()
{
int day,month,year,sum,leap;
printf("\nplease 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)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
【程序2】:
#include <stdio.h>
bool resv(int cuurent,int &count);
void main(void)
{
int base=0;//初次桃子个数
int cuurent=base;//当前桃子个数
int count=0;//桃子总数
int monkey=1;//当前猴子
bool flag=true;
while(monkey<6)//猴子数为5个
{
flag=resv(cuurent,count);
if(flag)//满足均分的情况
{
cuurent=count;//当前桃子改为总桃子
monkey++;//猴子递增
}
else//不满足均分
{
monkey=1;//猴子置储值
base++;//最初桃子递增
cuurent=base;//当前桃子置出
}
}
printf("最后剩下%d,桃子总数:%d",base,count);
}
bool resv(int cuurent,int &count)//根据当前桃子求上次均分前桃子
{
if((cuurent%4)!=0)//是否满足均分
return false;
count=(cuurent/4)*5+1;//得到前次总数
return true;
}
/*
最后剩下1020,桃子总数:3121
*/
main()
{
int day,month,year,sum,leap;
printf("\nplease 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)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
【程序2】:
#include <stdio.h>
bool resv(int cuurent,int &count);
void main(void)
{
int base=0;//初次桃子个数
int cuurent=base;//当前桃子个数
int count=0;//桃子总数
int monkey=1;//当前猴子
bool flag=true;
while(monkey<6)//猴子数为5个
{
flag=resv(cuurent,count);
if(flag)//满足均分的情况
{
cuurent=count;//当前桃子改为总桃子
monkey++;//猴子递增
}
else//不满足均分
{
monkey=1;//猴子置储值
base++;//最初桃子递增
cuurent=base;//当前桃子置出
}
}
printf("最后剩下%d,桃子总数:%d",base,count);
}
bool resv(int cuurent,int &count)//根据当前桃子求上次均分前桃子
{
if((cuurent%4)!=0)//是否满足均分
return false;
count=(cuurent/4)*5+1;//得到前次总数
return true;
}
/*
最后剩下1020,桃子总数:3121
*/
展开全部
#include<iostream>
using namespace std;
bool think (int s)
{
for (int i=0;i<5;i++)
{
s--;
if (s/5*4/4*5!=s)
return 0;
s=s/5*4;
}
if (s<1)
return 0;
return 1;
}
main ()
{
int s=0;
for (s=0;!think(s);s++)
{};
cout<<s;
// cin>>s;
}
using namespace std;
bool think (int s)
{
for (int i=0;i<5;i++)
{
s--;
if (s/5*4/4*5!=s)
return 0;
s=s/5*4;
}
if (s<1)
return 0;
return 1;
}
main ()
{
int s=0;
for (s=0;!think(s);s++)
{};
cout<<s;
// cin>>s;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main()
{int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else
break;
}
i=m;
if(count==4)
{printf("%d\n",j);
break;}
}
}
{int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else
break;
}
i=m;
if(count==4)
{printf("%d\n",j);
break;}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询