8086 CPU响应硬件中断INTR请求的必要条件除中断允许标志外,还应有()。
A.访问操作结束
B.当前指令执行完
C.无软件中断请求
D.无内部中断请求
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
【函数2.1说明】
函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
【函数2.1】
int palindrome(char s[ ] )
{ char * pi, * pj;
pi=s; pj=s+strlen(s)-1;
while(pi<pj&&(1)){
pi ++ ;pj --
}
if((2))return -1;
else return 0;
}
【函数2.2说明】
函数f(char * str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”、“4”和“5”。
【函数2.2】
void f(char * str, char del)
{ int i ,j ,len;
len = strlen (str)
i=0;
while(i < len) {
while((3))i++; /*忽略连续的标志字符*/
/*寻找从str[i]开始直到标志字符出现的一个子字符串*/
j=i+1;
while(str[j] != del && str[j] ! = '\0')j ++
(4): '\0'; /*给找到的字符序列置字符串结束标志*/
printf("%s\t",&str[i]);
(5);
}
}
●试题二
阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【函数2.1说明】
函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:"LEVEL"是回文字符串,而"LEVAL"不是。
【函数2.1】
int palindrome(char s[])
{char*pi,*pj;
pi=s;pj=s+strlen(s)-1;
while(pi<pj && (1) ){
pi++;pj--;
}
if((2) )return -1;
else return 0;
}
【函数2.2说明】
函数f(char*str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如若str的值为"33123333435",del的值为"3",调用此函数后,将输出3个子字符串,分别为"12"、"4"和"5"。
【函数2.2】
void f(char*str,char del)
{int i ,j ,len;
len=strlen(str);
i=0;
while(i<len){
while((3) )i++;/*忽略连续的标志字符*/
/*寻找从str[i]开始直到标志字符出现的一个子字符串*/
j=i+1;
while(str[j]!=del && str[j]!=′\0′)j++;
(4) =′\0′;/*给找到的字符序列置字符串结束标志*/
printf(″%s\t″,&str[i]);
(5) ;
}
}
阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。
[函数2.1说明]
函数palindrome(char s[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样,称该字符串是回文字符串,例如,“LEVEL”是回文字符串,而“LEVAL”不是。
[函数2.1]
int palindrome(char s[])
{
char *pi, *pj;
pi=s;pj=s+strlen(s)-1;
while(pi<pj&& (1) ) {
pi++;pj--;
}
if((2) ) return-1;
else return 0;
}
[函数2.2说明]
函数f(char *str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如,若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”,“4”和“5”。
[函数2.2]
void f(char *str,char del)
{
int i,j,len;
len=strlen(str);
i=0;
While(i<len){
While((3) )i++; /* 忽略连续的标志字符 */
/* 寻找从str[i]开始直到标志字符出现的一个子字符串 */
j=i+1;
while(str[j]!=del &&str[j]!'\0')j++;
(4) ='\0'; /* 给找到的字符序列置字符串结束标志 */
printf("%s\t",&str[i]);
(5);
}
}
A.0和0
B.0和1
C.1和0
D.1和1
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
函数print(BinTreeNode*t;DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。
【函数】
void print(BinTreeNode*t;DateType &x){
stack ST;int i,top;top=0;∥置空栈
while(t!=NULL &&t->data!=x‖top!=0)
{while(t!=NULL && t->data!=x)
{
∥寻找值为x的结点
(1) ;
ST[top].ptr=t;
ST[top].tag=0;
(2) ;
}
if(t!=Null && t->data==x){∥找到值为x的结点
for(i=1; (3) ;i++)
printf("%d",ST[top].ptr->data);}
else{
while((4) )
top--;
if(top>0)
{
ST[top].tag=1;
(5) ;
}
}
}
下面()指令不能使进位标志CF置“0”。
A.AND AL,AL
B.MOV AL,0
C.SUB AL,AL
D.CLC
89C51单片机有5个中断源,但只能设置两个中断优先级,因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。 (1)定时器0,定时器1,外中断0,外中断1,串行口中断。 (2)串行口中断,外中断0,定时器0溢出中断,外中断1,定时器1溢出中断。 (3)外中断0,定时器1溢出中断,外中断1,定时器0溢出中断,串行口中断。 (4)外中断0,外中断1,串行口中断,定时器0溢出中断,定时器1溢出中断。 (5)串行口中断,定时器0溢出中断,外中断0,外中断1,定时器1溢出中断。 (6)外中断0,外中断1,定时器0溢出中断,串行口中断,定时器1溢出中断。 (7)外中断0,定时器1溢出中断,定时器0溢出中断,外中断1,串行口中断。