C语言中的频率函数,请计算下列C语言程式片断或函数的频率计数和时间复杂度,如下所示 .DOC...

请计算下列C语言程式片断或函数的频率计数和时间复杂度,如下所示

請計算下列C語言程式片斷或函數的頻率計數和時間複雜度,如下所示(10%):

(a)

i = 1;1

while ( i <= n ) {n+1

a = a+1;n

i++;n

}

頻率計數:3n+2

時間複雜度:O(n)

(b)

void printMoney( int level ) {

if (level == 0) {n+1

printf("$");1

} else {

printf("

printMoney(level-1);n

printf(">");n

}

}

頻率計數:4n+2

時間複雜度:O(n)

請問下列哪一個關於Big Oh的敘述是錯誤的(5%)?

A. 5n2 - 6n = O(n2) B. 10n100 + 2n = O(n100)

C. 99n + 1 = O(n) D. 100 + 5 = O(1)

Sol: B,應,,

double sum[30];

假設:上述陣列的記憶體開始位址是:0022FE80(十六進位),請回答下列問題,如下所示:

sum[]陣列總共佔用的記憶體空間______位元組。

sum[12]的記憶體開始位址:________。[25]的記憶體開始位址:________。

Sol: 240、0022FEE0、022FF48s,name(10字元)、age、email(20字元)儲存姓名、年齡、薪水和電子郵件地址。(10%)

struct Employees {

char name[11];

int age;

float salary;

char email[21];

};

在C程式宣告一個大小6個元素的整數陣列array[],ptr = array;

ptr++;

ptr+3;

ptr = ptr + 2;

0、1、4、3strrev(),string[20] = {"book"};

執行strrev(string)函數後成為"koob"。

char *strrev(const char *p, int size)

{

static char str[100];

char *q= &str;

while((size--)>0)

*(q++) = *(p+size);

*q = '\0';

return str;

}

請寫一個計算字串長度int strlen(char *str)的程式(10%)

Sol:

int strlen(char *str)

{

int i;

for ( i = 0; str[i] != '\0'; i++ ); /* 用迴圈計算長度 */

return i;

}

請問字串的指標陣列和二維字元陣列之間的差異為何?(10%)

Sol:

C語言的指標陣列最常是應用在字串的指標陣列,如下所示:

#define ROWS 4

char *name[ROWS] = { "陳會安", "江小魚",

"張無忌", "楊過" };

上述程式碼宣告字串的指標陣列name且指定初值,其圖例如下所示:

上述圖例的指標陣列只配置4個元素,每一個元素是一個指標變數,指向一個字串。同樣的,我們也可以宣告一個二維陣列儲存上述4個字串,如下所示:

#define ROWS 4

#define COLUMNS 10

char names[ROWS][COLUMNS] = { "陳會安", "江小魚",

"張無忌", "楊過" };

上述程式碼宣告二維字元陣列,第二維的字元陣列是字串,此時不論儲存的字串長度為多少,以此例字串長度依序為6、6、6,int i, j, start=0, end=M-1;

for ( i=0; end<=N; end++, start++) {

if ( string[end] == keyword[M-1] )

for ( j=0, i=start; j < M-1 &&

string[i] == keyword[j]; i++, j++);

if ( j==M-1) return (start);

}

return (-1);

Sol: 外

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值