您的位置:

c语言和c+转换,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;