c语言闺年个数求解
答案:2 悬赏:20 手机版
解决时间 2021-03-05 23:15
- 提问者网友:放下
- 2021-03-04 23:21
c语言闺年个数求解
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-05 00:13
#include
#include
int main()
{int a,b,t,n;
while(1)
{scanf("%d%d",&a,&b);
if(a==0&&b==0)break;
if(a>b){t=a;a=b;b=t;}
if(a%4)a+=4-a%4;
for(n=0;a<=b;a+=4)
n+=a%100||a%400==0;
printf("%d
",n);
}
return 0;
}追问您好!我想再咨询下,如果我想要按照题目的格式我该怎么改呢?追答这就是按照题目的要求输出的,有一行输入就有一行输出。(没有必要全部输入结束后再输出,题目也没有这么要求,难道是老师要求这样吗?)追问
您好,这是老师讲的案例麻烦了!追答
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-03-05 01:13
您的原设计有四个错:
一、您的while(a&&b)……目的,本来应是只要a和b都不是零,就执行一遍整个操作,实现“每行都计算有多少个闰年”,但是while()后面的循环体只能有一个语句,而你没有把“一遍整个操作”括成一个复合语句,于是就变成了只有一个scanf句被当成循环体了。
二、开头的count=0应该移到while语句的循环体内,才能在每行计算之前给count初始化。
三、for语句的循环体里面不应该给count清零了,刚加一次1,就清零那样结果就是永远不可能大于1了。
四、printf语句不应该放在最内层,那样每加一次1都输出一次显然不对,应放在for循环外while循环内。
修改如下(注:因百度显示有毛病,为了对齐我添加了一些“全角空格”。您如果直接拷贝的话可将其中的全角空格全换成半角,即普通的西文空格):
#include
int main(void)
{
int i,count,a,b;
a=b=1;
while(a&&b)
{
count=0;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
if((i%4==0)&&(i%100!=0)||(i%400==0)) count++;
printf("%d\n",count);
}
return 0;
}追问您好,我想再咨询下,如果我想要按照题目的格式我该怎么改呢?
一、您的while(a&&b)……目的,本来应是只要a和b都不是零,就执行一遍整个操作,实现“每行都计算有多少个闰年”,但是while()后面的循环体只能有一个语句,而你没有把“一遍整个操作”括成一个复合语句,于是就变成了只有一个scanf句被当成循环体了。
二、开头的count=0应该移到while语句的循环体内,才能在每行计算之前给count初始化。
三、for语句的循环体里面不应该给count清零了,刚加一次1,就清零那样结果就是永远不可能大于1了。
四、printf语句不应该放在最内层,那样每加一次1都输出一次显然不对,应放在for循环外while循环内。
修改如下(注:因百度显示有毛病,为了对齐我添加了一些“全角空格”。您如果直接拷贝的话可将其中的全角空格全换成半角,即普通的西文空格):
#include
int main(void)
{
int i,count,a,b;
a=b=1;
while(a&&b)
{
count=0;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
if((i%4==0)&&(i%100!=0)||(i%400==0)) count++;
printf("%d\n",count);
}
return 0;
}追问您好,我想再咨询下,如果我想要按照题目的格式我该怎么改呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯