[函數(shù)2.1說(shuō)明]
函數(shù)palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個(gè)字符串順讀和倒讀都一樣時(shí),稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函數(shù)2.1]
int palindrome(char S[])
{ char *pi,*pj;
pi=S;pj=s+strlen(S)-1:
while ( pi
}
if(__ (2)__)return-1;
else return 0;
}
[函數(shù)2.2說(shuō)明]
函數(shù)f(char *str,char del)的功能是;將非空字符串str分割成若干個(gè)子字符串并輸出,del表示分割時(shí)的標(biāo)志字符。
例如若str的值為“33123333435”,del的值為‘3’,調(diào)用此函數(shù)后,將輸出三個(gè)子字符串,分別為“12”、“4”和“5”。
[函數(shù)2.2]
void f(char*str,char del)
{ int i,j,len;
len = strlen(str);
i = 0;
while (i
/*尋找從str[i]開(kāi)始直到標(biāo)志字符出現(xiàn)的一個(gè)子字符串*/
j = i + 1;
while (str[j] !=del && str[j] !='\0') j++;
__ (4)__="\0"; /*給找到的字符序列置字符串結(jié)束標(biāo)志*/
printf(" %s\t",&str[i]): ’
__ (5)__;
}
}
試題三
以下是與Visual Basic開(kāi)發(fā)應(yīng)用有關(guān)的5個(gè)問(wèn)題.對(duì)每一個(gè)問(wèn)題,請(qǐng)將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
(1)在Visual Basic中,工程文件、窗體文件和標(biāo)準(zhǔn)模塊文件的擴(kuò)展名是什么?
請(qǐng)從下列選項(xiàng)中選擇:
prg、prj、exe、vbp、rom、frm、win、fra,std、bas、vbs、Vbm
(2)設(shè)某窗體上有一個(gè)命令按鈕,其名稱為 CmdSave,運(yùn)行時(shí)該按鈕上顯示有“保存(S)”字樣的信息。為使熱鍵 ALT+S 與該命令按鈕相關(guān)聯(lián),應(yīng)該對(duì)按鈕 CmdSave 的 Caption屬性設(shè)置什么樣的屬性值?
(3)設(shè)某窗口內(nèi)有一個(gè)圖像框 Image1,以及兩個(gè)命令按鈕“放大”和“縮小”。單擊“放大”按鈕就會(huì)使該圖像框的長(zhǎng)和寬都放大10%;單擊“縮小”按鈕就會(huì)使該圖像框的長(zhǎng)和寬都縮小10%(該圖像框的左上角不動(dòng))。請(qǐng)分別寫(xiě)出這兩個(gè)命令按鈕的單擊事件過(guò)程中的程序代碼。
(4)為使某個(gè)單選按鈕初始時(shí)默認(rèn)被選中,在開(kāi)發(fā)時(shí)應(yīng)怎樣做?
(5)若有語(yǔ)句 Tmpval=MsgBox(非法操作!,ybOKCancel+vbCritical,"提示"),請(qǐng)簡(jiǎn)要描述程序運(yùn)行時(shí)彈出的消息框的主要特征。
從下列的2道試題(試題四至試題五)中任選1道解答,如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解咎有效。
試題四
閱讀以下說(shuō)明和C代碼,將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
[說(shuō)明]
函數(shù) MultibaseOutput(long n,int B)的功能是:將一個(gè)無(wú)符號(hào)十進(jìn)制整數(shù) n 轉(zhuǎn)換成 B(2≤B≤16)進(jìn)制數(shù)并輸出。該函數(shù)先將轉(zhuǎn)換過(guò)程中得到的各位數(shù)字入棧,轉(zhuǎn)換結(jié)束后再把 B 進(jìn)制數(shù)從棧中輸出。有關(guān)棧操作的諸函數(shù)功能見(jiàn)相應(yīng)函數(shù)中的注釋。C代碼中的符號(hào)常量及棧的類型定義如下:
#define KAXSIZE 32
typedef struct{
int *elem; /* 棧的存儲(chǔ)區(qū) */
int max; /* 棧的容量,即找中最多能存放的元素個(gè)數(shù) */
int top; /* 棧頂指針 */
}Stack;
[C代碼]
int lnitStack(Stack *S,int n) /* 創(chuàng)建容量為n的空棧 */
{ S->elem = (int *)matloc(n * sizeof(int));
if (S->elem == NULL) return -1;
S->max = n;__(1)__= 0;return 0;
}
int Push(Stack*S,int item) /* 將整數(shù)item壓入棧頂 */
{ if(S->top == S->max){ printf("Stack is full!\n");return -1;}
__(2)__;item;return 0;
}
int StackEmpty(Stack S){ return(!S.top) ? 1;0;) /* 判斷棧是否為空 */
int Pop(Stack*S) /* 棧頂元素出棧 */
{ if (!S->top){ printf("Pop an empty stack!\n");return -1;)
return __(3)__;
}
void MultibaseOutput(long n,int B)
{ int m;Stack S;
if (init Stack(&S,MAXSIZE)) { printf("Failure!\n");return;}
do {
if (Push(&s,__(4)__)) { printf("Failure!\n");return;}
n = __(5)__:
} while (n != 0);
while (!StackEmpty(S)) { /* 輸出B進(jìn)制的數(shù) */
m = Pop(&S);
if (m < 10) printf("Kd",m); /* 小于10,輸出數(shù)字 */
else printf("%c,m + 55); /* 大于或等于10,輸出相應(yīng)的字符 */
}
printf("\n");
}
試題六
閱讀下列函數(shù)說(shuō)明和 C 函數(shù),將應(yīng)填入__(n)__處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
[函數(shù)6說(shuō)明]
函數(shù)DelAInsB(LinkedList La,LinkedList lb,int key1,int key2,int len)的功能是,將線性表A中關(guān)鍵碼為keyl的結(jié)點(diǎn)開(kāi)始的len個(gè)結(jié)點(diǎn),按原順序移至線性表B中關(guān)鍵碼為key2的結(jié)點(diǎn)之前,若移動(dòng)成功,則返回0;否則返回-1。線性表的存儲(chǔ)結(jié)構(gòu)為帶頭結(jié)點(diǎn)的單鏈表,La為表A的頭指針,Lb為表B的頭指針。單鏈表結(jié)點(diǎn)的類型定義為:
typedef struct node{
int key;
struct node*next;
}*Linkedhist;
[函數(shù)6]
int DelllnsB(LinkedLiSt La,LinkedList Lb,int keyl,int key2,int len)
{ LinkedList p,q,S,prep,pres;
int k;
if (!La->next || !Lb->next || len<=0) return-1;
p = La->next; prep = La;
while (p && p->key != keyl){ /* 查找表A中鍵值為key1的結(jié)點(diǎn) */
prep = p; p = p->next;
}
if (!p) return -1; /* 表A中不存在鍵值為key1的結(jié)點(diǎn) */
q = p; k = 1;
while (q && __(1)__){ /* 在表A中找出待刪除的len個(gè)結(jié)點(diǎn) */
__(2)__: k++;
}
if (!q) return -1; /* 表A中不存在要被刪除的len個(gè)結(jié)點(diǎn) */ ·
S = Lb->next;__ (3)__;
while (s && s->key != key2){ /* 查找表B中鍵值為key2的結(jié)點(diǎn) */
pres = s; s = s->next;
}
if (!s)return -1; /* 表B中不存在鍵值為key2的結(jié)點(diǎn) */
__(4)__q->next; /* 將表A中的len個(gè)結(jié)點(diǎn)刪除 */
q->next:__(5)__
pres->next = p; /* 將len個(gè)結(jié)點(diǎn)移至表B */
return 0;
}
[NextPage]
答案
試題一
(1)i:1,1,8
(2)1→sw
(3) 0→BIT[i]
(4)NOP,或空操作
(5)1→BIT[i]
試題二
(1)j%2,及其等價(jià)形式
(2)i+=2,及其等價(jià)形式
(3)tag>2,或tag==3或tag>=3,及其等價(jià)形式
(4)9
(5)45
試題三
(1)p && k(2)!p->next,及其等價(jià)形式
(3)q->next
(4)prep->next
(5)q->next=p
試題四
(1)(h-9)*60+m,及其等價(jià)形式
(2)time + R[k].d[ch-'a']*20 其中ch-'a'可以表示為ch-97,R[k]可以表示為R[R[k].no]
(3)R[t].num == R[j].num && R[t].time > R[j].time,及其等價(jià)形式
(4)t!=i,及其等價(jià)形式,表達(dá)式的值為真也正確
(5)R[i],及其等價(jià)形式
試題五
(1)Asc("A")+i-1,或64+i,及其等價(jià)形式
(2)(h-9)*60+m,及其等價(jià)形式
(3)Combol.Text
(4)Value
(5)Time+R(k).d(m)*20 其中m可表示為Asc(ch)-Asc("A")或Asc(ch)-65,k可表示為R(R(k).no)
試題六
(1)public Figure
(2)height*width
(3)public Rectangle
(4)this->height=this->width=width
(5)public Figure 若填public Rectangle只給1分