注册 登录
编程论坛 C++教室

[求助]这几个程序谁能讲解一下……?

轩辕龙虾 发布于 2007-06-29 21:00, 1235 次点击
#include <iostream.h>
int i;
main()
{ i=5;
{ int i;
i=7;
::i=3; cout <<”i=”<<i<<endl;
}
cout <<”i=”<<i<<endl;
}
为什么答案是i=7
i=3

#include<iostream.h>
#include<string.h>
void main()
{ char *a[5]={ “sofa”,”chair”,”bed”,”table”,”desk”},*r;
r=a[0];
for(int i=1;i<5;i++)
if(strcmp(r,a[i])>0)r=a[i];
cout<<r<<endl;
}
答案是bed……怎么来的

#include <iostream.h>
void main( )
{char str[ ]=”1234567”;
int i;
for(i=0; i<7; i+=3)
cout<< str+i<<endl;
}
这段里的str+i……怎么说的啊?


还有……这段程序能不能详细讲一下,我一点也看不懂
#include <iostream.h>
class Point
{public:
Point(int x, int y){ _x=x;y=y;}
Point(char x, char y){ _x=x;y=y;}
void Display() {cout << ”(” << _x << ”, ” << _y << ”)” << endl;}
protected:
int _x, _y;
};
void main()
{
Point a(1, 2);
Point b(‘a’,’b’);

a.Display();
b.Display();
}



暂时就这些问题…………

[此贴子已经被作者于2007-6-29 21:02:41编辑过]

17 回复
#2
野比2007-06-29 21:25
第1题考察对变量生存周期的理解.
逐句分析:
#include <iostream.h>
int i; //全局, 整个程序期间生存, 标记为i1
main()
{ i=5; //修改i1=5
{ int i; //局部, 括号内生存, 标记为i2, i2 != i1
i=7; //修改i2=7
::i=3; //修改i1=3, 因为使用了:: 相当于使用了当前程序的命名空间
cout <<”i=”<<i<<endl; //局部, 打印i2, i2=7
}
cout <<”i=”<<i<<endl; //全局, 打印i1, i1=3
}
#3
野比2007-06-29 21:32
第2题考察对指针数组的理解
利用r指针指向目标字符串, 并分别与其他4个字符串比较, 令r指向字母顺序靠前的那个串(用strcmp)
这样, 最后得到的是按字母顺序排列最小的那个串, 即"bed" (b字母最靠前)
#4
野比2007-06-29 21:41
第3题考察数组名与指针的关系

数组名称是一个指向数组第1个元素的指针, 题中str[]是char型数组, str单独使用相当于char* str, 是个指针.
str + i 就是让str指针向后移动了i个元素,
所以第一次i==0, 没有移动, str指向"1", 所以输出"1234567"
第2次i==3, 移动了3个, str指向"4", 所以输出"4567"
第3次i==6, 移动6个, str指向"7", 所以输出"7"
#5
野比2007-06-29 21:53
第4题考察类的基本概念...

class Point句声明了类Point
public表示以下内容可以在其他函数中调用
与Point同名的Point()函数叫构造函数, 系统自动调用
下面还有一个Point(), 这叫重载(Overload), 根据函数参数的不同, 编译器自动选择相应的Point()调用.
Display()叫成员函数, 也叫方法
private表示以下内容只能在类里使用, 其他地方不能调用
int _x, _y叫成员变量, 也叫成员.
结束的时候用}; 不要漏了分号

main中利用Point类定义了2个Point对象(a和b), 带参数是使用了构造函数进行初始化(系统自动调用的,所以不用写成a.Point())
a.Display调用了在Point类中定义的Display方法.

大哥, 你一点也看不懂?.. 拜托你多看看书...
#6
轩辕龙虾2007-06-29 21:57
…………那个程序确实一点也看不懂  总之谢谢你了的说   我先看看书
#7
野比2007-06-29 22:02
多看书.. 多做练习.. 加油
#8
cclearner2007-06-30 00:45
天哪,为什么
你们都知道得这么多。。。。
羡慕ing。。。。
#9
realnaoko2007-06-30 02:42
void Display() {cout << ”(” << _x << ”, ” << _y << ”)” << endl;}

这样是在声明函数的同时定义函数吗?

我看书上一般是先声名再定义的.
void Display();

void Display()
{
cout << ”(” << _x << ”, ” << _y << ”)” << endl;
}
#10
野比2007-06-30 09:33

To cclearner
这些是比较基础的原理, 慢慢来, 你也能精通

To realnaoko
没错, 你的理解是正确的.

#11
huozoo2007-06-30 09:38
用到声明函数是因为有时,你要调用这个函数的时候,这个函数有可能还没定义,你先声明函数,通知系统这个函数在程序后有定义,系统在遇到调用该函数的时候就不会因为不知道这个函数而出错。
#12
aipb20072007-06-30 09:56
当程序调用函数时,这个函数的原型要可见。
#13
lous1222007-07-01 11:24

你们用的编译器太旧了

#14
lmzg3212007-07-01 12:52
#15
duffebear2007-07-02 12:49
#16
cclearner2007-07-05 20:18
三日不见,我已经能看懂那些程序了!
#17
孤魂居士2007-07-06 15:39
斑竹门太牛了``
#18
sy_1416182007-07-06 17:24
羡慕ING 改变I N G  〈摘自 五月天〉
1