c语言题目,求解!
读下面的程序,写出输出结果。#include<iostream.h>classApple{public:Apple(){i=10;}voiddisplay(){cout<...
读下面的程序,写出输出结果。
#include <iostream.h>
class Apple{
public:
Apple(){i=10;}
void display(){ cout<<"Apple:i="<<i<<endl; }
private:
int i;
friend class Pear;
};
class Pear{
public:
void print1(Apple A)
{ A.i++; cout<<"print1:A="<<A.i<<endl;};
void print2(Apple A)
{A.i--; cout<<"print2:A="<<A.i<<endl;};
};
void main()
{ Apple a;
Pear p;
a.display();
p.print1(a);
p.print2(a);
a.display();
} 展开
#include <iostream.h>
class Apple{
public:
Apple(){i=10;}
void display(){ cout<<"Apple:i="<<i<<endl; }
private:
int i;
friend class Pear;
};
class Pear{
public:
void print1(Apple A)
{ A.i++; cout<<"print1:A="<<A.i<<endl;};
void print2(Apple A)
{A.i--; cout<<"print2:A="<<A.i<<endl;};
};
void main()
{ Apple a;
Pear p;
a.display();
p.print1(a);
p.print2(a);
a.display();
} 展开
3个回答
展开全部
Apple:i=10
print1:A=11
print2:A=9
Apple:i=10
print1:A=11
print2:A=9
Apple:i=10
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我就说要点了。。
1)
double
x,y;
x=1;
y=x+3/2;
y的值为什么是2.0?
3/2两个整型相除得整型1。
2)main()
{
int
x=0.5;char
z='a';
printf("%d\n",(x&1)&&(z<'z'))}
x&1
值为0那么输出的应该为0
为什么答案是1?
单个&是取地址运算符。。x&1非0
3)以下合法的赋值语句是?我选的x=y=100
答案是d--;
x=y=100少了;不是语句是表达式。而且c支持连等????
4)以下各选项企图说明一种新的类型名,正确的是:
A)typedef
v1
int;
B)
typedef
v2=int;
C)
typedefv1
int
v3;
D)
typedef
v4;
int;
答案是C
为什么…
顺便解释一下typedef吧…
意思就是下面编程时你可以在类型那里写v3,和int作用一样。前面写要替换的,后面写换后的。比如v3
a=0;定义一个整型变量a赋值0
5)为什么x==0||x==1与!x等价?
扯淡!当x==1,左真,右假。题出错了。
6)main()
{
unsigned
short
a=65536;
int
b;
printf("%d\n",b=a);}
结果为什么是0?
你这是TC编译器吧。。
无符号范围0-65536
有符号-32768-32767
把65536付给b是超范围了,到了32767后从-326768开始,就到0了。这不是正规解释,正规要从二进制解释。。。。但我这么说也没错,你可以这么理解着记
7)有定义:int
a=10,b=9,c=8;
然后执行
c=(a-=(b-5));
c=(a%11)+(b=3);
问变量b中的值是?
这个怎么算…
第一句:b-5得4,b不变,a-=4得6付给a,c=6;
第二句:a%11得6,a不变,(b=3),把b得值改为三,次表达式整个值也是3,所以c=6+3=9;
最后a6b3c9
8)程序输出结果是16.00
main()
{
int
a=9,
b=2;
float
x=___,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
我觉得应该填6.05
可是答案是6.6
看
z=a/2+b*x/y+1/2;这句:
先看前后两部分,a/2显然是两整型相除得整型4,1/2同上得0。
中间b*x/y部分是float和整型运算也是float而且第2个变量就是x所以可以不考虑整型运算后的数据丢失。
最后输出结果是16也就是说中间部分16.0-4-0得12.0。
接下来好办了,几除y(1.1)得12?13.2。几乘b(2)得13.2?6.6
9)x,y均为int型变量,x=1,y=2,则1.0+x/y的值为?为什么不是1.5…
同上,整型相除得整型,1/2得0.5取整舍掉。5得0,此时+运算还没进行。。。+运算开始后右边的0隐形转换成0.0所以结果是1.0
1)
double
x,y;
x=1;
y=x+3/2;
y的值为什么是2.0?
3/2两个整型相除得整型1。
2)main()
{
int
x=0.5;char
z='a';
printf("%d\n",(x&1)&&(z<'z'))}
x&1
值为0那么输出的应该为0
为什么答案是1?
单个&是取地址运算符。。x&1非0
3)以下合法的赋值语句是?我选的x=y=100
答案是d--;
x=y=100少了;不是语句是表达式。而且c支持连等????
4)以下各选项企图说明一种新的类型名,正确的是:
A)typedef
v1
int;
B)
typedef
v2=int;
C)
typedefv1
int
v3;
D)
typedef
v4;
int;
答案是C
为什么…
顺便解释一下typedef吧…
意思就是下面编程时你可以在类型那里写v3,和int作用一样。前面写要替换的,后面写换后的。比如v3
a=0;定义一个整型变量a赋值0
5)为什么x==0||x==1与!x等价?
扯淡!当x==1,左真,右假。题出错了。
6)main()
{
unsigned
short
a=65536;
int
b;
printf("%d\n",b=a);}
结果为什么是0?
你这是TC编译器吧。。
无符号范围0-65536
有符号-32768-32767
把65536付给b是超范围了,到了32767后从-326768开始,就到0了。这不是正规解释,正规要从二进制解释。。。。但我这么说也没错,你可以这么理解着记
7)有定义:int
a=10,b=9,c=8;
然后执行
c=(a-=(b-5));
c=(a%11)+(b=3);
问变量b中的值是?
这个怎么算…
第一句:b-5得4,b不变,a-=4得6付给a,c=6;
第二句:a%11得6,a不变,(b=3),把b得值改为三,次表达式整个值也是3,所以c=6+3=9;
最后a6b3c9
8)程序输出结果是16.00
main()
{
int
a=9,
b=2;
float
x=___,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
我觉得应该填6.05
可是答案是6.6
看
z=a/2+b*x/y+1/2;这句:
先看前后两部分,a/2显然是两整型相除得整型4,1/2同上得0。
中间b*x/y部分是float和整型运算也是float而且第2个变量就是x所以可以不考虑整型运算后的数据丢失。
最后输出结果是16也就是说中间部分16.0-4-0得12.0。
接下来好办了,几除y(1.1)得12?13.2。几乘b(2)得13.2?6.6
9)x,y均为int型变量,x=1,y=2,则1.0+x/y的值为?为什么不是1.5…
同上,整型相除得整型,1/2得0.5取整舍掉。5得0,此时+运算还没进行。。。+运算开始后右边的0隐形转换成0.0所以结果是1.0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询