2 sinat 21113619 sinat_21113619 于 2015.06.16 23:22 提问

这个c++程序如何换成c 5C
c

#include
#include
using namespace std;
class Data
{
public:
Data();
Data(int i,string n,int b);
void SetId(int i);
void SetName(string n);
void SetBorrow(int b);
int GetId()const;
string GetName()const;
int GetBorrow()const;
private:
int id;
string name;
int borrow;
};
Data::Data()
{
id=0;
name="";
borrow=0;
}
Data::Data(int i,string n,int b)
{
id=i;
name=n;
borrow=b;
}
void Data::SetId(int i)
{
id=i;
}
void Data::SetName(string n)
{
name=n;
}
void Data::SetBorrow(int b)
{
borrow=b;
}
int Data::GetId()const
{
return id;
}
string Data::GetName()const
{
return name;
}
int Data::GetBorrow()const
{
return borrow;
}

class Node
{
public:
Node();
Node(Data d);
void SetData(Data *d);
Data
GetData()const;
void SetNext(Node n);
Node
GetNext()const;
private:
Data data;
Node *next;
};
Node::Node()
{
data=NULL;
next=NULL;
}
Node::Node(Data *d)
{
data=d;
next=NULL;
}
void Node::SetData(Data *d)
{
data=d;
}
Data
Node::GetData()const
{
return data;
}
void Node::SetNext(Node n)
{
next=n;
}
Node
Node::GetNext()const
{
return next;
}

class List
{
public:
List();
void Insert(int id);
void ShowMax()const;
void ShowMix()const;
void Show()const;
private:
Node *head;
Node *tail;
};
List::List()
{
head=NULL;
tail=NULL;
}
void List::Insert(int id)
{
int i,b;
string n;
cout<<"请输入编号:";
cin>>i;
cout<< "请输入书名:";
cin>>n;
cout<<"请输入借书次数:";
cin>>b;
Data *d=new Data(i,n,b);
Node *node=new Node(d);
if(!head)
{
head=node;
tail=node;
head->SetNext(NULL);
}
else
{
Node *now=head,*last=head;
while(now)
{
if(now->GetData()->GetId()==id)
break;
last=now;
now=now->GetNext();
}
if(now==head)
{
node->SetNext(head);
head=node;
}
else
{
last->SetNext(node);
node->SetNext(now);
}
}
}
void List::ShowMax()const
{
Node *node=head->GetNext(),*max=head;
while(node)
{
if(max->GetData()->GetId()GetData()->GetId())
max=node;
node=node->GetNext();
}
cout<<"借阅次数最多的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::ShowMix()const
{
Node *node=head->GetNext(),*mix=head;
while(node)
{
if(mix->GetData()->GetId()>node->GetData()->GetId())
mix=node;
node=node->GetNext();
}
cout<<"借阅次数最少的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::Show()const
{
Node *node=head;
cout while(node)
{
coutGetData()->GetId()<<"\t"<GetData()->GetName()<<"\t"<GetData()->GetBorrow()< node=node->GetNext();
}
}

void main()
{
List l=new List();
l->Insert(1);
l->Show();
l->Insert(2);
l->Show();
l->Insert(2);
l->Show();
l->ShowMix();
l->ShowMax();
}
/
说明:data类为数据类,保存图书的基本信息,node为结点类,保存结点的信息,list为链表类,执行各种链表操作*/

12个回答

91program
91program   Ds   Rxr 2015.06.17 07:41

将类实现的功能,修改为全部函数实现
简单的方法可以试:将 类 定义拿掉,实现函数和变量的留着(变量的定义需复制出来)。然后编译,这时肯定是错误一堆,将所有错误修改到没有错误时,你想要的也就实现了。

a1193561652
a1193561652   Rxr 2015.06.16 23:25

没法换,C语言没有class。

caozhy
caozhy   Ds   Rxr 2015.06.16 23:24

因为这个程序用了面向对象,要转换需要把类变成结构体,把成员函数变成普通函数,同时传一个指向实例结构体的this指针。
修改起来工作量比较大。如果你就是要一个图书管理系统的课程作业,不如直接google另外找一个现成的。

sinat_29089007
sinat_29089007   2015.06.17 00:59

都要换了 c++使用类或者结构体但是c只有结构体。所以要改为c语言版的图书管理系统就挺麻烦的。

tongyi55555
tongyi55555   2015.06.17 08:09

C没有类的,改起来有难度亲,楼上的大神给了思路,换个方式吧。

ycg514230
ycg514230   Rxr 2015.06.17 10:12

代码量不大,还是有可能改过去的,只要重新设计一下就可以了。
把面向对象的东西去掉。

dominating413421391
dominating413421391   2015.06.17 11:17

将Class改为Struct,结构体中定义变量,函数可放在结构体中也可放在结构体外。
基本功能都能实现的,但是C的封装性并不太好,希望能帮到你

zhangweilst
zhangweilst   2015.06.19 12:27

class 换成 struct, 成员函数拿出来写普通函数。还要考虑构造函数转换的问题。

dengxu11
dengxu11   2015.07.12 12:41

Why not use java or python?

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.12 20:50

把类里面的对象属性都用结构体写出来,然后用函数方法去调用结构体使用,但是C++是面向对象的,会更好写一点,一般C就算比较底层了

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言 一元钱的兑换方案
如果将整钱换成零钱,那么,一元钱可兑换成一角,两角或五角,问有多少种兑换方案。
根据c语言程序转换成汇编程序
gcc编译器可以将c语言程序转换为对应的汇编程序,只要在编译时候添加-S选项即可: gcc -S main.c    这时候会默认生成main.s汇编程序文件。
《C语言及程序设计》实践参考——换分币
返回:贺老师课程教学链接  项目要求【项目4-换分币】用一元人民币兑换成1分、2分和5分硬币,有多少种不同的兑换方法?请输出所有可能的方案。提示:根据题意设i,j,k分别为兑换的1分、2分、5分硬币的枚数,则i,j,k的值应满足:i+j*2+k*5=100,根据取值范围构造循环解题即可。[参考解答]#include int main() { int i,j,k,count=0;
C语言编程练习--念数字
念整数: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yier san si 注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为: fuer san si yi   输入格式: 一个整数,范围是[-100000,100000
【c语言】把student a am i 变成 i am a student
// 把student a am i 变成 i am a student //思想:把每个单词翻转,然后再把整体翻转 #include #include //把每次解析出来的单词翻转 void fanw( char *l,char *r ) { char* left = l; char* right = r; char temp; while( left < right ) {
【C语言】数字的字符串转化为 数字
#include /* 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。 如果字符串参数包含了任何非数字字符,函数就返回零。 */ int ascii_to_integer(char *str) { int i=0; while(*str!='\0') { if(*str'9') return 0; i*=10;  
C 编程 浮点型转字符串输出
这份文档介绍了在C的编程中,如何把浮点型的数据抓换成字符串形式进行输出。
如何将C++改为C
我曾参与过公司的bpp项目,就是bluetooth print profile。由于使用了hpijs的开源包,但是是C++的。由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C++语言写的源程序用C语言改写是很有必要的。        C++与C区别最大的就是C++中的类的概念和特性,将C++改为C的问题,就转换成如何将
这个C程序好强!
  刚刚在csdn社区看到的一个帖子,一段像乱码一样的C程序居然能运行,据说还是歌The Twelve days of christmas的歌词,真tmd牛。codeDivStart()#include main(t,_,a)char *a;{return!0main(-86,0,a+1)+a)):1,tmain(2,_+1,"%s %d %d/n"):9:16:t"@n+,#/*
C语言实现字符串中把空格换成%20问题
今天在笔试的时候遇到了一个题目,现在记录下来学习学习,题目就是把字符串中的空格换成“%20”,遇到这个问题会想到“%20”是一个字符还是3个字符,我当时就认为2个字符,'%','2','0'. 实现这个代码的基本思想是:确定字符串数组的长度,和空格的个数,最后得到的字符串的长度为原字符串长度+2空格个数,从最后一个符号进行复制就可以了。 #include void blankreplace(