当前位置:首页 > C++程序设计基础 习题及其解答(第3版) 周霭如版本 华南理工大学
#include
{ int i, j, x = 0;
for( i=0; i<=3; i++ ) { x++;
for( j=0; j<=3; j++ ) { if( j % 2 ) continue; x++; } x++; }
cout << \}
【解答】 x= 16
2.3 思考题
1. C++中有什么形式的选择控制语句?归纳它们语法形式、应用场合。根据一个实际问题使用不同的条件语句编程。 【解答】 语句 使用方式 使用场合 if语句 if(表达式)语句1; 需要对给定的条件进行判断,并根else 语句2; 据判断的结果选择不同的操作。 适用于复杂的条件表达式判断。 switch 语句 switch(表达式) 根据整型表达式的不同值决定程{ case 常量表达式1: 语句1; 序分支的情况。 case 常量表达式2: 语句2; 适用于判断表达式简单,需要多个?? 分支处理的情况。 case 常量表达式n; 语句n; [default : 语句n+1;] } 演示程序: 程序(1)
//此程序用if输出等级对应的分数段
//A->=90,B-(90,80],C-(80,70] ,D-(70,60],,E-<60 #include
cout<<\cin>>gd;
//直到输入有效等级,否则程序不继续运行
while(!((gd>='A' && gd<='E')||(gd>='a' && gd<='e'))) { cout<<\ cin>>gd; }
if(gd=='A'||gd=='a') cout<<\ else if(gd=='B'||gd=='b') cout<<\
else if(gd=='C'||gd=='c') cout<<\
else if(gd=='D'||gd=='d') cout<<\ else if(gd=='E'||gd=='e') cout<<\ else cout<<\防止意外错误 }
程序(2)
//此程序用switch输出等级对应的分数段
//A->=90,B-(90,80],C-(80,70] ,D-(70,60],,E-<60 #include
9
int main() { char gd;
cout<<\cin>>gd;
//直到输入有效等级,否则程序不继续运行
while(!((gd>='A' && gd<='E')||(gd>='a' && gd<='e'))) { cout<<\ cin>>gd; }
switch(gd) { case 'A':
case 'a': cout<<\case 'B':
case 'b': cout<<\case 'C':
case 'c':cout<<\case 'D':
case 'd':cout<<\case 'E':
case 'e':cout<<\
default:cout<<\防止意外错误 } }
2. 什么叫循环控制?归纳比较C++中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程。 【解答】
循环控制是在特定的条件下,程序重复执行一些特定动作。 语句 语法 执行流程 使用场合 while语while(表达式) 程序中常用于根据条件句 循环体; 执行操作而不需关心循环次 数的情况。 循环条件:表达式值为非0(真) 先判断形式循环,条件循环结束条件:表达式值为0(假) 不成立时不进入循环体。 do-while语句 do 循环体 while(表达式); 循环条件:表达式值为非0(真) 循环结束条件:表达式值为0(假) 程序中常用于根据条件执行操作而不需关心循环次数。 后判断形式循环,至少执行1次循环体。 一般情况,while语句和do while语句可以互换使用。 10
3. 根据一个实际问题,用不同的循环语句编程,分析其优缺点。 【解答】 略。
4. 用if语句和goto语句组织循环,改写思考题的第3小题编写的程序。分析在什么情况下可以适当使用goto语句。 【解答】
在不破坏程序基本流程控制的情况下,可以适当使用goto语句实现从语句结构内部向外的必要跳转,即按特定条件结束结构语句块的执行。
程序略。
5.有以下程序
#include
if(c=='y'||c=='Y') int a=1; else
int a=0;
cout<<\}
编译错误为:error C2065: 'a' : undeclared identifier,指示变量a没有定义。请分析原因,并做出修改。
【解答】
变量a的定义不应该放在if-else语句体中。说明语句和执行语句的执行时机不同。变量说明要求在编译时定义存储空间,而if-else是执行语句,程序运行后才执行。正确的程序是:
#include
if(c=='y'||c=='Y') a=1; else a=0;
cout<<\}
6. 有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过C++编译而不能得到期望结果的原因。
#include
for 语句 for([表达式1];[表达式2];[表达式3]) 循环体; (1)表达式1称为初始化表达式,不是循环体执行部分。 (2)表达式3称为后置表达式,作为循环体的最后一个执行表达式。 (3)循环条件:表达式2值为非0(真) 循环结束条件:表达式2值为0(假) for语句称为步长循环语句,通常用于确定循环次数的情况。 由于语句的3个表达式均可以缺省,也可以用于条件循环,即循环次数不确定的情况。 11
{ int a,b;
cout<<\ cout<<\ if( a=b )
cout< cout< 程序运行后,输入a的值为4,b的值为9,显示结果如下: a: 4 b: 9 9等于9 【解答】 在if语句的判断表达式(a=b)中,赋值号“=”应该是逻辑等“==”。从语法上,C++的if语句把a=b这个赋值表达式视为逻辑表达式,没有编译错误。a=b的值决定于b。若b的输入值不等于0,if作为逻辑真(true),否则作为逻辑假(false)。所以,题目中输入b的值虽然不等于a,但表达式a=b为逻辑true,执行了if语句的第1个分支。 2.4编程题 1.输入某学生成绩,若成绩在85分以上输出“very good”,若成绩在60分到85分之间输出“good”,若成绩低于60分输出“no good”。 【解答】 #include { double score; cout << \ cin >> score; if ( score>=85 ) cout << \ else if ( score>=60 ) cout << \ else cout << \} 2.输入三个整数,按从小到大的顺序输出它们的值。 【解答】 #include { int a, b, c, t; cout << \cin >> a >> b >> c; if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } cout<< a << '\\t'<< b << '\\t' << c << endl; } 3.输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。 【解答】 #include { double a, b, c ; cout << \ cin >> a >> b >> c ; if ( a+b > c && b+c > a && c+a > b ) { if ( a == b && b == c ) cout << \等边三角形!\ else if ( a == b || a == c || b == c ) cout << \等腰三角形!\ 12
共分享92篇相关文档