您的位置:

及其c语言实现,C语言实现

本文目录一览:

C语言可以实现什么?

1.2 C 语言的特点

C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的

功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。

用C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了, 象PC- DOS 、

WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:

1. C是中级语言

它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象

汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2. C是结构式语言

结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的

信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调

试。C 语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循

环、条件语句控制程序流向, 从而使程序完全结构化。

3. C语言功能齐全

C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另

外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑

判断功能也比较强大, 可以实现决策目的。

4. C语言适用范围大

C 语言还有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于

多种机型。

C语言编程实现

#includestdio.h

#includestdlib.h

int

main(){

int

a=0;

int

b=0;

long

result=0;

printf("请输入两个数整数a,b:");

scanf("%d%d",a,b);

result=a*a+b*b;

if(result500)

{ printf("a2+b2500,它的百位以上的值为:%d.",result/100);

}else

printf("a2+b2的结果小于500,其值是:%d.",result);

return

0;}

c语言的实现

#includestdio.h

#includemalloc.h

#define NULL 0

struct node

{

int data;

struct node *next;

};

struct node *head,*head_a;

struct node *create()

{

struct node *tail, *p;

int x;

head=tail=NULL;

printf("\n请输入一个整数:\n");

scanf("%d",x);

while(x!=0)

{

p=(struct node *)malloc(sizeof(struct node));

p-data=x;

p-next=NULL;

if(head==NULL)

head=tail=p;

else

{

tail-next=p;

tail=p;

}

printf("\n请输入一个整数:\n");

scanf("%d",x);

}

return(head);

}

struct node *unite(struct node *a,struct node *b)

{

struct node *ha;

ha=head_a;

while(ha-next!=NULL)

ha=ha-next;

ha-next=head;

return(a);

}

void sortf()

{

struct node *p;

int temp;

L: p=head_a;

p=head_a;

while(p-next!=NULL)

{

if(p-datap-next-data)

{

temp=p-data;

p-data=p-next-data;

p-next-data=temp;

}

p=p-next;

}

p=head_a;

while(p-next!=NULL)

{

if(p-datap-next-data)

{

goto L;

}

p=p-next;

}

// return(a);

}

void main()

{

struct node *A,*B,*C,*LA;

printf("\n请输链表A的值,以0结束:\n");

LA=head_a=A=create();

printf("\n请输链表B的值,以0结束:\n");

B=create();

/////////////////////////////

printf("\n链表A的值:\n");

while(LA!=NULL)

{

printf("%d\t",LA-data);

LA=LA-next;

}

C=unite(A,B);

printf("\n链表B的值:\n");

printf("\n");

while(B!=NULL)

{

printf("%d\t",B-data);

B=B-next;

}

printf("\n链表C的值:\n");

printf("\n");

LA=head_a;

while(LA!=NULL)

{

printf("%d\t",LA-data);

LA=LA-next;

}

printf("\n");

printf("\n经过排序后链表C的值:\n");

printf("\n");

sortf();

LA=head_a;

while(LA!=NULL)

{

printf("%d\t",LA-data);

LA=LA-next;

}

printf("\n");

}

几经波折才算搞清楚..弄出来了!!!!!!!!!!!!!!!

数据结构如何通过C语言来实现,请举例说明,尽可能详细

数据的结构无非就是表:线性表、链表,栈,队列,串,数组,树、二叉树,图,这几种。

常用的使用指针,或数组建立数据结构,然后对其进行插入、删除、查找、排序等操作。

以下是C语言实现的循环队列:

#includestdio.h

#includestdlib.h

#define MAX_QSIZE 5

struct SqQueue

{ QElemType *base; // 初始化的动态分配存储空间

int front; // 头指针,若队列不空,指向队列头元素

int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置

};

// bo3-4.cpp 循环队列(存储结构由c3-3.h定义)的基本操作(9个)

void InitQueue(SqQueue Q)

{ // 构造一个空队列Q。在教科书第64页

Q.base=(QElemType*)malloc(MAX_QSIZE*sizeof(QElemType));

if(!Q.base) // 存储分配失败

exit(OVERFLOW);

Q.front=Q.rear=0;

}

void DestroyQueue(SqQueue Q)

{ // 销毁队列Q,Q不再存在

if(Q.base) // 队列Q存在

free(Q.base); // 释放Q.base所指的存储空间

Q.base=NULL; // Q.base不指向任何存储单元

Q.front=Q.rear=0;

}

void ClearQueue(SqQueue Q)

{ // 将队列Q清为空队列

Q.front=Q.rear=0;

}

int QueueEmpty(SqQueue Q)

{ // 若队列Q为空队列,则返回TRUE;否则返回FALSE

if(Q.front==Q.rear) // 队列空的标志

return TRUE;

else

return FALSE;

}

int GetHead(SqQueue Q,QElemType e)

{ // 若队列Q不空,则用e返回Q的队头元素,并返回OK;否则返回ERROR

if(Q.front==Q.rear) // 队列空

return ERROR;

e=Q.base[Q.front]; // 将队头元素的值赋给e

return OK;

}

int EnQueue(SqQueue Q,QElemType e)

{ // 插入元素e为队列Q的新的队尾元素。在教科书第65页

if((Q.rear+1)%MAX_QSIZE==Q.front) // 队列满

return ERROR;

Q.base[Q.rear]=e; // 将e插在队尾

Q.rear=(Q.rear+1)%MAX_QSIZE; // 队尾指针+1后对MAX_QSIZE取余

return OK;

}

int QueueLength(SqQueue Q)

{ // 返回队列Q的元素个数,即队列的长度。在教科书第64页

return(Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE;

}

int DeQueue(SqQueue Q,QElemType e) // 在教科书第65页

{ // 若队列Q不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR

if(Q.front==Q.rear) // 队列空

return ERROR;

e=Q.base[Q.front]; // 将队头元素的值赋给e

Q.front=(Q.front+1)%MAX_QSIZE; // 移动队头指针

return OK;

}

void QueueTraverse(SqQueue Q,void(*visit)(QElemType))

{ // 从队头到队尾依次对队列Q中每个元素调用函数visit()

int i=Q.front; // i最初指向队头元素

while(i!=Q.rear) // i指向队列Q中的元素

{ visit(Q.base[i]); // 对i所指元素调用函数visit()

i=(i+1)%MAX_QSIZE; // i指向下一个元素

}

printf("\n");

}

void main()

{

int j;

int i=0,m;

int d;

SqQueue Q;

InitQueue(Q); // 初始化队列Q,失败则退出

printf("初始化队列后,队列空否?%u(1:空 0:否)\n",QueueEmpty(Q));

printf("请输入整型队列元素(不超过%d个),-1为提前结束符:",MAX_QSIZE-1);

do

{ scanf("%d",d); // 由键盘输入整型队列元素

if(d==-1) // 输入的是提前结束符

break; // 退出输入数据循环

i++; // 计数器+1

EnQueue(Q,d); // 入队输入的元素

}while(iMAX_QSIZE-1); // 队列元素的个数不超过允许的范围

printf("队列长度为%d,",QueueLength(Q));

printf("现在队列空否?%u(1:空 0:否)\n",QueueEmpty(Q));

printf("连续%d次由队头删除元素,队尾插入元素:\n",MAX_QSIZE);

for(m=1;m=MAX_QSIZE;m++)

{ DeQueue(Q,d); // 删除队头元素,其值赋给d

printf("删除的元素是%d,请输入待插入的元素:",d);

scanf("%d",d); // 输入要入队的元素给d

EnQueue(Q,d); // 将d入队

}

m=QueueLength(Q); // m为队列Q的长度

printf("现在队列中的元素为");

QueueTraverse(Q,print); // 从队头到队尾依次对队列Q的每个元素调用函数print()

printf("共向队尾插入了%d个元素。",i+MAX_QSIZE);

if(m-20)

printf("现在由队头删除%d个元素,",m-2);

while(QueueLength(Q)2)

{ DeQueue(Q,d); // 删除队头元素,其值赋给d

printf("删除的元素值为%d,",d);

}

j=GetHead(Q,d); // 将队头元素赋给d

if(j) // 队列Q不空

printf("现在队头元素为%d\n",d);

ClearQueue(Q); // 清空队列Q

printf("清空队列后,队列空否?%u(1:空 0:否)\n",QueueEmpty(Q));

DestroyQueue(Q); // 销毁队列Q

}