}
运行结果:
a=16y=60
(9)#include
voidmain()
{inti,k=19;
while(i=k-1)
{k-=3;
if(k%5==0){i++;continue;}
elseif(k<5)break;
i++;}
cout<<“i=”<
}
运行结果:
i=6k=4
(10)#include
voidmain()
{inti=5;
do{switch(i%2)
{case4:
i--;break;
case6:
i--;continue;
}
i--;i--;
cout<0);
}
运行结果:
31-1
4.回答下列问题
(1)C++语言提供了哪些常用的语句?
答:
C++语言提供了多个常用的语句,先列举一些如下:
1)1) cin>><变量名1>>><变量名2>>>…….
2)2) cout<<<变量名1><<<变量名2><<…….
3)3) if(表达式)语句1;
4)4) if(表达式)语句1;
else语句2;
5)5) switch(表达式)
{case表达式1:
语句序列1;[break;]
case表达式2:
语句序列2;[break;]
……….
[default:
语句序列n+1;]
}
6)6) while(表达式)语句;
7)7) do
语句;
while(表达式);
8)8) for(表达式1;表达式2;表达式3)语句;
(2)条件语句的格式如何?
if语句中对else子句有何规定?
答:
条件语句的格式为:
if(表达式)语句1;或
if(表达式)语句1;
else语句2;
在条件语句嵌套中,从第一个else子句开始,“else”总是与离它最近的尚未配对的“if”配对。
(3)开关语句的格式如何?
break语句在开关语句中有何作用?
答:
开关语句的格式为:
switch(表达式)
{case表达式1:
语句序列1;[break;]
case表达式2:
语句序列2;[break;]
……….
case表达式n:
语句序列n;[break;]
[default:
语句序列n+1;]
}
break语句在开关语句中表示执行完这个分支后跳出switch语句,不再转去执行后续的情况,它保证了程序只能选择各种情况中的一种来执行。
如果某个分支后没有break语句,将会继续向下一个分支的语句去执行,且不再对后面的情况常量进行判断。
(4)在开关语句中,case子句的条件有何特点?
答:
在开关语句中,case子句中的条件应为常数表达式,其值一般为整数或字符常数。
(5)C++语言提供哪些循环语句?
它们各自的特点是什么?
它们可以相互替代吗?
可以相互嵌套吗?
答:
C++语言提供三种循环语句:
for循环语句应用最惯犯,使用最灵活。
不仅可以用于循环次数已经确定的情况,也能用于循环次数不确定、只给出循环结束条件的情况。
它可以代替其他类型的循环语句。
while循环语句,其特点是先判断表达式,后执行语句,在循环体中应有使循环趋于结束的语句。
do-while语句,其特点是先执行语句,后判断表达式。
对同一个问题可以用while语句处理,也可以用do-while语句处理。
在循环的嵌套中,不同类型的循环可以相互嵌套。
(6)while和do~while循环语句有什么区别吗?
答:
while和do~while循环语句的区别在于:
while语句是判断表达式,后执行语句;而do-while语句是先执行语句,后判断表达式,do-while语句至少执行一次循环体语句。
(7)continue、break语句在循环中分别起到什么作用?
答:
continue语句用于结束本次循环,即跳过循环体中下面尚未执行的语句,但并不跳出循环,而是控制返回循环语句的条件测试部分,继续执行循环。
break语句是强制结束循环,不再进行条件的判断。
5.按下列要求编写程序
(1)有一个函数如下:
x(x<5)
y=x+6(5<=x<15)
x-6(x>=15)
输入x的值,计算出相应的y值。
程序为:
#include
voidmain()
{floatx,y;
cin>>x;
if(x<5)y=x;
elseif(x<15)y=x+6;
elsey=x-6;
cout<<"x="<}
(2)编程要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。
程序为:
#include
voidmain()
{inta,b;
cin>>a>>b;
if(a*a+b*b>100)cout<<(a*a+b*b)/100<elsecout<}
(3)根据π/4=1-1/3+1/5-1/7+…求π的近似值,直到最后一项的值小于0.000001为止。
程序为:
#include
voidmain()
{inti=1;
floats=1.0,pi=0;
while(1.0/i>=0.000001)
{pi=pi+s/i;s=-s;i=i+2;
}
cout<<4*pi<}
(4)编程输出如下图形:
(例n=6)
*
*****
*********
*************
*****************
*********************
程序为:
#include
voidmain()
{inti,j,k;
for(i=1;i<=6;i++)
{for(k=1;k<=20-2*i;k++)
cout<<'';
for(j=1;j<=4*i-3;j++)
cout<<'*';
cout<}
}
(5)求1!
+2!
+3!
+…8!
。
程序为:
#include
voidmain()
{inti,j=1,sum=0;
for(i=1;i<=8;i++)
{j=j*i;
sum=sum+j;
cout<}
cout<<"1!
+2!
+...+8!
="<}
(6)打印出所有的“水仙花数“(它是一个三位数,其各位数字立方和等于该数本身)。
程序为:
#include
voidmain()
{inti,j,k,n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{n=i*100+j*10+k;
if(n==i*i*i+j*j*j+k*k*k)cout<}
}
(7)编写一个程序,输入年、月,打印出该年份该月的天数。
程序为:
#include
voidmain()
{intyear,month,days;
cin>>year>>month;
switch(month)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;break;
case2:
if(year%400==0||year%4==0&&year%100!
=0)days=29;
elsedays=28;
}
cout<}
(8)输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。
程序为:
#include
voidmain()
{intn,i;
cin>>n;
cout<i=2;
while(n>1)
{while(n%i==0)
{cout<<"*"<
i++;
}
}