本文目录一览:
- 1、C++和C语言的转换
- 2、如何把下列c++语言转换成c语言: 急用~~~~~~!!!!!!!!!!
- 3、c语言转换为c++
- 4、如何把c语言代码转化为c 语言,如下
- 5、C语言中输入输出语句转换成C++语句
- 6、C语言,C++中显式转换和隐式转换的区别?
C++和C语言的转换
全部手工编写的,按照的是string和int的键值对插入的。 c++内置的stl map为红黑树实现的,insert和查找时间复杂度均为logn,一般来说c语言实现红黑树太过复杂,而且就论查找来说hashtable的时间复杂度查找为O1级别的常数级别,最快速度的。insert也是O1级别。所以是一种最好的替代方案。 由于本人水平有限,测试不算太完美,有可能会有疏漏还请见谅,测试数据存储在test.txt中
helloworld 1
helloworad 2
helloworla 3
chinadododo 23
nihao 33
dadadadada 31
changge 33333
meizi 2222111
shax 22334
fengzi 333
wangzi 4
nvxia 98
#includestdio.h
#includestring.h
#includestdlib.h
#includeassert.h
#define MAXSIZE 30011//one big prime
#define MAXLEN 80//string maxsize
typedef struct hashnode hashnode;
struct hashnode{
char *str;
int value;
struct hashnode *next;
};
//hashtable and hashtable length
hashnode *hashtable[MAXSIZE];
int len=0;
unsigned int hash(char *s)
{
int i;
unsigned int key=0;
for(i=0;s[i];i++)
{
key=(key3)+s[i]-'0';
key%=MAXSIZE;
}
//printf("%u\n",key);
return key;
}
hashnode* createnode(char *s,int v)
{
hashnode *p=(hashnode*)malloc(sizeof(hashnode*));
p-value=v;
p-str=(char*)malloc(MAXLEN*sizeof(char));
strcpy(p-str,s);
p-next=NULL;
return p;
}
hashnode* insert(char *s,int v)
{
++len;
unsigned int key=hash(s);
if(strlen(s)3)
return NULL;
if(hashtable[key]==NULL)
{
hashtable[key]=createnode(s,v);
printf("insert success!hash key is %u \n",key);
return hashtable[key];
}else
{
hashnode *p=createnode(s,v);
p-next=hashtable[key];
hashtable[key]=p;
printf("insert success!hash key is %u \n",key);
return p;
}
}
hashnode* lookup(char *s)
{
unsigned int key=hash(s);
hashnode *tmp=hashtable[key];
while(tmp!=NULL)
{
if(strcmp(tmp-str,s)==0)
{
return tmp;
}
else
tmp=tmp-next;
}
return NULL;
}
void freehash()//free the hashtable
{
hashnode *p,*tmp;
int i;
for(i=0;iMAXSIZE;i++)
{
p=hashtable[i];
while(p!=NULL)
{
tmp=p;
p=p-next;
free(p);
}
}
}
int main()
{
FILE *fin=fopen("test.txt","r");
assert(fin);
char str[MAXLEN];
int value;
while(!feof(fin))
{
memset(str,0,MAXLEN);
fscanf(fin,"%s %d",str,value);
insert(str,value);
}
printf("the table length is %d \n",len);
while(1)
{
printf("input the string you want the look up:\n");
scanf("%s",str);
hashnode *p;
p=lookup(str);
if(p!=NULL)
printf("the %s's value is %d!\n",str,p-value);
else
printf("no found!!\n");
}
freehash();
fclose(fin);
return 0;
}
如何把下列c++语言转换成c语言: 急用~~~~~~!!!!!!!!!!
说不能改是胡说的,任何高级语言写出来的代码都可以用c实现,只是复杂程度不一样。大家不爱动手而已。才10分。
思路是这样的:
1.c++的类可以换成c的结构体,同时提供一个与结构体对应的句柄
2.类的成员方法可以换成c的普通函数,以句柄代替this指针,windows
api就是这样做的。
3.关于简单的泛型,可以使用宏来模拟,这也就是泛型最初的来历。你目前只是表示了一个元素类型,可以直接用void*
类型的存储,配上一个size来保存各种类型的元素。
c语言转换为c++
头文件
#include iostream
#include algorithm
using namespace std;
主函数
int main( )
{
......
return 0;(不能少)
}
scanf和 printf语句我都改一个,你自己照着做就可以了,比如:
scanf("%d%d",all[i].t,all[i].x)
cin all[i].t all[i].x;
printf("Case %d: %d\n",tt++,maxt);
cout "Case " (tt++) ": " maxt endl;
如果不会M我
很简单的:
#include iostream
#include algorithm
using namespace std;
。。。。。。
int main()
{
int t,tt=1;
cin t;
while(t--)
{
maxt=1000001;
mint=-4000001;
cin n m;
for(int i=0;in;i++)
{
cin all[i].t all[i].x;
if(maxtall[i].t) maxt=all[i].t;
}
qsort(all,n,sizeof(event),cmp);
while(maxt=mint)
{
int temp=(maxt+mint)1;
if(greed(temp)) mint=temp+1;
else maxt=temp-1;
}
if(greed(maxt)) mint=maxt;
cout "Case " (tt++) " : " maxt endl;
}
return 0;
}
如果有错,检查下程序是否出错
如何把c语言代码转化为c 语言,如下
你的问题是“C语言代码转化为c 语言”,比较奇怪。你所附代码里出现了:
using namespace std;
因此这应该是C++代码。
C和C++两者的比较明显的差别,就是前者面向过程,后者面向目标。若把C++的源代码,变成C,则需要把C++所定义的class之类,都拆开,按照C的方式进行组合。
具体到你的源代码,C++专有的只有2处。可以做如下改变:
using namespace std; --- 这一行删除
cin t; --- 这一行改成如下的C格式
scanf("%d", t);
因为你所附的源代码被紧缩到一块了,比较不方便进一步查看。你可以试试看,有问题继续交流。
C语言中输入输出语句转换成C++语句
c语言中的输入输出语句换成C++语句是将printf()函数换成cout对象,将scanf()函数换成cin对象。
问题中提及的代码:
printf("第%d名的名字:",t);
scanf("%s",p-date.ach[t-1].name);对应的C++代码:cout"第"t"名的名字:";
cinp-date.ach[t-1].name;
C语言,C++中显式转换和隐式转换的区别?
显式是强制转换,而隐式是编译器自动转换的,一般同一数据类型(如byte,int,float,double),由低级转为高级为隐式(如int转为float或double),而高级转为低级为强制类型转换,即显式转换,须用户在代码中写的(如float转为int)。
隐式数据类型转换是有编译器完成的,例如:
char a = 'a';
int x = a;
显示需要编程过程中强制转换,例如
int a = 10;
double x = (double)a;