C++c if else语句 if语句问题

c++的elseif 嵌套语句如何理解?_百度知道
c++的elseif 嵌套语句如何理解?
if (e1){ss1;}else if(e2){ss1;}if (e1)s1; else if(e2)s;哗辅糕恍蕹喝革桶宫垃if(e1)s1;else if(e2) s1;else s2;if 的条件 和else if 的条件是互斥的条件;如果 表面上并不是互斥的使用 if 。。 else if
结构后,也会变成互斥的; if 。。 else if
结构相当于if (e1) s1;else {if(e2)s2; }这种写法过于复杂,所以 简写为if(..)...;else if(...)...;else
if(...)...;else ...;每个 else和前面的 if 构成 if else 结构;总的框架 就成了 if 。。。else if 。。。else结构了;
其他类似问题
按默认排序
其他3条回答
if哗辅糕恍蕹喝革桶宫垃 (i==1) {//如果i等于1的情况下,执行这里的语句}elseif(i==2){//如果i等于2的情况下,执行这里的语句}else{//其它的情况下(即不等于1也不等于2),执行这里的语句}//和switch是一样的。switch(i){case 1://case 2://default:}
其实可以理解成另一个if子句,比如:if(){} eles {if() {}else{}}等同于if(){}elseif(){}else{}
对于一个if如果只有一个else则用if……else……,如果有多种else情况则可以选择用if……elseif……elseif……else……这样的语句
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁if语句的3种形式
1) if(表达式) 语句。
& & if(x&y) cout&&x&&
这种if语句的执行过程见图3.5(a)。
2) if(表达式) 语句1 else 语句2
& & if (x&y) cout&&x;
& & else& cout&&y;
见图3.5(b)。
3) if(表达式1) 语句1
& & else if(表达式2) 语句2
& & else if(表达式3) 语句3
& & else if(表达式m) 语句m
& & else& 语句n
(number&500) cost=0.15;
else if(number&300) cost=0.10;
else if(number&100) cost=0.075;
else if(number&50) cost=0.05;
else cost=0;
流程图见图3.6。
从图3.5和图3.6可以看到: 3种形式的if语句都是由一个入口进来,经过对&表达式&的判断,分别执行相应的语句,最后归到一个共同的出口。这种形式的程序结构称为选择结构。在C++中if语句是实现选择结构主要的语句。
3种形式的if语句中在if后面都有一个用括号括起来的表达式,它是程序编写者要求程序判断的&条件&,一般是逻辑表达式或关系表达式。
第2、第3种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。
在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号&{}&将几个语句括起来成为一个复合语句。
【例3.6】求三角形的面积。
#include &iostream&
#include &cmath& //使用数学函数时要包含头文件cmath
#include &iomanip&
//使用I/O流控制符要包含头文件iomanip
int main( )
double a,b,c;
cout&&&please enter a,b,c:&;
cin&&a&&b&&c;
if (a+b&c && b+c&a && c+a&b)
//复合语句开始
double s,//在复合语句内定义变量
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout&&setiosflags(ios::fixed)&&setprecision(4); //指定输出的数包含4位小数
cout&&&area=&&&area&&
//在复合语句内输出局部变量的值
} //复合语句结束
else cout&&&it is not a trilateral!&&&
运行情况如下:
please enter a,&b,&c:2.45 3.67 4.89↙
area=4.3565
变量s和area只在复合语句内用得到,因此在复合语句内定义,它的作用范围为从定义变量开始到复合语句结束。如果在复合语句外使用s和area,则会在编译时出错,系统认为这两个变量未经定义。将某些变量局限在某一范围内,与外界隔离,可以避免在其他地方被误调用。
if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:
& & & & if( )语句1
& & & & else 语句2
& & & & if( )语句3
& & & & else 语句4
应当注意if与else的配对关系。else总是与它上面最近的、且未配对的if配对。假如写成:
& & & & if( )语句1
& & & & if( )语句2
& & & & else 语句3
编程序者把第一个else写在与第一个if(外层if)同一列上,希望else与第一个if对应,但实际上else是与第二个if配对,因为它们相距最近,而且第二个if并未与任何else配对。为了避免误用,最好使每一层内嵌的if语句都包含else子句(如本节开头列出的形式),这样if的数目和else的数目相同,从内层到外层一一对应,不致出错。
如果if与else的数目不一样,为实现程序设计者的企图,可以加花括号来确定配对关系。例如:
& & & & if ( ) 语句1
& & } //这个语句是上一行if语句的内嵌if
& & else 语句2//本行与第一个if配对
这时{ }限定了内嵌if语句的范围,{ }外的else不会与{ }内的if配对。关系清楚,不易出错。C++教程第12_1讲(1)if选择语句_2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
28页免费11页免费7页免费5页¥0.502页免费4页免费4页免费3页免费6页免费31页1下载券
喜欢此文档的还喜欢575页1下载券13页免费5页3下载券15页1下载券23页免费
C++教程第12_1讲(1)if选择语句_2|C​+​+​教​程
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:825.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分104 UID7460915阅读权限20积分398帖子精华可用积分398 专家积分0 在线时间38 小时注册时间最后登录
稍有积蓄, 积分 398, 距离下一级还需 102 积分
帖子主题精华可用积分398 专家积分0 在线时间38 小时注册时间最后登录
论坛徽章:0
程序如下:
& &scanf(&%d&,&a);
& &if(a==1)
& && & {printf(&\n"
& && &&&b=getchar();
& && &&&if(b=='y')
& && && && && &printf(&yyy\n"
& && &&&else
& && && && && &printf(&nnn\n"
& && && &&&if(a==2)
& && && && && &&&printf(&\n"
& && && & else
& && && && && &&&printf(&You are wrong!!!\n"
小弟的问题是:红色部分为什么在if语句中不执行?b=getchar();没起作用
& && && && && && && &&&但是可输出:& &nnn
请教各位是不是if语句不能嵌入输入字符的语句?因为我将其换成
& && && &&&
& && && &&&scanf(&%d&,&b);
& && && &&&if(b==1)
& && && &&&printf(&......"
就可以执行。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分205 UID8129484阅读权限100积分218帖子精华可用积分218 专家积分2 在线时间123 小时注册时间最后登录
帖子主题精华可用积分218 专家积分2 在线时间123 小时注册时间最后登录
论坛徽章:1
if语句问题!
估计你的调试环境是Turbo C.
你在scanf(&%d&,&a);
再加一个getch(); 试试.
空间积分0 信誉积分205 UID8129484阅读权限100积分218帖子精华可用积分218 专家积分2 在线时间123 小时注册时间最后登录
帖子主题精华可用积分218 专家积分2 在线时间123 小时注册时间最后登录
论坛徽章:1
if语句问题!
因为你输入的1 被a接收了.
回车被b接收了. 所以显示了nnn.
空间积分0 信誉积分104 UID494094阅读权限20积分416帖子精华可用积分416 专家积分0 在线时间8 小时注册时间最后登录
稍有积蓄, 积分 416, 距离下一级还需 84 积分
帖子主题精华可用积分416 专家积分0 在线时间8 小时注册时间最后登录
论坛徽章:0
if语句问题!
1、同意mq110兄。
2、你的程序有小问题
main()
&&scanf(&%d&,&a);
&&if(a==1)
& && &{printf(&\n&);
& && && && && &&&/*能在这里定义变量吗?*/
& && & b=getchar();
& && & if(b=='y')
& && && && &&&printf(&yyy\n&);
& && & else
& && && && &&&printf(&nnn\n&);
else& && && && && && && && && &&&/*这里的else与哪个if配对啊?*/
& && && & if(a==2)
& && && && && & printf(&\n&);
& && && &else
& && && && && & printf(&You are wrong!!!\n&);
} 复制代码
A New GNU/Linux Distribution.
空间积分0 信誉积分107 UID287642阅读权限20积分746帖子精华可用积分746 专家积分0 在线时间25 小时注册时间最后登录
丰衣足食, 积分 746, 距离下一级还需 254 积分
帖子主题精华可用积分746 专家积分0 在线时间25 小时注册时间最后登录
论坛徽章:0
if语句问题!
/*能在这里定义变量吗?*/
空间积分0 信誉积分104 UID7460915阅读权限20积分398帖子精华可用积分398 专家积分0 在线时间38 小时注册时间最后登录
稍有积蓄, 积分 398, 距离下一级还需 102 积分
帖子主题精华可用积分398 专家积分0 在线时间38 小时注册时间最后登录
论坛徽章:0
if语句问题!
原帖由 &mq110& 发表:
因为你输入的1 被a接收了.
回车被b接收了. 所以显示了nnn.
好像是这样,可是怎么屏蔽这个回车呢?
空间积分0 信誉积分104 UID494094阅读权限20积分416帖子精华可用积分416 专家积分0 在线时间8 小时注册时间最后登录
稍有积蓄, 积分 416, 距离下一级还需 84 积分
帖子主题精华可用积分416 专家积分0 在线时间8 小时注册时间最后登录
论坛徽章:0
if语句问题!
请认真读回贴。
mq110兄说得很清楚:
估计你的调试环境是Turbo C.
你在scanf(&%d&,&a);
再加一个getch(); 试试.
找个读入函数把回车吃掉不就完了!!!!
A New GNU/Linux Distribution.
挨踢邊緣滾打摸爬
空间积分809 信誉积分283 UID阅读权限100积分5453帖子精华可用积分5453 专家积分10 在线时间2033 小时注册时间最后登录
帖子主题精华可用积分5453 专家积分10 在线时间2033 小时注册时间最后登录
论坛徽章:0
if语句问题!
原帖由 &kernelxu& 发表:
找个读入函数把回车吃掉不就完了!!!!
应该在scanf()前面加一行fflush();来清空内存就好了
int fflush( FILE *stream );
Function Required Header Compatibility
fflush &stdio.h&; ANSI, Win 95, Win NT
For additional compatibility information, see Compatibility in the Introduction.
LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version
Return Value
fflush returns 0 if the buffer was successfully flushed. The value 0 is also returned in cases in which the specified stream has no buffer or is open for reading only. A return value of EOF indicates an error.
Note& &If fflush returns EOF, data may have been lost due to a write failure. When setting up a critical error handler, it is safest to turn buffering off with the setvbuf function or to use low-level I/O routines such as _open, _close, and _write instead of the stream I/O functions.
Pointer to FILE structure
The fflush function flushes a stream. If the file associated with stream is open for output, fflush writes to that file the contents of the buffer associated with the stream. If the stream is open for input, fflush clears the contents of the buffer. fflush negates the effect of any prior call to ungetc against stream. Also, fflush(NULL) flushes all streams opened for output. The stream remains open after the call. fflush has no effect on an unbuffered stream.
Buffers are normally maintained by the operating system, which determines the optimal time to write the data automatically to disk: when a buffer is full, when a stream is closed, or when a program terminates normally without closing the stream. The commit-to-disk feature of the run-time library lets you ensure that critical data is written directly to disk rather than to the operating-system buffers. Without rewriting an existing program, you can enable this feature by linking the program’s object files with COMMODE.OBJ. In the resulting executable file, calls to _flushall write the contents of all buffers to disk. Only _flushall and fflush are affected by COMMODE.OBJ.
For information about controlling the commit-to-disk feature, see Stream I/O, fopen, and _fdopen.
/* FFLUSH.C */
#include &stdio.h&;
#include &conio.h&;
void main( void )
& &char string[81];
& &/* Read each word as a string. */
& &printf( &Enter a sentence of four words with scanf: & );
& &for( integer = 0; integer & 4; integer++ )
& && &scanf( &%s&, string );
& && &printf( &%s\n&, string );
& &/* You must flush the input buffer before using gets. */
& &fflush( stdin );
& &printf( &Enter the same sentence with gets: & );
& &gets( string );
& &printf( &%s\n&, string );
Enter a sentence of four words with scanf: This is a test
Enter the same sentence with gets: This is a test
This is a test
寵辱不驚,看庭前花開花落,去留無意;
沉浮莫嘆,知天上雲卷雲舒,聚散任風。
空间积分2 信誉积分149 UID阅读权限10积分172帖子精华可用积分172 专家积分0 在线时间33 小时注册时间最后登录
白手起家, 积分 172, 距离下一级还需 28 积分
帖子主题精华可用积分172 专家积分0 在线时间33 小时注册时间最后登录
论坛徽章:0
if语句问题!
大哥,if else没匹配,怎么编译通过的啊?
空间积分0 信誉积分154 UID190509阅读权限50积分2203帖子精华可用积分2203 专家积分0 在线时间152 小时注册时间最后登录
小富即安, 积分 2203, 距离下一级还需 2797 积分
帖子主题精华可用积分2203 专家积分0 在线时间152 小时注册时间最后登录
论坛徽章:0
if语句问题!
什么呀,if else不匹配,{}也没找对地方,根本通不过,晕
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处if-else语句_百度知道
if-else语句
cout&&&& }else {
cout&int main(){n&;&&gt,谢谢了; if(n&&gt, n=savings-\savings&gt,
cout&n; cout&;E&&&quot,谁帮我调试下:\ cin&;Solvent&&&&n& }}这个程序不能输出了;
return 0;Bankrupt&quot#include&iostream&gt
提问者采纳
因为你的int main(),所以你在else{}里也应该有return 语句。否则不能通过编译的。
其他类似问题
按默认排序
其他1条回答
;&n; using namespace std:\& cout& cin&; n=savings-savings& int main() { &&gt,n& cout&lt,\&& return 0;&Bankrupt&E;n&&0) { cout&& if(n&Solvent&&&& }else { cout&lt#include&iostream&gt
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 if else语句格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信