求简单C语言程序代码!

求简单C语言程序代码!,第1张

程序源码及运行结果如下所示(系统会自动去掉句首空格,排版较乱请见谅):

#include<stdioh>

int main()

{

int max,min;

int sum=0;

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

scanf("%d",&max);

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

scanf("%d",&min);

if(min>max)

{

int temp;

temp = max;

max = min;

min = temp;

}

for(int i=min;i<=max;i++)

{

sum += i;

}

printf("两数之间的整数和是:%d\n",sum);

return 0;

}

-----------线性表的单链表存储结构-------------

typedef struct Node{

ElemType data;

struct Node next;

} LNode, LinkList;

//----------线性表的单链表基本 *** 作------------

LinkList InitList(void); //构造一个空的线性表

void DestroyList(LinkList L);//初始条件:线性表L已存在。 *** 作结果:销毁线性表L。

LinkList MakeEmpty(LinkList L);//初始条件:线性表L已存在。 *** 作结果:将线性表L重置为空表。

int IsEmpty(LinkList L);//初始条件:线性表L已存在。 *** 作结果:判断线性表是否为空表。

int ListLength(LinkList L);//初始条件:线性表L已存在。 *** 作结果:返回线性表L结点的个数。

LNode IsLast(LinkList L); //初始条件:线性表L已存在。 *** 作结果:返回线性表L的最后一个结点(尾结点)。

LNode NewLNode(ElemType X);//构造一个数据域为X的新结点

LNode FindPrefious(ElemType X, LinkList L);//初始条件:线性表L已存在。 *** 作结果:在线性表L中寻找值为X的结点,若找到则返回该结点的前驱,否则返回NULL。

void ListDelete(LNode Pre);//初始条件:线性表L中结点P已找到。 *** 作结果:删除该结点。

void ListInsert(LNode Pre, LNode S);//初始条件:线性表L中结点P已找到,新结点S已构造。 *** 作结果:在该结点之前插入新结点X。

----------线性表的单链表基本 *** 作的算法实现------------

//我给链表设置了一个头结点,虽然它的数据域毫无意义,但它作为一个指针却意义非凡!

//它的作用我们在下面的例程中可以领教

LinkList InitList(void) //构造一个空的线性表

{

LNode Head;

Head = (LNode)malloc(sizeof(struct Node)); //为链表的头结点分配空间

if(!Head)

{

printf("Out of space!");

return NULL;

}

Head->next = NULL;

return Head;//返回头结点

}

void DestroyList(LinkList L)//初始条件:线性表L已存在。 *** 作结果:销毁线性表L。

{

LNode Head, P;

if(L)//若线性表L已存在

{

Head = L;

P = Head->next;

while(!P) //把链表中除头结点外的所有结点释放

{

free(Head);

Head = P;

P = Head->next;

}

free(Head); //释放头结点

}

}

LinkList MakeEmpty(LinkList L)//初始条件:线性表L已存在。 *** 作结果:将线性表L重置为空表。

{

LNode Head, P;

Head = L;

P = Head->next;

while(!P)//把链表中除头结点外的所有结点释放

{

free(Head);

Head = P;

P = Head->next;

}

return (Head); //返回头结点

}

int IsEmpty(LinkList L);//初始条件:线性表L已存在。 *** 作结果:判断线性表是否为空表。

{

return L->next == NULL;

}

int ListLength(LinkList L)//初始条件:线性表L已存在。 *** 作结果:返回线性表L结点的个数。

{

LNode P = L->next;

int num = 0;

while(P) //累积线性表L结点的个数

{

num++;

P = P->next;

}

return num; //返回线性表L结点的个数

}

//初始条件:线性表L已存在。 *** 作结果:返回线性表L的最后一个结点(尾结点)。

LNode IsLast(LinkList L)

{

LNode P = L->next;

if(P)

{

while(P->next) //遍历线性表L

P = P->next;

}

return P; //返回线性表L的最后一个结点,若为空表则返回NULL

}

LNode NewLNode(ElemType X)//构造一个数据域为X的新结点

{

LNode S;

S = (LNode)malloc(sizeof(struct Node))//为新结点分配空间

if(!S)

{

printf("Out of space!");

return NULL;

}

S->data = X;

S->next = NULL;

return S;//返回新结点

}

//线性表L已存在。 *** 作结果:在线性表L中寻找值为X的结点,若找到则返回该结点的前驱,否则返回NULL。

LNode FindPrefious(ElemType X, LinkList L)

{

LNode P = L;

while(P->next && P->next->data != X)//遍历链表寻找值为X的结点

P = P->next;

if(!P->next) //如果找不到值为X的结点,返回NULL

return NULL;

else //若找到则返回该结点的前驱P

return P;

}

void ListDelete(LNode Pre)//初始条件:线性表L中结点P已找到。 *** 作结果:删除该结点。

{

LNode P = Pre->next;

Pre->next = P->next;

free(P);

}

//初始条件:线性表L中结点P已找到,新结点S已构造。。 *** 作结果:在该结点之前插入新结点X。

void ListInsert(LNode Pre, LNode S)

{

S->next = Pre->next;

Pre->next = S;

}

以下描述,头节点用H表示,第1次循环插入的节点用N1,第2次循环插入的节点用N2以此类推

忽略了赋值 *** 作的描述

在循环开始之前创建了H,H的next不指向任何节点

第1次循环:p=(LNode )malloc(sizeof(LNode)); 创建N1,即p = N1

p–>next=head–>next; 让N1指向H的next指向的节点,因为初始化时H->next = NULL,所以N1不指向任何节点,

head–>next=p 然后让H的next指向N1

第2次循环:p=(LNode )malloc(sizeof(LNode)); 创建N2,即p = N2

p–>next=head–>next; 让N2指向H的next指向的节点,因为第1次循环里,H的next已经指向了N1,所以N2指向N1

head–>next=p 然后让H的next指向N2

以此类推

直到输入为32767停止插入节点

A处执行完毕后,数组c并不一定设置好。

以本题为例:

程序顺次执行

c[0]=a[0],pc++,pa++;

c[1]=a[1],pc++,pa++;

c[2]=b[0],pc++,pb++;

c[3]=a[2],pc++,pa++;

到这一步pa-ay已经超过A_NUM了,所以while(pa-a<A_NUM && pb-b<B_NUM)的条件不满足,循环终止。

在下来执行while(pb-b<B_NUM) //C处的循环来完成数组c的设置。

程序顺次执行

c[4]=b[1],pc++,pb++;

c[5]=b[2],pc++,pb++;

完毕!

你明白了么?

给你一个简单的菜单程序吧。其中的子函数,填充成楼主所需即可。

#include

/子函数1/

fun1() {

printf ("子函数1\n");

}

/子函数2/

fun2() {

printf ("子函数2\n");

}

/子函数3/

fun3() {

printf ("子函数3\n");

}

/子函数4/

fun4() {

printf ("子函数4\n");

}

int main(void) {

int key; /命令编号/

do {

system("cls"); /清屏/

/打印菜单/

printf ("======================================================\n");

printf (" #\t功能详情\n");

printf ("------------------------------------------------------\n");

printf (" 1\t功能1\n");

printf (" 2\t功能2\n");

printf (" 3\t功能3\n");

printf (" 4\t功能4\n");

printf (" 5\t退出\n");

printf ("======================================================\n");

printf ("\n");

printf("请输入命令编号以开启 *** 作:");

/输入命令编号/

scanf("%d",&key);

printf ("\n");

/switch函数实现输入功能序号执行相应函数/

switch (key) {

case 1: fun1(); break; /子函数1/

case 2: fun2(); break; /子函数2/

case 3: fun3(); break; /子函数3/

case 4: fun4(); break; /子函数4/

case 5: printf("程序结束!按任意键退出\n\n"); break;

default:printf("输入错误,请重新输入!\n\n"); break;

}

/屏幕暂留/

if (key!=5) {

printf ("\n");

printf("按Enter键继续\n");

printf ("\n");

fflush(stdin);

getch ();

}

} while (key!=5);

/屏幕暂留/

fflush(stdin);

getch ();

return 0;

}运行结果

在同一工程中加cpp文件即可

比如你的工程中有两个cpp文件(如图)(PS:用VC6可能按“添加文件到工程”时会崩溃,你可看网页链接)

注意,调用其它cpp的函数时到先声明该函数

以上就是关于求简单C语言程序代码!全部的内容,包括:求简单C语言程序代码!、求一个c的单链表程序、c语言单链表程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9969455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存