閱讀下列說(shuō)明、流程圖和算法,將應(yīng)填入__(n)__處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi).
[流程圖說(shuō)明]
下面的流程圖用n—s盒圖形式描述了數(shù)組a中的元素被劃分的過(guò)程.其劃分方法是:
以數(shù)組中的第一個(gè)元素作為基準(zhǔn)數(shù),將小于基準(zhǔn)數(shù)的元素向低下標(biāo)端移動(dòng),而大于基準(zhǔn)數(shù)的元素向高下標(biāo)端移動(dòng).當(dāng)劃分結(jié)束時(shí),基準(zhǔn)數(shù)定位于a[i],并且數(shù)組中下標(biāo)小于i的元素的值均小于基準(zhǔn)數(shù),下標(biāo)大子i的元素的值均大于基準(zhǔn)數(shù)。設(shè)數(shù)組a的下界為low,上界為high,數(shù)組中的元素互不相同。例如,對(duì)數(shù)組(4,2,8,3,6),以4為基準(zhǔn)數(shù)的劃分過(guò)程
[算法說(shuō)明]
將上述劃分的思想進(jìn)一步用于被劃分出的數(shù)組的兩部分,就可以對(duì)整個(gè)數(shù)組實(shí)現(xiàn)遞增排序。設(shè)函數(shù)int p(int a[],int low,int high)實(shí)現(xiàn)了上述流程圖的劃分過(guò)程并返回基準(zhǔn)數(shù)在數(shù)組a中的下標(biāo)。遞歸函數(shù)void sort(int a[],iht l,int h)的功能是實(shí)現(xiàn)數(shù)組a中元素的遞增排序。
[算法]
void sort(int a[],iht l,int h) {
if ( l < h ) {
k=p(a,l,r); //p()返回基準(zhǔn)數(shù)在數(shù)組a中的下標(biāo)
sort(__ (4)__; //小于基準(zhǔn)數(shù)的元素排序
sortl__ (5)__); //大于基準(zhǔn)數(shù)的元素排序
}
} 從下列的2道試題(試題二至試題三)中任選1道解答。如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道解答有效。
試題二
閱讀下列函數(shù)說(shuō)明和c函數(shù),將應(yīng)填入__(n)__處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
[函數(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<pj && __(1)__){
pi++; pj--;
}
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<len){
while (__(3)__) i++; /*忽略連續(xù)的標(biāo)志字符*/
/*尋找從str[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開發(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)分別寫出這兩個(gè)命令按鈕的單擊事件過(guò)程中的程序代碼。 (4)為使某個(gè)單選按鈕初始時(shí)默認(rèn)被選中,在開發(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)__處的字句寫在答題紙的對(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");
}試題五
閱讀以下應(yīng)用說(shuō)明及visual basic程序代碼,將應(yīng)填入__(n)__處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
[應(yīng)用說(shuō)明5.1]
本應(yīng)用程序的窗體中有一個(gè)下拉式列表框(名稱為combol)和兩個(gè)文本框(名稱分別為txtl和txt2)。運(yùn)行時(shí),用戶從combol的列表中進(jìn)行選擇,程序就會(huì)將選中條目的內(nèi)容以及編號(hào)(從0開始)分別在文本框 txt1 和 txt2 中顯示出來(lái)。
[程序代碼5.1]
private sub combol_c1ick()
txtl.text = combol.__(1)__
txt2.text = combol.__(2)__
end sub
(注:可供(2)處選擇的選項(xiàng):list,index,listlndex,listcount,number)
[應(yīng)用說(shuō)明5.2]
本應(yīng)用程序的運(yùn)行窗口如下圖所示:
當(dāng)用戶在輸入框(名為txtln)中輸入數(shù)值數(shù)據(jù),并從下拉式列表框(名為cmbop)中選擇所需的運(yùn)算后,輸出框(名為txtout)中就會(huì)顯示運(yùn)算的結(jié)果。用戶單擊“清除”按鈕(名為cmdclear)后,輸入框和輸出框都清空。
開發(fā)該應(yīng)用的部分程序代碼如下:
[程序代碼5.2]
private sub cmbop_click()
dim datain as double,dataout as double
datain = __(3)__
select case __(4)__
case "取整數(shù)部分"
dataout = int(dataln)
case "求平方根"
if dataln < o then
msgbox$("負(fù)數(shù)不能開平方!")
else
dataout = sqr(dataln)
end if
case "取絕對(duì)值"
dataout = abs(dataln)
(txtout.text = str$(dataout)
__5)__
end sub