一,編程題答案
1. 程序為:
int CalcCapital (char *str)
{
if (str == NULL) return 0; //判斷字符指針是否為空
int num_of_Capital = 0; //記錄大寫字母字符個數(shù)的變量,初值為0
for(int i=0; str[i] != 0x0; i++)
if (str[i] <= 'A' && str[i] >= 'Z') num_of_ Capital ++; //若是大寫字母,則總數(shù)加1
return num_of_ Capital; //返回大寫字母字符數(shù)
}
2.程序為:
float sum(int n)
{
if (n == 1) return 1;
else return sum(n-1) -(1.0/n)*(-1)n;
}
3.程序為:
Node * insNode(Node * head, int newValue)
{
Node * newNode = new Node; //申請新的節(jié)點空間
if (newNode == NULL) return NULL;//
newNode->data = newValue; //填充新節(jié)點的內(nèi)容
newNode->next = NULL;
Node *pre, *cur;
Pre = head;
if (head == NULL) head = newNode; //插入到空鏈表的表頭
else
if(newValue>=head->Value){
newNode->next=head;
head = newNode; //插入到鏈表的表頭
}
else{ //在鏈表尋找插入點
Node *cur,*pre = head;
while(pre->next != NULL){
cur = pre->next;
if(newValue >= cur->Value) break;
else pre = cur;
}
if(pre->next!= NULL) newNode->next = cur;//若非末尾,則有下一節(jié)點
pre->next = newNode; //將新節(jié)點插入
}
}
return head;
}
4.程序可以有多種寫法,下面是其中一種
char MinCode(char charAry[],int len=10)
{
char mixCode = 0x0;
for(int i=0; i <len; i++)
{
if (charAry [i] < mixCode)
mixCode = str[i];
}
return mixCode;
}
二、理解問答題:
問題1,答:
(A) bottom (NULL)
(B) top == NULL;
(C) ptop = top;
(D) pNew->nextItem = top;
(E) top = pNew;
問題2,答:不正確。因為類StackItem模板類的定義中用到了模板類Stack, Stack還沒有定義,所以,必須先聲明Stack是一個模板類,否則,編譯程序就不知道標識符Stack代表什么樣的含義,無法進行編譯。
問題3,答:第11、26和47行的const修飾的都是函數(shù)的參數(shù),表示在這個函數(shù)體中不能改它所修飾的參數(shù)的值。第27行的const修飾的是模板類Stack的成員函數(shù)is_empty(),它表示在函數(shù)is_empty()的函數(shù)體中不能改變?nèi)魏螖?shù)據(jù)成員的值。
問題4,答:析構(gòu)函數(shù)中主要是釋放存放的各個節(jié)點所占涌空間。因為Stack對象在其生存期間可能加入了很多節(jié)點,從堆中申請了一些內(nèi)存空間。這些空間應(yīng)隨著對象的消亡而釋放掉,所以,需要在析構(gòu)函數(shù)中釋放這些空間。
問題5,答:
語句號 |
1 |
2 |
3 |
4 |
5 |
對/錯 |
錯 |
對 |
錯 |
錯 |
對 |
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |