有一些C++题不是很懂,请帮忙解释,非常感谢

<1>是不是(int)2/3=0,(double)2/3=0,(float)2/3=1?<2>intnn=5/2*3的值?是先算乘法还是除法?<3>doublex,yx=... <1>是不是(int)2/3=0,(double)2/3=0,(float)2/3=1?
<2>int n
n=5/2*3的值?是先算乘法还是除法?
<3>double x,y
x=1;
y=x+++3/4; y的值?答案是1,难道是在计算里x++算作1吗?
<4>赋值表达式i=j= =k是什么意思?
<5>for(i=5;I;i--)
for(j=0;j<5;j++)
{…} 内循环执行几次?答案是25,怎么来的?
<6>do
i++;
while(i=0); i的最终值是?答案是0,为什么不是1呢?
<7>for(int i=0,m=1;i<4;i++)
for(intj=0;j<I;j++)
m+=1;
cout<<m; 输出结果是?答案是7.嵌套循环不太懂,求详解。
<8>执行下面的程序时,若从键盘输入123*并以回车结束,则输出结果是?答案是545556,怎么有六位啊?
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
char ch;
cin>>ch;
while(ch!=’*’
{
switch(ch)
{
case 0:
case 1:cout<<ch+1;
case 2:cout<<ch+2;break;
case 3:cout<<ch+3;
case 4:cout<<ch+5;
}
cin>>ch;
}
return 0;
}
<9>由于3^2+4^2=5^2,称3,4,5为勾股数,试编程求出100以内的所有勾股数。
<10>下面程序的输出结果是?答案是1,1,3,不明白。
#incllude<iostream>
using namespace std;
int main()
{
int i=3,j=2,a,b,c;
a=(--i==j++)?--i:++j;
b=i++;
c=j;
cout<<a<<’,'<<b<<’,'<<c<<endl;
return 0;
}
请将<7>中m是为何等于7的再讲清楚一些好吗?还有如果<8>书写正确输出结果是怎么来的?
展开
 我来答
bdlanyu
2011-12-03 · TA获得超过550个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:524万
展开全部
<1>为什么2/3=0因为在计算机中,整数的除法是整除+余数的,2/3结果为零余数为2
<2>n=5/2*3;那个先算,这是由运算符号的优先级来决定的
<3>y=x+++3/4; 分析起来y=(x++)+3/4;
<4>i=j= =k;按符号优先级与结合顺序;i=(j==k);j==k是一个逻辑判断语句,结果为布尔型(零与非零)。
<5>for(i=5;I;i--)//若单个语句,执行5次
for(j=0;j<5;j++)//若单个语名句,执行5次
既然是两个互不影响的循环语句嵌套在一起,那个循环次数就是他们乘积了
<6>i++;相当于一个空语句与一个赋值语句
;
i=i+1;
while(i=0);//这里的i被赋值,当然最终结果为0
<7>嵌套循环,层层递进,把外循环的值带到内循环,再计算内循环的值。
如,循环在第一次循环时
i为0//外循环i<4,循环进行
j为0//j<0条件为假,循环不进行,退出,并回到外循环
第二次外循环
i=1//
j为0//经过一次循环后,j=1,循环条件不满足,退出,并回到外循环
<8>写法有误,ch为char类型,所以cout也是按char类型来接收数据。
输入1时,ch='1'而不是ch=1;
所以case 1之类要改成,case '1'
<9>^在c编程中,^这个代表是两数按位异或,而不是平方
3*3+4*4=5*5
a*a+b*b=c*c
<10>
a=(--i==j++)?--i:++j;//这样的问题没有多大意义,因为实际应用中,这样的写法看起来很傻
a=((--i)==j++)?(--i):(++j) => a=(i=i-1)== j ? (i=i-1):(j=j+1); j=j+1; =>
a=2 == 2 ? (i=i-1):(j=j+1);j=j+1; =>a=(i=i-1);j=j+1;
a=(i=i-1); => i=1; a=1
b=(i);i=i+1; => i=1; b=1 ; i=2;
c=j; => j=3; c=3;
modestboy44
2011-12-03 · 超过29用户采纳过TA的回答
知道答主
回答量:186
采纳率:0%
帮助的人:90.4万
展开全部
<1>(int)2/3=0,(double)2/3=0,(float)2/3=0
<2>int n
n=5/2*3的值是6,乘除优先级一样,谁在前先算谁(大部分编译系统都是)
<3>double x,y
x=1;
y=x+++3/4; y的值是1;++放在变量后边是使用后再加1
<4>赋值表达式i=j= =k是什么意思?==的优先级高于=,所以这个表达式是测试j是否等于k,如果相等i的值为1,否则为0;
<5>for(i=5;I;i--)
for(j=0;j<5;j++)
{…} 内循环执行几次?答案是25,怎么来的?大循环(i)每执行一次,小循环(j)执行5次,所以总次数为5*5=25次;
<6>do
i++;
while(i=0); i的最终值是?答案是0,为什么不是1呢?
<7>for(int i=0,m=1;i<4;i++)
for(intj=0;j<I;j++)
m+=1;
cout<<m; 输出结果是?答案是7.嵌套循环不太懂,求详解。
<8>执行下面的程序时,若从键盘输入123*并以回车结束,则输出结果是?答案是545556,怎么有六位啊?
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
char ch;
cin>>ch;
while(ch!=’*’
{
switch(ch)
{
case 0:
case 1:cout<<ch+1;
case 2:cout<<ch+2;break;
case 3:cout<<ch+3;
case 4:cout<<ch+5;
}
cin>>ch;
}
return 0;
}
<9>由于3^2+4^2=5^2,称3,4,5为勾股数,试编程求出100以内的所有勾股数。
<10>下面程序的输出结果是?答案是1,1,3,不明白。
#incllude<iostream>
using namespace std;
int main()
{
int i=3,j=2,a,b,c;————》a b c=0;
a=(--i==j++)?--i:++j;——》这是关键,先判断i和j是否相等:i先减1,为2,等于j,为真,执行条件语句的--i;这句执行后,i=1,j=3
b=i++;——》此时i=1,把值赋给b后 i=2,b=1
c=j;——》此时j=3,所以c=3
cout<<a<<’,'<<b<<’,'<<c<<endl;
return 0;
}
这说明你还是熟悉++和--放在前面和后面的区别;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式