精神成就事业,态度决定一切。
附录 习题参考答案
习题1参考答案
1.1.选择题
(1). A. (2). A. (3). A. (4). B.
C. (5). A. (6). A. (7). C. (8). A. (9). B. (10.) A.
1.2.填空题
(1). 数据  关系
(2). 逻辑结构  物理结构
(3). 线性数据结构  树型结构  图结构
(4). 顺序存储  链式存储  索引存储  散列表(Hash)存储
(5). 变量的取值范围  操作的类别
(6). 数据元素间的逻辑关系    数据元素存储方式或者数据元素的物理关系
(7). 关系  网状结构  树结构
(8). 空间复杂度和时间复杂度
(9). 空间    时间
(10). Ο(n)
1.3 名词解释如下:
数据:数据是信息的载体
是计算机程序加工和处理的对象
包括数值数据和非数值数据
数据项:数据项指不可分割的、具有独立意义的最小数据单位
数据项有时也称为字段或域
数据元素:数据元素是数据的基本单位
在计算机程序中通常作为一个整体进行考虑和处理
一个数据元素可由若干个数据项组成
数据逻辑结构:数据的逻辑结构就是指数据元素间的关系
数据存储结构:数据的物理结构表示数据元素的存储方式或者数据元素的物理关系
数据类型:是指变量的取值范围和所能够进行的操作的总和
算法:是对特定问题求解步骤的一种描述
是指令的有限序列
1.4 语句的时间复杂度为:
(1) Ο(n2)
(2) Ο(n2)
(3) Ο(n2)
(4) Ο(n-1)
(5) Ο(n3)
1.5 参考程序:
main()
{
int  X
Y
Z
scanf("%d
%d
%d"
&X
&Y
Z)
if (X>=Y)
if(X>=Z) 
if (Y>=Z)
{ printf("%d
%d
%d"
X
Y
Z);}
else
{ printf("%d
%d
%d"
X
Z
Y);}
else
{ printf("%d
%d
%d"
Z
X
Y);}
        else
if(Z>=X) 
if (Y>=Z)
{ printf("%d
%d
%d"
Y
Z
X);}
else
{ printf("%d
%d
%d"
Z
Y
X);}
else
{ printf("%d
%d
%d"
Y
X
Z);}
}
1.6 参考程序:
main()
int i
n;
float x
a[]
p;
printf("\nn=");scanf("%f"
&n);
printf("\nx=");scanf("%f"
&x);
for(i=0;i<=n;i++)
scanf("%f "
&a[i]); 
p=a[0];
for(i=1;i<=n;i++)
{ p=p+a[i]*x;       
    x=x*x;}
printf("%f"
p)'
}
习题2参考答案
2.1选择题
(1). C.  (2). B.  (3). B.  (4). B. 5. D.  6. B.  7. B.  8. A.  9. A.  10. D.
2.2.填空题
(1). 有限序列
(2). 顺序存储和链式存储
(3). (n)  O(n)
(4).  n-i+1    n-i
(5). 链式
(6). 数据  指针
(7). 前驱  后继
(8). Ο(1)  Ο(n)
(9).  s->next=p->next;    p->next=s ;
(10).  s->next
2.3. 解题思路:将顺序表A中的元素输入数组a
若数组a中元素个数为n
将下标为0
1
2
...
n-1/2的元素依次与下标为n
n-1
...
n-1/2的元素交换
输出数组a的元素
参考程序如下:
main()
int i
n;
float t
a[];
printf("\nn=");scanf("%f"
&n);
for(i=0;i<=n-1;i++)
scanf("%f "
&a[i]); 
for(i=0;i<=(n-1)/2;i++)
{ t=a[i];  a[i] =a[n-1-i];  a[n-1-i]=t;}   
for(i=0;i<=n-1;i++)   
printf("%f"
a[i]);
}
2.4 算法与程序:
main()
int i
n;
float t
a[];
printf("\nn=");scanf("%f"
&n);
for(i=0;i<n;i++)
scanf("%f "
&a[i]); 
for(i=1;i<n;i++)
  if(a[i]>a[0]
{ t=a[i];  a[i] =a[0];  a[0]=t;}     
printf("%f"
a[0]);
for(i=2;i<n;i++)
  if(a[i]>a[1]
{ t=a[i];  a[i] =a[1];  a[1]=t;}     
printf("%f"
a[0]);
}
2.5 算法与程序:
main()
int i
j
k
n;
float x
t
a[];
printf("\nx=");scanf("%f"
&x);
printf("\nn=");scanf("%f"
&n);
for(i=0;i<n;i++)
c语言基本名词概念scanf("%f "
&a[i]);  //  输入线性表中的元素
for (i=0; i<n; i++) {    //  对线性表中的元素递增排序
      k=i;
      for (j=i+1; j<n; j++) if (a[j]<a[k]) k=j;
      if (k<>j) {t=a[i];a[i]=a[k];a[k]=t;}
            }
for(i=0;i<n;i++)      //  在线性表中到合适的位置
  if(a[i]>x)  break;
for(k=n-1;k>=i;i--)      //  移动线性表中元素
然后插入元素x
  a[k+1]=a[k];
  a[i]=x;
for(i=0;i<=n;i++)    //  依次输出线性表中的元素