A. 很多地方缺少分号;
B. 第八行 id应为if;
C. 第十行 s/10 应为 s=s/10;
补充上应有的分号以及另两处错误如我所猜想的改过来的话,这段代码含义如下。
1. 有两个方法arrange(long s); sort(int a[],int n);
逻辑上看arrange是程序的入口。
2. sort(int a[],int n)函数对传入的参数数组a[]的前n项(下标为0 ~ n-1)进行冒泡排序。
最终形成一个递增的数列。即 a[0]<=a[1]<=a[2]<=a[3] ... <=a[n]
3. arrange(long s)函数对传入的参数进行一些简单计算,将其按位倒序将其中的奇数数字插入数组b[]中,从而形成一个新的数组。
之后调用sort(int a[], int n)进行排序。
而后将排好序的数组按照从高位到低位的顺序重新组成一个long数字,并返回。
4. %为取模运算,就是取相除之后的余数。
从程序运行结果的角度来看,如下:
arrange(25698741) => 1579
arrange(97531) =>13579
arrange(55779911) =>11557799
arrange(284606) =>0
希望能帮到你,如果还不明白,Text me!
我说点题外的 这里起码要10个函数 你不觉得会把人下走啊啊啊 !! 我的实验内容 就这么多了/*
包括二叉树的创建和遍历
*/
//头文件
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
//预定义宏常量
#define OK 1
#define ERROR -1
#define ENDFLAG '#'
typedef char TelemType
typedef int status
//二叉树的存储结构
typedef struct BiTNode{
TelemType data
struct BiTNode *lchild,*rchild
}BiTNode,*BiTree
//全局变量,表示叶子个数
int m=0
//二叉树的创建
status CreateBiTree(BiTree *T)
{// 先序创建
TelemType ch
scanf("%c",&ch)
if(ch==ENDFLAG) *T=NULL
else {
if(!(*T=(BiTNode *)malloc(sizeof(BiTNode))))
{
printf("\nOut of space.")
getch()
exit(0)
}
(*T)->data=ch//生成根结点
CreateBiTree(&((*T)->lchild))//左子树
CreateBiTree(&((*T)->rchild))//右子树
}
return OK
}
//先序遍历
status PreOrderTraverse(BiTree T)
{
if(T)
{
printf("%c",T->data)
PreOrderTraverse(T->lchild)
PreOrderTraverse(T->rchild)
}
return OK
}/*
//中序
status InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T->lchild)
printf("%c",T->data)
InOrderTraverse(T->rchild)
}
return OK
}
//后序
status PostOrderTraverse(BiTree T)
{
if(T)
{
PostOrderTraverse(T->lchild)
PostOrderTraverse(T->rchild)
printf("%c",T->data)
}
return OK
}
*/
/*
用队列 层次遍历
*/
//存储定义
typedef char QElemType
//typedef int status
typedef struct Queue
{
QElemType data
struct Queue *next
}Queue
//头指针和尾指针
typedef struct
{
Queue *front
Queue *rear
}LinkQueue
//初始化队列
status InitQueue(LinkQueue *q)
{
q->front=q->rear =NULL//----无头结点
return OK
}
/*判断队列是否为空*/
status QueueEmpty(LinkQueue *Q)
{
return (Q->front==NULL)&&(Q->rear==NULL)
/*实际上只须判断队头指针是否为空即可*/
}
//入队
void EnQueue(LinkQueue *q,QElemType e)
{
Queue *p
p=(Queue *)malloc(sizeof(Queue))/*申请新结点*/
p->data=e
p->next=NULL
if(QueueEmpty(q))
q->front=q->rear=p
else {/*x插入非空队列的尾*/
q->rear->next=p /*p链到原队尾结点后*/
q->rear=p/*队尾指针指向新的尾*/
}
}
//出队
QElemType DeQueue(LinkQueue *q)
{
Queue *p
QElemType e
if(QueueEmpty(q))
{
printf("Queue underflow\n")/*下溢*/
exit(1)
}
p=q->front/*指向对头结点*/
e=p->data/*保存对头结点的数据*/
q->front=p->next/*将对头结点从链上摘下*/
if(q->rear==p)/*原队中只有一个结点,删去后队列变空,此时队头指针已为空*/
q->rear=NULL
free(p)/*释放被删队头结点*/
return e/*返回原队头数据*/
}
/*层次遍历思想 递归
a.根结点入队列
b.原队左子树的左右孩子(非空)入队列
c.原队右子数的左右孩子(非空)入队列
*/
//层次遍历入队列
status Arrange(BiTree T,LinkQueue *Q)
{
if(T)
{
EnQueue(Q,T->data)
Arrange(T->lchild,Q)
Arrange(T->rchild,Q)
}
return OK
}
//从队列中输出各元素
status ArrangementTraverse(BiTree T)
{
char e
LinkQueue Q
InitQueue(&Q)
if(T)
{
Arrange(T,&Q)//递归调用
while(!QueueEmpty(&Q))
{
e=DeQueue(&Q)
printf("%c",e)
}
}
return OK
}
//求二叉树的叶结点个数
status NumberLeaves(BiTree T)
{//先序遍历得到叶结点的数目
//m=0
if(T)
{
if(T->lchild==NULL&&T->rchild==NULL) m++
NumberLeaves(T->lchild)
NumberLeaves(T->rchild)
}
return OK
}
int btnodeheight(BiTree b)
{
int lchildh,rchildh
if (b==NULL) return(0)
else
{
lchildh=btnodeheight(b->lchild)
rchildh=btnodeheight(b->rchild)
return (lchildh>rchildh)? (lchildh+1):(rchildh+1)
}
}
/*
//一个比较函数
status Max(int m, int n)
{
if (m >n)
return m
else
return n
}
//获取二叉树的高度
status HighBitree(BiTree t)
{
if (t == NULL)
return 0
else
return 1 + Max(HighBitree(t->lchild), HighBitree(t->rchild))
}*/
//主函数
void main()
{
BiTree T
printf("请创建二叉树:\n")
CreateBiTree(&T)
NumberLeaves(T)
printf("叶节点个数为:")
printf("%d",m)
printf("\n二叉树的高度为:")
printf("%d",btnodeheight(T))
// printf("%d",HighBitree(T))
printf("\n先序遍历:\n")
PreOrderTraverse(T)
/* printf("\n中序遍历:\n")
InOrderTraverse(T)
printf("\n后序遍历:\n")
PostOrderTraverse(T)*/
printf("\n层次遍历\n")
ArrangementTraverse(T)
printf("\n")
}
strcpy 这个函数是把后面那个字符串拷贝到前面那个字符串里面。a是字符串"nice to meet you!"的首地址,strlen(a)是计算字符串a的长度结果为17。
那么a+strlen(a)/2就是a + 17 / 2就是a + 8,意思是从a后面第8个位置开始接受拷贝。
strcpy(a+8,"you")就相当于把 "you" 接到a后面第8个位置 结果就是nice to you。答案D
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)