C语言中结构化的程序设计是什么

C语言中结构化的程序设计是什么,第1张

c语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。c语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的 *** 作。由于c语言实现了对硬件的编程 *** 作,因此c语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,c语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的c语言。

c源程序的结构特点

1一个c语言源程序可以由一个或多个源文件组成。

2每个源文件可由一个或多个函数组成。

3一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4源程序中可以有预处理命令(include

命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

书写程序时应遵循的规则

从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时

应遵循以下规则:

1一个说明或一个语句占一行。

2用{}

括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

/ 二叉树应用 /#include "stdioh"

#include "stdlibh"typedef char ElemType; / 结点数据的类型 /

typedef struct BiTNode{

ElemType data;

struct BiTNode lchild,rchild;

}BiTNode; / 树结点类型 //栈的定义及基本 *** 作/

#define MaxSize 100

typedef BiTNode SElemType; / 栈和队列的结点类型,用于存放树结点 /

typedef struct {

SElemType elem[MaxSize];

int top;

}SqStack; / 栈 /void InitStack(SqStack pS) / 初始化栈,开始时栈为空 /

{

pS->top=0; / top指向栈顶的上一个元素 /

}int Push(SqStack pS,SElemType e) / 进栈 /

{

if (pS->top==MaxSize-1) / 栈满 /

return 0; pS->elem[pS->top]=e;

pS->top=pS->top+1;

return 1;

}int Pop(SqStack pS,SElemType pe) / 出栈 /

{

if (pS->top==0) / 栈空 /

return 0; pS->top = pS->top - 1;

pe = pS->elem[pS->top];

return 1;

}/队列(循环队列)的定义及基本 *** 作/typedef struct {

SElemType elem[MaxSize];

int front,rear;

}SqQueue; / 队列 /void InitQueue(SqQueue pQ) / 初始化队列,开始时队列为空 /

{

pQ->front=pQ->rear=0;

}int EnQueue(SqQueue pQ,SElemType e) / 进队 /

{

if ((pQ->rear+1)%MaxSize == pQ->front) / 队满 /

return 0;

pQ->elem[pQ->rear] = e;

pQ->rear = (pQ->rear+1)%MaxSize;

return 1;

}int DeQueue(SqQueue pQ,SElemType pe) / 出队 /

{

if (pQ->rear == pQ->front) / 队空 /

return 0;

pe = pQ->elem[pQ->front];

pQ->front = (pQ->front+1)%MaxSize;

return 1;

}

/ 先根遍历 /

void preorder(BiTNode bt)

{ if(bt!=NULL)

{ printf("%c ",bt->data);

preorder(bt->lchild);

preorder(bt->rchild);

}

} / 中根遍历 /

void inorder(BiTNode bt)

{ if(bt!=NULL)

{ inorder(bt->lchild);

printf("%c ",bt->data);

inorder(bt->rchild);

}

}

/ 后根遍历 /

void postorder(BiTNode bt)

{ if(bt!=NULL)

{ postorder(bt->lchild);

postorder(bt->rchild);

printf("%c ",bt->data);

}

}/ 非递归算法的中根遍历(后进先出,用了栈的思想) /

void inorder_fdg(BiTNode bt)

{

BiTNode p;

SqStack s;

InitStack(&s);

p=bt;

do

{ while(p!=NULL)

{ Push(&s,p);

p=p->lchild;

}

if(stop!=0)

{ Pop(&s,&p);

printf("%c ",p->data);

p=p->rchild;

}

}while(stop!=0||p!=NULL);

}/ 用队列实现层次遍历 /

void lev_traverse(BiTNode bt)

{

SqQueue q;

BiTNode p;

p=bt;

InitQueue(&q);

EnQueue(&q,p);

while(!(qrear==qfront)) { / 当队列不空 /

DeQueue(&q,&p);

printf("%c ",p->data); if(p->lchild!=NULL)

EnQueue(&q,p->lchild); if(p->rchild!=NULL)

EnQueue(&q,p->rchild);

}

}

/ 利用先根序列建立二叉树,空的子树也要输入,用空格表示,建立的树通过函数返回,避免使用指针的指针 /

BiTNode crt_bt_pre()

{ char ch;

BiTNode bt;

scanf("%c",&ch); if(ch==' ') bt=NULL;

else

{ bt=(BiTNode )malloc(sizeof(BiTNode));

bt->data=ch;

bt->lchild=crt_bt_pre();

bt->rchild=crt_bt_pre();

}

return(bt);

}/ 利用先根序列建立二叉树,空的子树也要输入,用空格表示,建立的树通过参数返回,注意和上述方法比较,想想还有什么办法? /

void crt_bt_pre_2(BiTNode bt)

{ char ch;

scanf("%c",&ch); if(ch==' ') (bt)=NULL;

else

{ (bt)=(BiTNode )malloc(sizeof(BiTNode));

(bt)->data=ch;

crt_bt_pre_2(&(bt)->lchild);

crt_bt_pre_2(&(bt)->rchild);

}

}

/ 求叶子数 /

int leaf(BiTNode bt)

{

if (bt==NULL) return 0;

else {

if (bt->lchild==NULL&&bt->rchild==NULL) return 1;

else

return leaf(bt->lchild)+leaf(bt->rchild);

}}/ 求树的高度 /

int high(BiTNode bt)

{

if (bt==NULL) return 0;

else {

return max(high(bt->lchild),high(bt->rchild))+1;

}}

/ 二叉树的释放/

void freetree(BiTNode bt)

{ if(bt!=NULL)

{ freetree(bt->lchild);

freetree(bt->rchild);

free(bt);

bt=NULL;

}

}main()

{

BiTNode T,temp[20]; / 笨方法建立二叉树 /

/ temp[0]=(BiTNode)malloc(sizeof(BiTNode));

temp[0]->data = '-'; temp[1]=(BiTNode)malloc(sizeof(BiTNode));

temp[1]->data = '+';

temp[0]->lchild = temp[1]; temp[2]=(BiTNode)malloc(sizeof(BiTNode));

temp[2]->data = '/';

temp[0]->rchild = temp[2]; temp[3]=(BiTNode)malloc(sizeof(BiTNode));

temp[3]->data = 'a';

temp[3]->lchild=NULL; temp[3]->rchild=NULL;

temp[1]->lchild = temp[3]; temp[4]=(BiTNode)malloc(sizeof(BiTNode));

temp[4]->data = '';

temp[1]->rchild = temp[4]; temp[5]=(BiTNode)malloc(sizeof(BiTNode));

temp[5]->data = 'e';

temp[5]->lchild=NULL; temp[5]->rchild=NULL;

temp[2]->lchild = temp[5]; temp[6]=(BiTNode)malloc(sizeof(BiTNode));

temp[6]->data = 'f';

temp[6]->lchild=NULL; temp[6]->rchild=NULL;

temp[2]->rchild = temp[6]; temp[7]=(BiTNode)malloc(sizeof(BiTNode));

temp[7]->data = 'b';

temp[7]->lchild=NULL; temp[7]->rchild=NULL;

temp[4]->lchild = temp[7]; temp[8]=(BiTNode)malloc(sizeof(BiTNode));

temp[8]->data = '-';

temp[4]->rchild = temp[8]; temp[9]=(BiTNode)malloc(sizeof(BiTNode));

temp[9]->data = 'c';

temp[9]->lchild=NULL; temp[9]->rchild=NULL;

temp[8]->lchild = temp[9]; temp[10]=(BiTNode)malloc(sizeof(BiTNode));

temp[10]->data = 'd';

temp[10]->lchild=NULL; temp[10]->rchild=NULL;

temp[8]->rchild = temp[10]; T=temp[0]; /

/输出树和各种遍历、叶子数、树的高度/

/printf("\ntree:\n");

printf(" -\n");

printf(" + /\n");

printf(" a e f\n");

printf("0 0b - 0 00 0\n");

printf(" 0 0c d\n"); printf("\n\nPreOrder:\n");

preorder(T); printf("\nInOrder:\n");

inorder(T); printf("\nPostOrder:\n");

postorder(T); printf("\ninorder_fdg:\n");

inorder_fdg(T); printf("\nlev_traverse:\n");

lev_traverse(T);

printf("\nleaf num:%d",leaf(T));

printf("\nTree high:%d",high(T));

freetree(T); / / 按先序列建树,用空格表示空子树/ printf("\n\nplease input inorder:such as 'abc de g f '\n");

/T = crt_bt_pre();/

crt_bt_pre_2(&T); printf("\n\nPreOrder:\n");

preorder(T); printf("\nInOrder:\n");

inorder(T); printf("\nPostOrder:\n");

postorder(T); printf("\ninorder_fdg:\n");

inorder_fdg(T); printf("\nlev_traverse:\n");

lev_traverse(T);

printf("\nleaf num:%d",leaf(T));

printf("\nTree high:%d",high(T));

freetree(T);

getch();

}

/则正确的switch语句是-----这句看不懂。

float x=15;

int a=1,b=3,c=2;//则正确的switch语句是

switch(a+b) //如果A+B的值为1执行case1 3时执行case3,如果不是1或者3就跳出SWITCH

{ case1:

printf(''\n");

case2+1: //case 3:

printf(''\n'');

}

第一章 程序设计的基本概念

第一节 C语言的发展历史与特点

第二节 程序与程序设计

第三节 算法与算法的描述

第四节 C语言的上机 *** 作

思考题与习题

第二章 C语言程序设计基础

第一节 C语言的程序结构

第二节 数据类型

第三节 运算符与表达式

思考题与习题

第三章 C程序控制结构

第一节 C程序的三种基本控制结构

第二节 顺序结构

第三节 选择结构

第四节 循环结构

思考题与习题

第四章 数组

第一节 数组与数组元素的概念

第二节 一维数组

第三节 二维数组及多维数组

第四节 字符串与字符数组

思考题与习题

第五章 指针

第一节 指针与指针变量的概念

第二节 指针变量的定义和引用

第三节 指针变量与数组

思考题与习题

第六章 函数

第一节 函数的定义

第二节 函数的嵌套调用

第三节 数组作为函数参数

第四节 指针与函数

第五节 变量的使用范围与存储类别

第六节 不同文件中的函数使用

思考题与习题

第七章 编译预处理

第一节 宏定义

第二节 文件包含

第三节 条件编译

思考题与题

第八章 结构体与共用体

第一节 结构体基础

第二节 结构体数组

第三节 结构体指针

第四节 链表

第五节 位段

第六节 共用体

第七节 枚举类型与自定义类型

思考题与习题

第九章 文件

第一节 文件概述

第二节 文件的打开与关闭

第三节 文件的读/写

第四节 文件的定位

思考题与习题

第十章 程序设计方法

第一节 程序设计的基本概念

第二节 结构化程序设计方法

第三节 程序效率

第四节 程序设计风格

思考题与习题

附录

附录A C语言实验

附录B 标准ABSII码表

附录C C语言中的关键字

附录D 运算符的优先级与结合性

以上就是关于C语言中结构化的程序设计是什么全部的内容,包括:C语言中结构化的程序设计是什么、C语言版数据结构程序设计、c语言 选择结构程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9679766.html

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

发表评论

登录后才能评论

评论列表(0条)

保存