
正文
有关c语言构造函数的题目 有关c语言构造函数的题目
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
【c语言编程题】构造函数运用更相减损术求最大公约数
1.第20行中直接书写这个语句,只打印gcd函数中的输出部分,虽然也能得到返回值,但不会打印返回值。并不是不能得到返回值。
2.printf("%d",gcd(x,y)运行过程:先运行函数gcd(),当然运行过程中,函数内包含的打印语句照样全部打印;最后再输出gcd函数得到的返回值。并不是只打印返回值。
3.如果不要求函数可以输出形参值a和b以便观察函数gcd()的递归计算过程,图二写法也是正确的。第5行和第7行没有else也是对的,是因为两个return语句与if语句完美配合,间接实现了分支语句的全部功能。
相关问答
Q1: 一道C语言题目,求教,非常感谢
#include iostream
using namespace std;
class Time{
public:
Time(int Hour, int Minute, int Second)
{
hour = Hour;
minute = Minute;
second = Second;
}
Time()
{
hour = minute = second = 0;
}
~Time()
{
cout"Goodbye!"endl;
}
void print_time()
{
couthour":"minute":"secondendl;
}
int getHour()
{
return hour;
}
int getMinute()
{
return minute;
}
int getSecond()
{
return second;
}
Time(Time time)
{
hour = time.getHour();
minute = time.getMinute();
second = time.getSecond();
}
private:
int hour, minute, second;
};
int main()
{
Time a(12, 34, 56), b;
a.print_time();
b.print_time();
b = a;
b.print_time();
return 0;
}
Q2: C++ 关于构造函数问题
BaseEllipse(double x0=0,double y0=0):x(x0),y(y0){}就是这个类的构造函数,冒号后面的是类成员的初始式。如果类成员中有类对象,则在冒号后面可以一个一个地调用类对象的构造函数。
1 对于double这种类型,可以选择使用初始式(就是上面的方法)或者使用赋值(就是在函数体里 面对 x y 进行赋值);
2 但是前者的方式(冒号后面跟初始式)对于
a 没有默认构造函数的对象
b const成员和引用成员
是必不可少的。
3 使用初始式除了可以使得初始化的情况更加明显,有时候还可能带来效率上的优势,例如要初始化的对象是string的时候。
请采纳。
Q3: C语言 类的构造函数和析构函数(考试在线等!急!!!)
类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类
支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设
计和实现。
一、类的设计
1.类的声明
class 类名
{
private: //私有
...
public: //公有
...
};
2.类的成员
一般在C++类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫
它数据成员如果是函数,我们就叫它成员函数。
3.类成员的可见性
private和public访问控制符决定了成员的可见性。由一个访问控制符设定的可
访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员
仅能被同一个类中的成员函数访问,公有成员既可以被同一类中的成员函数访
问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这
是以后要讨论的友元函数。
类中默认的数据类型是private,结构中的默认类型是public。一般情况下,变
量都作为私有成员出现,函数都作为公有成员出现。
类中还有一种访问控制符protected,叫保护成员,以后再说明。
4.初始化
在声明一个类的对象时,可以用圆括号()包含一个初始化表。
看下面一个例子:
#include iostream.h
class Box
{
private:
int height,width,depth; //3个私有数据成员
public:
Box(int,int,int);
~Box();
int volume(); //成员函数
};
Box::Box(int ht,int wd,int dp)
{
height=ht;
width=wd;
depth=dp;
}
Box::~Box()
{
//nothing
}
int Box::volume()
{
return height*width*depth;
}
int main()
{
Box thisbox(3,4,5); //声明一个类对象并初始化
cout return 0;
}
当一个类中没有private成员和protected成员时,也没有虚函数,并且不是从
其他类中派生出来的,可以用{}来初始化。(以后再讲解)
5.内联函数
内联函数和普通函数的区别是:内联函数是在编译过程中展开的。通常内联函
数必须简短。定义类的内联函数有两种方法:一种和C语言一样,在定义函数时
使用关键字inline。如:
inline int Box::volume()
{
return height*width*depth;
}
还有一种方法就是直接在类声明的内部定义函数体,而不是仅仅给出一个函数
原型。我们把上面的函数简化一下:
#include iostream.h
class Box
{
private:
int height,width,depth;
public:
Box(int ht,int wd,int dp)
{
height=ht;
width=wd;
depth=dp;
}
~Box();
int volume()
{
return height*width*depth;
}
};
int main()
{
Box thisbox(3,4,5); //声明一个类对象并初始化
cout return 0;
}
这样,两个函数都默认为内联函数了。
Q4: c语言题目,求解!
这是c++啊...
#include iostream
#include stdexcept
using namespace std;
class Set {
protected:
int* arr;
int len;
public:
Set(void) {
arr = new int[0];
len = 0;
}
Set(const Set right) {
len = right.len;
arr = new int[len];
memmove(arr, right.arr, right.len * sizeof(int));
}
~Set(void) {
delete[] arr;
}
inline int operator[](int i) {
if (i = len || i 0) { throw invalid_argument("i"); }
return arr[i];
}
inline const int operator[](int i) const {
if (i = len || i 0) { throw invalid_argument("i"); }
return arr[i];
}
inline int size(void) const {
return len;
}
int find(int a) const {
for (int i = 0; i len; i++) {
if (arr[i] == a) {
return i;
}
}
return -1;
}
void resize(int newLen, int val) {
if (newLen 0 || newLen == len) {
return;
}
int* p = new int[newLen];
memmove(p, arr, ((len newLen) ? len : newLen) * sizeof(int));
delete[] arr;
arr = p;
if (newLen len) {
do {
arr[len] = val;
} while (++len newLen);
}
else {
len = newLen;
}
}
void add(int a) {
int index = find(a);
if (-1 == index) {
resize(len + 1, a);
}
}
};
void Show(const Set a) {
for (int i = 0; i a.size(); i++) {
cout a[i] ", ";
}
cout endl;
}
int main(int argc, const char* const argv[]) {
Set a;
a.add(5);
Show(a);
a.add(8);
Show(a);
a.add(5);
Show(a);
return 0;
}
Q5: C++ 构造函数和析构函数题目
class CString
{
private:
char * m_pbuff; //指向字符串有关c语言构造函数的题目的指针
int m_length;//表示当前字符串的最大允许长度有关c语言构造函数的题目,也就是字符数组的长度
public:
~CString();//析构
CString(); //构造函数1有关c语言构造函数的题目,设置为空字符串有关c语言构造函数的题目,m_length=100
CString(CString ); //拷贝构造
CString(char *src); //构造函数2,在考虑有关c语言构造函数的题目了src的长度后初始化当前对象,m_length=src的长度+1
CString(char ch); //构造函数3,0号元素赋值为ch,m_length=100
int SetString(char *src); //设置字符串,在考虑了src的长度后设置当前对象,m_length=src的长度+1
void trim();// 去除字符串最前和最后的空格
int find(char ch); //查找字符串中的指定字符的第一次出现位置,如果未出现返回-1
void toLower();//字符串转小写
void toUpper();//字符串转大写
void deletechar(char ch); // 删除其中的指定字符
void show();
private:
void freeBuff();
};
void CString::freeBuff()
{
if(m_pbuff != 0)
{
delete []m_pbuff;
m_pbuff = 0;
}
}
CString::CString()
{
m_pbuff = new char[100];
m_length = 100;
m_pbuff[0] = 0;
}
CString::CString(CString ref)
{
if(ref.m_length 0)
{
m_length = ref.m_length;
m_pbuff = new char[m_length];
memcpy(m_pbuff,ref.m_pbuff,m_length);
}
else
{
m_pbuff = 0;
m_length = 0;
}
}
CString::CString(char *src)
{
m_length = src?strlen(src)+1:0;
if(m_length == 0)
m_pbuff = 0;
else
{
m_pbuff = new char[m_length];
memcpy(m_pbuff,src,m_length);
}
}
CString::CString(char ch)
{
m_length = 100;
m_pbuff = new char[m_length];
m_pbuff[0] = ch;
m_pbuff[1] = 0;
}
int CString::SetString(char *src)
{
freeBuff();
m_length = src?strlen(src)+1:0;
if(m_length == 0)
m_pbuff = 0;
else
{
m_pbuff = new char[m_length];
memcpy(m_pbuff,src,m_length);
}
}
void CString::trim()
{
int i,j=m_length;
for(i=0;im_length;++i)
{
if(m_pbuff[i] != ' ' || m_pbuff[i] == 0)
break;
}
//跳过\0字符后面的所有字符
while(m_pbuff[--j] != 0);
while(j0 m_pbuff[j-1] == ' ')
--j;
m_pbuff[j] = 0;
m_length = j-i;
if(m_length == 0)
freeBuff();
else
{
m_length += 1;
char *p = new char[m_length];
memcpy(p,m_pbuff+i,m_length);
freeBuff();
m_pbuff = p;
}
}
int CString::find(char ch)
{
for(int i=0;im_length;++i)
{
if(m_pbuff[i] == 0)
return -1;
if(m_pbuff[i] == ch)
return i;
}
return -1;
}
void CString::toLower()
{
for(int i=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] = 'A' m_pbuff[i] = 'Z')
m_pbuff += 32;
}
}
void CString::toUpper()
{
for(int i=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] = 'a' m_pbuff[i] = 'z')
m_pbuff -= 32;
}
}
void CString::deletechar(char ch)
{
if(m_length == 0)
return;
char *p = new char[m_length];
for(int i=0,j=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] != ch)
p[j++] = m_pbuff[i];
}
p[j] = 0;
freeBuff();
m_pbuff = p;
}
void CString::show()
{
if(m_length 0 m_pbuff[0] != 0)
printf(m_pbuff);
}
以上代码均为NOTEPAD++手敲,请自行测试。
有关c语言构造函数的题目的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于有关c语言构造函数的题目、有关c语言构造函数的题目的信息别忘了在本站进行查找喔。







