使c++ if语句同时满足两个条件,急急急,加悬赏。

在做一个输入年份、月份,就知道这个月多少天的程序

#include <iostream>
using namespace std;
int main ()
{
int x,y;
cout<<"请输入年份" <<endl;
cin>>x;
cout<<"您输入的年份是"<<x<<"请输入月份" <<endl;
cin>>y;

if (y==1)cout<<"这个月有31天";
if (y==3)cout<<"这个月有31天";
if (y==5)cout<<"这个月有31天";
if (y==7)cout<<"这个月有31天";
if (y==8)cout<<"这个月有31天";
if (y==10)cout<<"这个月有31天";
if (y==12)cout<<"这个月有31天";
if (y==4)cout<<"这个月有30天";
if (y==6)cout<<"这个月有30天";
if (y==9)cout<<"这个月有30天";
if (y==11) cout<<"这个月有30天";
{

if(y=2)
{
if((x%400==0)||(x%100!=0&&x%4==0))
cout<<"这个月有29天"<<endl;
else
cout<<"这个月有28天"<<endl;
}

system("pause") ;
return 0;
}}

运行后的结果如果y!=2,那么就会出现

这个月31天这个月28天
这样的语句

【【【【如何使if同时满足两个条件,求高手指点~!】】】】

你的错误是if(y=2),这是赋值语句,而不是判断语句,应该是if(y==2)。另外你的if语句写的太乱,而且也没必要写得那么多,因为if的条件中可以使用if(条件1 && 条件2 && ...)来同时满足这多个条件,使用if(条件1 || 条件2 ||....)来满足其中的任一个条件,所以你完全可以写成if (y==4||y==6||y==9||y==11)之类的来简化程序。还有就是你的月份范围没有限制,因为月份不能小于1和大于12。if语句之前忽略了这个,而if判断也少了1到12之外的值。写程序要养成良好的写代码的风格。刚才给你改进了一下,写了一个很简单的类似的程序,留下你的邮箱,我发给你,你看看。
cout<<"**********************欢迎使用*********************"<<endl;
cout<<"***************************************************"<<endl;
cout<<"**********************输入1退出********************"<<endl;
cout<<"*********************输入其它使用******************"<<endl;
cout<<"***************************************************"<<endl;

int iShutter;
cin>>iShutter;

while (iShutter!=1)
{
int x,y;

cout<<"请输入年份: ";
cin>>x;
cout<<"您输入的年份是 "<<x;

cout<<"\n请输入月份: ";
cin>>y;
while (y<1||y>12)
{
cout<<"您输入了错误的月份,请重新输入月份:";
cin>>y;
}

cout<<"您输入的月份是 "<<y<<"\n\n";

if (y==1||y==3||y==5||y==7||y==8||y==10||y==12)
{
cout<<x<<" 年 "<<y<<" 月有31天"<<endl;
}
else if (y==4||y==6||y==9||y==11)
{
cout<<x<<" 年 "<<y<<" 月有31天"<<endl;
}
else if (y==2)
{
if((x%400==0)||(x%100!=0&&x%4==0))
cout<<x<<" 年 "<<y<<" 月有29天"<<endl;
else
cout<<x<<" 年 "<<y<<" 月有28天"<<endl;
}

cout<<"\n\n\n\n";
cout<<"**********************欢迎使用*********************"<<endl;
cout<<"***************************************************"<<endl;
cout<<"**********************输入1退出********************"<<endl;
cout<<"*******************输入其它继续使用****************"<<endl;
cout<<"***************************************************"<<endl;

cin>>iShutter;
}

cout<<"********************感谢您的使用*******************"<<endl;
cout<<"**********************再见!***********************"<<endl;
cout<<"\n\n\n\n";

return 0;
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
===============================================================
楼主意思就是输出不正确
首先楼主你不小心写错一个地方
if(y=2) //这里错了 改成y==2
{
if((x%400==0)||(x%100!=0&&x%4==0))
cout<<"这个月有29天"<<endl;
else
cout<<"这个月有28天"<<endl;
}

if同时满足两个条件 if(条件1&&条件2)
if同时只用满足一个 if(条件1||条件2)
==============================================================
程序可以稍微写清楚点:

#include <iostream>
using namespace std;
int main ()
{
int x,y;
cout<<"请输入年份" <<endl;
cin>>x;
cout<<"您输入的年份是"<<x<<"请输入月份" <<endl;
cin>>y;

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
cout<<"这个月有31天";
else if(y==2)
{
if((x%400==0)||(x%100!=0&&x%4==0))
cout<<"这个月有29天"<<endl;
else
cout<<"这个月有28天"<<endl;
}
else
cout<<"这个月有30天"<<endl;

system("pause") ;
return 0;
}
}本回答被提问者和网友采纳
第2个回答  2010-11-19
例如:需要满足a>=1,且b<=5就这样写if(a>=1&&b<=5)
那个&&你就用"而且"来理解吧
第3个回答  2010-11-19
if(条件1 && 条件2)
&&表示and的意思!!
第4个回答  2010-11-19
if(y=2)应该是 if(y==2)吧- -

使c++ if语句同时满足两个条件,急急急,加悬赏。
你的错误是if(y=2),这是赋值语句,而不是判断语句,应该是if(y==2)。另外你的if语句写的太乱,而且也没必要写得那么多,因为if的条件中可以使用if(条件1 && 条件2 && ...)来同时满足这多个条件,使用if(条件1 || 条件2 ||...)来满足其中的任一个条件,所以你完全可以写成if (y==4...

C++如何在一个if语句中同时执行两个语句
if(条件){ 语句1;语句2;} 用花括号包含两个语句即可。

请问C++中如何在if语句中写两个条件?
前者为if (...) ...; else if (...) ...;后者为if (...&&...) ...;或if (...||...) ...;

c++如何进行两个条件的判断
if(条件1){ if(条件2){ ...\/\/条件1、2同时成立 } else{ ...\/\/1成立,2不成立 } } else{ if(条件2){ ...\/\/1不成立,2成立 } else{ ...\/\/1不成立,2也不成立 } } 有点麻烦,但可以用。平时判断就用楼上 if(条件1 && 条件2)if(条件1 || 条件2)这种方式就行了哎 ...

C++怎么用if表示多个条件同时为真
if( (n\/1000 == 1 || n\/1000 == 2) \/\/最高位为1或2 && ((n\/100)%10 == 1 || (n\/100)%10 == 2) \/\/百位 && ((n\/10)%100 == 1 || (n\/10)%100 == 2) \/\/十位 && (n%1000 ==1 || n%1000 == 2) ) \/\/个位 printf("Yes");else printf("No");...

怎么在c++中的if语句中书写多个条件
if((s[i] >= 'a') && (s[i] <= 'z')) s[i] = s['a'+ (s[i] - 'a' + 3)%26] \/\/ 小写字母if((s[i] >= 'A') && (s[i] <= 'Z')) s[i] = s['A'+ (s[i] - 'A' + 3)%26] \/\/ 大写字母例如:s[i] = 'a'时,s[i] - 'a' = 0,...

[c++]编写程序,输出所有100到10000之间同时满足下列两个条件的整数,求...
include<iostream>using namespace std;int main(){int counter[10] ;bool flag = false;int count = 0;for (int i = 100; i <= 10000; i++){\/* * initialize the counter to zeros; *\/flag = false;memset(counter, 0, sizeof(int) * 10);if (0 == i % 7){int temp = i...

C++中if后若有两条以上的语句为什么必须要用花括号括起来?此时括起来的...
因为不用括号括起来,默认就执行IF后的第一句 是IF的字句,用括号括起来,叫代码块,执行if后如果条件成了,执行IF后的代码块。 不带括号 代码块默认是IF后的第一句

如何在if语句中设定两个条件
if(条件一 && 条件2)

c++。这里两个条件一个用if...,if...;或者if...else if...为什么答案出...
else if只有在第一个if条件不符合的时候才做,所以大写变小写,小写变大写。两个if,第一个做了不管结果都要再判断第二个,于是小转大倒是无所谓,大转小的刚转完,第二个if又判断它是小写再转大,于是出来的都是大写了。

相似回答