有以下程序: #include <stdio.h> int fun(char p[][10]) {int n=0,i; for(i=0;i<7;i+ +) if(p[i][0]= ="T") n+ +; return n; } main( ) {char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","sun"}; printf("%d\n",fun(str)); } 程序执行后的输出结果是______。
查看答案
假设二叉树采用二叉链表存储结构,设计一个算法求其指定的某一层k(k>1)的叶子结点个数,要求: 根据设计思想,采用C或C++语言描述算法,关键之处给出注释。 算法的设计如下: 解法一: #define MaxSize 100 //设置队列的最大容量 int LeafKLevel(BTNode *root, int k){ BTNode* q[MaxSize]; //声明队列,end1为头指针,end2为尾指针 int end1, end2, sum=0; //队列最多容纳MaxSize一1个元素 end1=end2=0; //头指针指向队头元素,尾指针指向队尾的后一个元素 int deep=0; //初始化深度 BTNode *lastNode; //lastNode用来记录当前层的最后一个结点 BTNode *newlastNode; //newlastNode用来记录下一层的最后一个结点 lastNode=root; //lastNode初始化为根结点 newlastNode=NULL; //newlastNode初始化为空 q[end2++]=root; //根结点入队 while(end1 !=end2){ //层次遍历,若队列不空则循环 BTNode *t=q[end1++]; //拿出队列中的头一个元素 if(k=deep){ //找到特定层,统计叶子结点个数 while(end1 !=end2){ t=q[end1++]; if(t->lchild==NULL&&t->rchild==NULL) ++sum; } break; } else{ //没到特定层,层次遍历 if(t->lchild !=NULL){ //若非叶子结点把左结点入队 q[end2++]=t->lchild; newlastNode=t->lchild; } //并设下一层的最后一个结点为该结点的左结点 if(t->rchild !=NULL){ //处理叶结点 q[end2++]=t->rchiid; newlastNode=t->rchild; } if(t==lastNode){ //若该结点为本层最后一个结点,更新lastNode lastNode=newlastNode; deep+=1; //层数加1 } } } return sum; //返回叶子结点个数 } 解法二: int n; int LeafKLevel(BiTree root, int k){ n=0; Preorder(root, 0, k); return 0; } int PreOrder(BiTree root, int deep, int k){ if(deep<k){ if(root->lchild !=NULL) //若左子树不空,对左子树递归遍历 PreOrder(root->lchild, deep+1); if(root->rchild !=NULL) //若右子树不空,对右子树递归遍历 PreOrder(root->rchild, deep+1); } else if(deep==k && root->lchild==NULL && root->rchild==NULL) ++n; }
已知32位寄存器中存放的变量x的机器码为C0000004H,请问: 当x是带符号整数(补码)时,x的真值是多少x/2的真值是多少x/2存放在R1中的机器码是什么2x的真值是多少2x存放在R1中的机器码是什么
若有以下程序: #include <stdio.h> main( ) { int a=1,b=2; for( ;a<8;a+ +) {b+ =a; a+ =2;} printf("%d,%d\n",a,b); } 则程序运行后的输出结果是______。
A. 9,18
B. 8,11
C. 7,11
D. 10,14
若有以下程序: #include <stdio.h> main( ) { int a=6,b=0, c=0; for (;a;) {b + = a; a - = + + c; } printf("%d,%d,%d\n",a,b,c); 则程序的输出结果是______。
A. 1,14,3
B. 0,14,3
C. 0,18,3
D. 0.14,6