C语言教程课件ch07-3习题.ppt_第1页
C语言教程课件ch07-3习题.ppt_第2页
C语言教程课件ch07-3习题.ppt_第3页
C语言教程课件ch07-3习题.ppt_第4页
C语言教程课件ch07-3习题.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例1从10个整数中把最小的数找出来,并与最前面的数对调, 指出最小的数原来的位置。(最小值唯一),1. 用数组a存放10个数据。 int a10; 2. 用j记录最小值的位置。 3. 交换a0与aj的值。,j=0; for(i=1;i=9;i+) if(aiaj) j=i;,12,-14,37,2,76,231,-36,65,-2,-31,j=0,j=1,j=6,j=1,j=1,j=1,j=1,j=6,j=6,j=6,void main( ) int i,j,a10,k; for(i=0;i=9;i+) scanf(“%d“, ,例2已知数组a中有7个互不相等的元素,数组b中有 5 个互不相等的元素,而数组c中包含那些在a中但不在b中的元素,编程产生数组c。,12,-1,3,2,77,31,-6,2,-14,77,-1,76,a,b,c,12,3,-6,31,void main( ) int i,j,k=0,a7,b5,c7; for(i=0;i=5) ck=ai;k+; for(i=0;ik;i+) printf(“%5d“,ci); printf(“n“); ,例3输入n个数到数组中(n最多为100),选出所有大于n个数的平均值的那些数。,1. float x100; 2. 输入n个数据并求这n个数据的累加和。 3. 求n个数据的平均值。 4. 选出所有大于平均值的那些数。,void main( ) float x100,sum=0,ave; int i, n; scanf(“%d“, ,例4 打印以下方阵: 1 2 8 3 10 2 8 3 10 1 8 3 10 1 2 3 10 1 2 8 10 1 2 8 3,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,for( j=1;j5;j+) xj-1=xj;,y=x0;,x4=y;,void main( ) int i,j,y; int x5=1,2,8,3,10; for(i=0;i5;i+) printf(“%5d“,xi); printf(“n“); for(i=1;i=4;i+) y=x0; for( j=1;j5;j+) xj-1=xj; x4=y; for( j=0;j5;j+) printf(“%5d“,x j); printf(“n“); ,例5将n(n=20)个整数按逆序重放在数组中。,算法1: 设n=7,3,45,2,6,17,66,50,y,3,50,3,45,66,45,2,17,2,y=xi; xi=xn-i-1; xn-i-1=y;,#define N 20 void main( ) int xN,y,n,i; for(i=0;iN;i+) scanf(“%d“, ,例6:用random函数产生10个20,60上的整数,按从小到大排序后输出。,随机函数 random的用法: 1. 格式: random(x) 2. 说明: (1) x为整型常量、整型变量或整型表达式。 (2) 该函数包含在头文件“stdlib.h“中。 (3) 该函数产生0, x) 区间上的整数。,产生a,b区间上任意整数的方法: random(b-a+1)+a,0,b-a+1),a,b+1),a,b,25,34,21,49,30,23,41,37,30,28,34,25,34,21,21,25,21,25,49,49,30,30,23,23,41,41,37,37,30,30,28,28,第一次比较:用a0与它后面的a1a9比较,将小的数据 放在a0中。,第一次的比较结果:最小数在a0中。,第二次比较:用a1与它后面的a2a9比较,将小的数 据放在a1中。,28,34,25,25,34,49,49,30,30,23,23,25,41,41,37,37,30,30,28,第二次的比较结果:次最小数在a1中。,49,34,第三次比较:用a2与它后面的a3a9比较,将小的数据 放在a2中。,49,30,30,34,25,25,30,41,41,37,37,30,30,28,28,第三次的比较结果:第3小的数在a2中。,依次类推经过九次比较可使数组a升序。,算法1:顺序排序,#include “stdlib.h“ void main() int i,j,k,a10; for(i=0;iaj) k=ai; ai=aj; aj=k; for(i=0;i=9;i+) printf(“%5d“,ai); printf(“n“); ,29 57 42 30 21 35 27 46 52 39,第一次比较:k=0,比较ak与它后面所有的数aj (j=1,.,9),若ak大于aj,则k=j,k,j,j,j,j,k,j,j,j,j,j,第一次比较结果:k为最小值的下标,交换a0与ak 使a0中存放最小值。,21,29,第二次比较:k=1,比较ak与它后面所有的数aj (j=2,.,9),若ak大于aj,则k=j,k,j,k,j,k,j,k,j,j,k,j,j,j,27,57,第二次比较结果:k为剩余数中最小值的下标,交换 a1与ak, 使a1中存放剩余数 中的最小值。,依次类推经过九次比较可使数组a升序。,算法2:选择排序,#include main() int i,j,k,m,a10; for(i=0;iaj) k=j; m=ai;ai=ak;ak=m; for(i=0;i=9;i+) printf(“%5d“,ai); printf(“n“); ,例7有一个23的矩阵,求出每行最小值及每列的最小值。,for(j=0;j3;j+) cj=a0j; for(i=1;i2;i+) if(aijcj) cj=aij; ,void main( ) int a23,b2,c3,i, j;,for(i=0;i2;i+) for(j=0;j3;j+) scanf(“%d“,12 3 24 -34 56 -72,for(i=0;i2;i+) bi=ai0; for( j=1;j3;j+) if(ai jbi) bi=ai j; ,12,3,3,3,24,24,-34,56,56,-72,-72,-72,12,-34,-34,-34,3,56,3,56,24,-72,-72,-72,for(i=0;i2;i+) for(j=0;j3;j+) printf(“%5d“,aij); printf(“%5dn“,bi); for(i=0;i3;i+) printf(“%5d“,ci); printf(“n“);,1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 2 1 1 1 2 2 2 2 2 1,例8: 打印如下方阵,主对角线,副对角线,主对角线上元素的特点:i=j,副对角线上元素 的特点:i+j=6,ij & i+j6,ij & i+j6,void main( ) int a77,i,j; for(i=0;ij ,例9任输入20个正整数,找出其中素数,并按由 小到大排好序。,main( ) int a20,b20,i,j,k,m; for(i=0;iai-1) bk=ai; k+; ,将数组 a 中的素数找出放到数组b中,for(i=0;ik-1;i+) for(j=i+1;jk;j+) if(bjbi) m=bi; bi=bj; bj=m; for(i=0;ik;i+) printf(“%5d“,bi); printf(“n“); ,用顺序排序法使 b 数组升序,例10将56矩阵每一行按由大到小排序。,void main( ) int a56,i,j,k,m; for(i=0;iaij) m=aik;aik=aij;aij=m; for(i=0;i5;i+) for(j=0;j6;j+) printf(“%5d“,aij); printf(“n“); ,-9,34,-9,34,34,12,-9,2,2,34,12,2,16,16,34,16,39,121,-7,-7,121,39,34,16,12,2,-7,6,6,121,39,34,16,12,6,23,23,121,39,34,23,例11用插入排序法使任意十个数据升序,void main() int i,j,m,k; a10=12,34,-9,6,8,7,44,56,121,0; for(i=1;i=j;k-) ak=ak-1; aj=m; for(i=0;i=9;i+) printf(“%5d“, ai); printf(“n“); ,寻找待插入位置j,将j后的元素后移一个 位置, 插入,例12任输入十个国家的名字,按由小到大排序。,#include void main( ) char a1020,b20; int i,j; for (i=0;i0) strcpy(b,ai); strcpy(ai,aj); strcpy(aj,b); for (i=0;i10;i+) printf(“%sn“,ai); ,例13编一程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论