程序源码及运行结果如下所示(系统会自动去掉句首空格,排版较乱请见谅):
#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语言单链表程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)