新概念c语言教程答案,新概念C语言能力教程练习答案

练习 66.1 输入 10 个整数,计算它们的平均值。找出最小数,再找出与平均值最接近的整数。#include void main(){int a[10], min, pos, i;double ave, mdif, dif;min = 0; ave = 0;for(i=0; i 0 ? ave - a[0] : a[0] - ave;pos = 0;for(i=1; i 0 ? ave - a[i] : a[i] - ave;if(dif void main(){int a[6] = {0}, i;for(i=0; i 5 || a[0] void main(){int n;int a[8], j=0;scanf(“%d“, printf(“%X\n“, n);while(n > 0){a[j] = n % 16;n /= 16;++j;}for(--j; j>=0; --j)if (a[j] > 9)printf(“%c“, 'A'+a[j]-10);elseprintf(“%d“, a[j]);printf(“\n“);}或者直接用 printf 函数输出正整数的十六进制形式:printf(“%x“, n);6.4 找出整型数组中的最大值,把它后面的元素依次前移一位,再把它放在数组的末尾。#include #define N 5void main( ){int num[N], max, i, temp;max = 0;for(i=0; i num[max])max = i;}temp = num[max];for(i=max; ivoid main( ){int a[10]={20,23,37,52,95}, i, j, temp;for(i=0; i=0 --j)a[j + 1] = a[j];a[j + 1] = temp;}printf(“添加元素后的数组为:\n“);for(i=0; i#define N 20void main( ){int i, j, num[N], temp;for(i=0; i0 unsigned num, max, min;max = min = 0;scanf(“%u“, for(i=0; i0 --i)max = max * 10 + bit[i];for(i=0; ivoid main( ){int i, j, a[10], temp;for(i=0; ivoid main( ){int a[35] = {1};int i, k, n, m;for(n=2; n0; --i)printf(“%d + “, a[i]);printf(“%d\n“, a[0]);}}}分析:1. 对数组进行了倒置。循环结构的执行过程如下循环体循环控制a[0]a[1] a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]i j i1 9->8 9 1 2 3 4 5 6 7 8 01 8 1(真) a[1]a[8]互换 1->2 8->7 9 8 2 3 4 5 6 7 1 02 7 1(真) a[2]a[7]互换 2->3 7->6 9 8 7 3 4 5 6 2 1 03 6 1(真) a[3]a[6]互换 3->4 6->5 9 8 7 6 4 5 3 2 1 04 5 1(真) a[4]a[5]互换 4->5 5->4 9 8 7 6 5 4 3 2 1 05 4 0(假) 退出不再执行 不 不循环控制条件改为 i32 1-真 - - - 2->33 1(真) 1 23 0-假 × × × ×假不输出//a[0]:13->42 1-真 3->1 a[1]:2 1->2 2->33 1-真 - - - 3->44 1(真) 1 34 0-假 × × × ×假不输出//a[0]:1a[1]:24->52 1-真 - - - 2->33 1-真 - - - 3->44 1-真 - - - 4->55 1(真) 1 45 0-假 × × × ×假不输出//a[0]:1a[1]:25->62 1-真 5->3 a[1]:2 1->2 2->33 1-真 3->0 a[2]:3 2->3 3->44 1-真 - - - 4->55 1-真 - - - 5->66 1(真) 1 56 0-假 × × × ×真,// a[0]:1,a[1]:2,a[3]:3输出分析略6->77 …… … … …… …… ……6.9 冒泡排序时第一趟操作可用代码描述如下:#include void main( ){int i, num[ ] = {25, 22, 21, 29, 23}, temp;for(i=0; i num[i+1]){temp = num[i];num[i] = num[i+1];num[i+1] = temp;}}请结合代码分析冒泡排序中一趟操作的效果。冒泡排序需要几趟类似操作才能使整个数组有序?请实现冒泡排序算法。答:冒泡排序中一趟操作的效果是找出数组里无序元素中的最大者(或最小者) ,并将其放在适当的位置。具体的分析过程如下:循环体循环控制num[0]num[1] num[2]num[3]num[4]i inum[i+1]){temp=a[i];a[i]=a[j];a[j]=temp;}++i;25 22 21 29 230 1(真) 真 num[0]num[1]互换 0->1 22 25 21 29 231 1(真) 真 num[1]num[2]互换 1->2 22 21 25 29 232 1(真) 假不互换 2->3 22 21 25 29 233 1(真) 真 num[3]num[4]互换 3->4 22 21 25 23 294 0(假) 退出不再执行 不冒泡排序需要比数组元素总数少一趟的类似操作才能使整个数组有序。冒泡排序算法为:#include #define N 5void main( ){int i, j, num[ ] = {25, 22, 21, 29, 23}, temp;for(j=N-1; j>=1; --j)for(i=0; i num[i+1]){temp = num[i];num[i] = num[i+1];num[i+1] = temp;}for(i=0; i#define N 5void main( ){int i, j, num[N] = {25, 22, 21, 29, 23}, min, temp;for(j=0; j pivot);if(i >= j)

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值