本资源提供了C语言数据结构课程第一章习题的标准解答与解析,帮助学生理解和掌握基本概念和编程技巧。
第一章 绪论作业答案(共50分)
一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分)
```c
Ex( ){
int i , j , t ;
(1) for(i=1 ; i<10 ; i++) //n =
(2) printf(\n %d , i ); //n =
(3) for(i=1; i<=2; i++) //n =
(4) printf(\n); //n =
(5) for(i=1; i<=9; i++) //n =
{
(6) for(j=1; j <= i ; j++) //n =
{
(7) t = i * j ; //n =
(8) printf(],t); //n =
}
(9) for(j=1; j<3 ; j++) //n =
(10) printf(\n); //n =
}
}
```
二、分析如下程序段中指定语句的执行次数(共6分)。
有如下程序段:
```c
x = 91 ;
y = 100 ;
while(y > 0){
if(x > 100) {
x -= 10 ; y -- ;
} else
x ++ ;
}
```
问if语句执行了多少次?(2分)
`y--` 执行了多少次? (2分)
`x++` 执行了多少次? (2分)
三、回答问题(共25分)
书中16页的起泡排序如下:
```c
void bubble_sort(int a[],int n){
//将a中整数序列重新排列成自小至大有序的整数序列。
for(i=n-1,change=TRUE;i>=1&&change;--i){
change=FALSE;
for(j=0;ja[j+1]){
a[j] <--> a[j+1];
change = TRUE;
}
}
}//bubble_sort
```
1.(共15分)分析该算法的最佳情况、最坏情况和平均情况下各自的时间复杂度。(给出分析思路与过程)
(1) 最佳情况的时间复杂度分析: (5分)
(2) 最坏情况的时间复杂度分析: (5分)
(3) 平均情况的时间复杂度分析:(5分)
2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。
四、完成如下选择题(每小题3分,共9分)。
1.设f为原操作,则如下算法的时间复杂度是( )
```c
for (i = 1; i*i<= n; i++)
f;
```
A. O(n) B. O(log2n ) C.O(n/2) D. 都不对
2.算法的时间复杂度与( )有关。
A.问题的规模 B.计算机硬件性能
C.编译程序的质量 D.程序设计语言
3.有如下程序段:
```c
for(i=n-1;i>=1;i--)
for(j=1;j<=i;j++)
if(A[j]>A[j+1]) A[j]与A[j+1]对换;
```
其中n为正整数,则算法在最坏情况下的时间复杂度为( )。
A.O(n) B. O(nlog2n) C.O(n3 ) D. O(n2),