不是初始化,因此程序中第5行的赋值方式是C语言所不允许的。 改正程序后的运行结果示例如图7.1.4所示: 四"C:\e-programming\7八Debug\pg7l03ok.exe'回☒ 数组各元素值依次为: 3125711324626927 ress any key to continue 图7.1.4pg7103_ok.cpp的运行结果 二、程序扩展 1.打开c.lc-programming\7八pg7201.cpp,该程序能够将从键盘上输入的10个整数中的所 有正整数之和输出。该源程序内容如下: #include<stdio.h> void main(void) int a,i; int sum=0; printf("请输入10个整数:"); for(i=0,i<10,i++) { scanf("%d"&a): if(a>0)sum+=a; printf("所有正整数的和为%dn",sum; } 要求:修改上面的程序,将10个整数的存储改为用数组实现,并增加统计正整数个数的 功能。修改结果源程序以pg7201a.cpp保存。 训练要点:首先读懂源程序处理该问题的思路:通过循环结构,输入一个数据并立即处 理该数据,然后再输入一个数据又立即处理该数据…如此反复10次完成题目要求。现在要 求改用数组来实现,则可以将数据的输入和处理分离开:先通过一个循环语句完成数据的输 -119-
不是初始化,因此程序中第 5 行的赋值方式是 C 语言所不允许的。 改正程序后的运行结果示例如图 7.1.4 所示: 图 7.1.4 pg7103_ok.cpp 的运行结果 二、程序扩展 1.打开 c:\c-programming\7\pg7201.cpp,该程序能够将从键盘上输入的 10 个整数中的所 有正整数之和输出。该源程序内容如下: #include<stdio.h> void main(void) { int a,i; int sum=0; printf("请输入 10 个整数:"); for(i=0; i<10; i++) { scanf("%d",&a); if(a>0) sum+=a; } printf("所有正整数的和为%d\n ",sum); } 要求:修改上面的程序,将 10 个整数的存储改为用数组实现,并增加统计正整数个数的 功能。修改结果源程序以 pg7201a.cpp 保存。 训练要点:首先读懂源程序处理该问题的思路:通过循环结构,输入一个数据并立即处 理该数据,然后再输入一个数据又立即处理该数据……如此反复 10 次完成题目要求。现在要 求改用数组来实现,则可以将数据的输入和处理分离开:先通过一个循环语句完成数据的输 - 119 -
入,再通过一个循环语句完成对数据的处理。通过对比,体会使用数组的意义。 修改后程序的运行结果如图7.1.5所示。 ex "C:\c-programming\7\Debug\pg7201a.exe" 回 情输入18个整数:54-2111-87-1413-210 正整数共有6个,和为56 Press any key to continue 图7.l.5pg7201a.cpp的运行结果 2.打开c:lc-programming7八pg7202.cpp,该程序能够输出10个实型数据中最小的数以及 它在数组中的下标。该源程序内容如下: #include<stdio.h> void main(void) int i,index; float m,a[10]; printf("请输入l0个实型数据:n")方 for(i=0:i<10;i++) scanf("%f",&ali]); index=0; m=a[0]: for(i=1;i<10;++) if(a[i]<m) { m-ali]; index=i; } printf("最小的数为%5.lf,其下标为%dn",m,index), } 要求:修改程序,使得程序能够将找到的最小的数与将数组中第一个元素交换位置。修 -120-
入,再通过一个循环语句完成对数据的处理。通过对比,体会使用数组的意义。 修改后程序的运行结果如图 7.1.5 所示。 图 7.1.5 pg7201a.cpp 的运行结果 2.打开 c:\c-programming\7\pg7202.cpp,该程序能够输出 10 个实型数据中最小的数以及 它在数组中的下标。该源程序内容如下: #include<stdio.h> void main(void) { int i,index; float m,a[10]; printf("请输入 10 个实型数据:\n"); for(i=0; i<10; i++) scanf("%f",&a[i]); index=0; m=a[0]; for(i=1; i<10; i++) if(a[i]<m) { m=a[i]; index=i; } printf("最小的数为%5.1f,其下标为%d\n ",m,index); } 要求:修改程序,使得程序能够将找到的最小的数与将数组中第一个元素交换位置。修 - 120 -
改后的程序以pg7202a.cpp保存。 训练要点:读懂程序中找到数组中最小元素及其下标的算法思路,然后在源程序找到结 果的代码行后面增加一组交换语句,将第一个元素(a[0])与最小值元素(a[index])的位置交 换即可。 修改后程序的运行结果如图7.1.6所示。 ex "C:\c-programming\7\Debug\pg7202a.exe" 回 请输入16个实型数据: 12.5 6.8 14.7 52.6 31.7 4.6 17.2 8.5 64.1 25.9 交换位置后结果为: 4.66.814.752.631.712.517.28.564.125.9 Press any key to continue 图7.1.6pg7202a.cpp的运行结果 三、程序编写 1.编写程序,输入一个正整数n(5≤n≤20),再输入n个整数,采用冒泡排序法将这n 个整数按照由大到小的顺序输出。编写的源程序以pg7301.cpp保存。 提示:冒泡排序法的思路如下: (1)比较第一个数与第二个数,若逆序,则交换:然后比较第二个数与第三个数:依次 类推,直至第n-1个数和第n个数比较完为止一第一趟冒泡排序,结果最小的数被 安置在最后一个元素位置上: (2)对前n-1个数进行第二趟冒泡排序,结果使次小的数被安置在第n-1个元素位置: (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束。 训练要点:掌握最基本的排序算法程序的编写。 程序运行结果参考示例如图717所示。 a"C:\c-programming\7\Debug\pg7301.exe" 回☒ 请输入正整数的个数:7 请输/?个整数:23435212481938 7个整数由天到小顺序为:12452 433823198 Press any key to continue -121-
改后的程序以 pg7202a.cpp 保存。 训练要点:读懂程序中找到数组中最小元素及其下标的算法思路,然后在源程序找到结 果的代码行后面增加一组交换语句,将第一个元素(a[0])与最小值元素(a[index])的位置交 换即可。 修改后程序的运行结果如图 7.1.6 所示。 图 7.1.6 pg7202a.cpp 的运行结果 三、程序编写 1.编写程序,输入一个正整数 n(5≤n≤20),再输入 n 个整数,采用冒泡排序法将这 n 个整数按照由大到小的顺序输出。编写的源程序以 pg7301.cpp 保存。 提示:冒泡排序法的思路如下: (1)比较第一个数与第二个数,若逆序,则交换;然后比较第二个数与第三个数;依次 类推,直至第 n-1 个数和第 n 个数比较完为止——第一趟冒泡排序,结果最小的数被 安置在最后一个元素位置上; (2)对前 n-1 个数进行第二趟冒泡排序,结果使次小的数被安置在第 n-1 个元素位置; (3)重复上述过程,共经过 n-1 趟冒泡排序后,排序结束。 训练要点:掌握最基本的排序算法程序的编写。 程序运行结果参考示例如图 7.1.7 所示。 - 121 -