- return用法:
(1)没有返回值的函数为空类型,用void表示;
(2)return语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个return语句被执行,所以只有一个返回值;
(3)函数一旦遇到return语句就立即返回,后面的所有语句都不会被执行到了。return语句还有强制结束函数体的作用。
- break用法:
(1)循环中的break语句导致程序终止包含它的循环,并进行程序的下一阶段。翻译过来就是,取消循环,进入之后的代码块!!!!循环体结束!
(2)多重选择中常用switch和break组合
- continue用法
(1)导致循环体剩下的部分被忽略,重新开始新的循环迭代!!!
- 文字描述如何转化为C语言代码的问题:
例一:追加结点
(1)数据准备
文字描述:链表的程序设计。首先准备数据,也就是准备在链表操作中需要用到的变量及数据结构。因此要定义链表数据元素的类型Data及链表的数据结构CLType。节点的数据保存在一个结构体Data中,而指针nextNode用来指向下一个节点。
typedef struct
{
char key[10];//关键字
char name[20];
int age;
}Data;
typedef struct Node
{
Data nodeData;
struct Node * nextNode;
}CLType;
注意以上代码与文字的对应关系。
(2)追加结点
1、首先分配内存空间,保存新增的节点。
2、从头指针head开始逐个检查,直到找到最后一个结点(尾结点)。
3、将表尾结点的地址设置为新增结点的地址。
4、将新增结点的地址部分设置为空地址NULL,即新增结点成为表尾。
CLType *CLAddEnd(CLType *head, Data nodeData)//追加结点
{
CLType *node, *htemp;
if (!(node = (CLType*)malloc(sizeof(CLType))))
{
printf("申请内存失败!\n");
return NULL;//分配内存失败
}
else
{
node->nodeData = nodeData;//保存数据
node->nextNode = NULL;//设置结点指针为空,即为表尾
if (head == NULL)//头指针
{
head = node;
return head;
}
htemp = head;
while (htemp->nextNode!=NULL)//查找链表的末尾
{
htemp = htemp->nextNode;
}
htemp->nextNode = node;
return head;
}
}
其中node作为保存数据,转换为结点,的中继;htemp作为查找链表的工具.
因此,将算法步骤准确翻译成代码是有理有据,有规律可循的!!!!
例二:插入头节点
在链表首部添加结点。
(1)首先分配内存空间,保存新增的结点
(2)使新增结点指向头指针head所指向的结点
(3)然后使头指针head指向新增结点
CLType *CLAddFirst(CLType *head,Data nodeData)
{
CLType *node;
if (!(node = (CLType*)malloc(sizeof(CLType))))
{
printf("申请内存失败!\n");
return NULL;//分配内存失败
}
else
{
node->nodeData = nodeData;//保存数据
node->nextNode = head;//指向头指针所指结点
head = node;//头指针指向新增结点
return head;
}
}
- 若要得到100以内的随机数,用rand()%100就可以轻松获得。这里%是取余符号。
(1)x=(rand()%50)2;//输出100以内的偶数
第一步得到50以内的整数,第二步将第一步中得到的整数乘以2,得到一个100以内的偶数。
(2)输出一个随机数
x=rand();
(3)输出一个100以内的随机数
x=rand()%100;
(4)以20%概率输出一个10以内的偶数(否则输出10以内的奇数)
x=rand()%5;(0、1、2、3、4)
if(x==0)
x=2(rand()%5);(0、1、2、3、4)->(0、2、4、6、8)
else
x=1+2*(rand()%5);(0、、2、3、4)->(1、3、5、7、9)
并没超过10!!!左闭右开区间