C语言程序设计及实验指导练习及习题参考答案(8--10).docVIP

  • 272
  • 0
  • 约4.41万字
  • 约 52页
  • 2021-08-11 发布于山东
  • 举报

C语言程序设计及实验指导练习及习题参考答案(8--10).doc

C语言程序设计及实验指导练习及习题参考答案(8--10) C语言程序设计及实验指导练习及习题参考答案(8--10) PAGE / NUMPAGES C语言程序设计及实验指导练习及习题参考答案(8--10) C 语言程序设计及实验指导练习及习题参照答案(  8—10  章) 8 练习参照答案 1、练习 8-1. 假如有定义: int m, n = 5, *p = m; 与 m = n 等价的语句是 B 。 A. m = *p; B. *p = *n; C. m = n; D. m = **p; 8-2. 设计一个程序计算输入的两个数的和与差,要求自定义一个函数 sum_diff(float op1, float op2, float *psum, float *pdiff) ,此中 op1 和 op2 是输入的两个数, *psum 和*pdiff  是 计算得出的和与差。 解答: #include stdio.h int main (void) { float op1, op2, sum, diff; void sum_diff(float op1, float op2, float *psum, float *pdiff); printf( “ input op1 and op2: “ ); scanf( “ %f%f” , op1, op2); sum_diff(op1, op2, sum, diff); printf( “ %f+%f n” ,op1,op2,sum,op1,op2,diff); return 0; } void sum_diff(float op1, float op2, float *psum, float *pdiff) { *psum = op1 + op2; *pdiff = op1 –op2; } 8-3. 两个同样种类的指针变量能不可以相加?为何? 解答: 不可以。 因为指针变量是一种特别的变量, 指针变量的值寄存的是所指向变量的地点, 两个地 址相加其实不可以保证结果为一个有效的地点值,因此在 C 语言中指针变量相加是非法的。 8-4. 依据表 8.2 所示,这组数据的冒泡排序其实循环到第 6 遍(即 n-2 )时就已经排好序了, 说明有时其实不必定需要 n-1 次循环。 请思虑怎样改良冒泡排序算法并编程实现 (提示: 当 发现一遍循环后没有数据发生互换,说明已经排好序了)。 解答:设置一个标记变量 flag ,进入一轮循环前设置为 0 ,在循环中有发生数据互换就改写 flag 值为 1。当该轮循环结束后检查 flag 值,假如变成 1 说明发生了数据互换,还没有排好 序,假如为 0 说明没有发生互换,已经排好序。 #include stdio.h void bubble (int a[ ], int n); int main(void) { int n, a[8]; int i; printf(Enter n (n=8): ); scanf(%d, n); printf(Enter a[%d] : ,n); for (i=0; in;i++) scanf(%d,a[i]); bubble(a,n); printf(After sorted, a[%d] = , n); for (i=0; in; i++) printf(%3d,a[i]); return 0; } void bubble (int a[ ], int n) /* n 是数组 a 中待排序元素的数目 */ { int i, j, t, flag; for( i = 1; i n; i++ ) { /* 外面循环 */ flag=0; for (j = 0; j n-i; j++ ) /* 内部循环 */ if (a[j] a[j+1]) { /* 比较两个元素的大小  */ t=a[j]; a[j]=a[j+1]; a[j+1]=t; /* flag=1; /* 发生互换, flag  假如前一个元素大,则互换置为1*/  */ } if (flag==0) /* 假如一轮循环没有发生数据互换,排序结束 */ break; } } 8-5. 重做例 8-9 ,要求使用选择排序算法。 解答: #include stdio.h void bubble (int a[ ], int n); int main(void) { int n, a[8]; int i; printf(Enter n (n=8): ); scanf(%d, n); printf(Enter a[%d] : ,n); for (i=0; in;i++) scanf(%d,a[i]); bubble(a,n); prin

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档