




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。 2、掌握与数组有关的算法。二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。#include "stdafx.h"#include<stdio.h>void swap2(int*,int*);void bubble(int a,int n);int main(void) int n,a8; int i; printf("Enter n(n<=8):"); scanf("%d",&n);
2、 printf("Enter a%d:", n); for(i=0;i<n;i+) scanf("%d", &ai); bubble(a,n);printf("After sorted,a%d=", n);for(i=0;i<n;i+) printf("%3d",ai);return 0;void bubble(int a,int n) /*n是数组a中待排序元素的数量*/ int i,j; for(i=1;i<n;i+) /*外部循环-请问这个嵌套循环怎么理解?*/ for(j=0;j&
3、lt;n-i;j+) /*内部循环-请问这个嵌套循环怎么理解?*/ if(aj>aj+1) swap2(&aj,&aj+1); /*交换*/void swap2(int *px,int *py) int t;t=*px;*px=*py;*py=t;单向冒泡排序法:/输入10个整数,按从大到小输出/#include<stdio.h>void main()int i,j,t,a10;printf("请输入10个整数n");for(i=0;i<10;i+)scanf("%d",&ai);for(j=1;j<
4、10;j+) /10个数要来回做(10-1)趟次/for(i=1;i<11-j;i+) /第j趟要做(10-j)次比较/if(ai>ai-1) /每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒/t=ai;ai=ai-1;ai-1=t;printf("按从大到小排序输出结果是:n");for(i=0;i<10;i+)printf("%-3d",ai);printf("n");双向冒泡排序法:/输入10个整数,按从大到小输出/#include<stdio.h>void main()int i
5、,j,t,k,a10;printf("请输入10个整数n");for(i=0;i<10;i+)scanf("%d",&ai);for(j=1;j<10;j+) /10个数要来回做(10-1)趟次/ for(i=1;i<11-j;i+) /第j趟要做(10-j)次比较,双向冒泡法,是先从上至下两两比较一次/ if(ai>ai-1) /每做完一趟,就会将数组中较小的一个数沉淀下来,较大的数不断往上冒/ t=ai;ai=ai-1;ai-1=t; for(k=i-1;k>0;k-) /与单向冒泡不同的是,这是双向冒泡的关键,
6、每一次从顶至下比较完一次后,同时再从下/ if(ak>ak-1) /至上比较一次,也就是说每一趟数组中的元素两两比较了两次,这就是双向冒泡排序了/ t=ak;ak=ak-1;ak-1=t; printf("按从大到小排序输出结果是:n");for(i=0;i<10;i+)printf("%-3d",ai);printf("n"); $(2)输入N个整数,使用改进的冒泡排序,将数据由大到小输出。#include "stdafx.h"#include<stdio.h>void swap2(int
7、*,int*);void bubble(int a,int n);int main(void) int n,a8; int i; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter a%d:", n); for(i=0;i<n;i+) scanf("%d", &ai); bubble(a,n);printf("After sorted,a%d=", n);for(i=0;i<n;i+) printf(&
8、quot;%3d",ai);return 0;void bubble(int a,int n) /*n是数组a中待排序元素的数量*/ int i,j; for(i=1;i<n;i+) /*外部循环-请问这个嵌套循环怎么理解?*/ for(j=0;j<n-i;j+) /*内部循环-请问这个嵌套循环怎么理解?*/ if(aj>aj+1) swap2(&aj,&aj+1); /*交换*/void swap2(int *px,int *py) int t;t=*px;*px=*py;*py=t;2、*输入N-1个整数组成一数列,再输入某数x,先将数列排序,根
9、据x的值插入到有序数列中。#include<stdio.h> main () void Rank(int N,int n); int i,j,k; int n11; printf("请输入10个整数:"); for(i=0;i<10;i+) scanf("%d",&ni); Rank(10,n); /调用函数对输入的数组排序printf("n请输入需要插入的整数:"); scanf("%d",&k); if(k>n9) n10=k; else for(i=0;ni<=k
10、;i+); for(j=9;j>=i;j-) nj+1=nj; /腾出位置,用以插入所输入的数ni=k; printf("n排序后此数列按升序排列为:"); for(i=0;i<=10;i+) printf("%-4d",ni); void Rank(int N,int n) int i,k,iTemp; for(k=1;k<=N-1;k+) for(i=N-1;i>=k;i-) if(ni-1>ni) iTemp=ni; ni=ni-1; ni-1=iTemp; printf("排序后此数列按升序排列为:&quo
11、t;); for(i=0;i<=N-1;i+) printf("%-4d",ni); printf("n"); 3、输入行数n,打印出杨辉三角。#include <stdio.h> int main() int yh101101=,0,1,i,n,m; scanf("%d",&m); /*输入要打印的行数,不能太大。我水平不高。*/ for(i=2;i<=m;i+) yhi1=yhii=1; for(n=2;n<i;n+) yhin=yhi-1n-1+yhi-1n; for(i=1;i<=m
12、;i+) for(n=1;n<=i;n+) printf("%d ",yhin); printf("n"); return 0; #include<stdio.h>#include<math.h>main() int a88,i,j; for(i=0;i<8;i+)for(j=0;j<8;j+) if(j=0) aij=1;else if(i=j) aij=1;else if(i>j&&j>=1)aij=ai-1j+ai-1j-1;else aij=0; for(i=0;i<8;
13、i+) for(j=0;j<=i;j+) printf("%3d",aij); printf("n"); 4、青年歌手参加歌曲大奖赛计分系统(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。#include <stdio.h>#include <stdlib.h>#include <time.h>void bubble_sort(int a,int n) int i,j, itmp; for (i =0; i<n;i+) for(j=i+1 ;j<n;j+) if( ai
14、>= aj) itmp = aj; aj = ai; ai = itmp; int main( int argc, char *argv) int iguide10 = 0; srand(unsigned )time(NULL); for (int i = 0 ; i< 8;i+) int isum = 0; for (int j = 0 ; j< 10; j+) iguidej = rand()%10 +1; bubble_sort(iguide,10); for (int l = 1;l<=8; l+) isum += iguidel; printf("T
15、he avg score the %d singer get is %d n" ,i+1,isum/8); return 0;$(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。#5、输入N个整数,使用选择排序,将数据由大到小输出。#include <stdio.h>/冒泡法(指针)main() int a10; int i,j,temp; int *p=a; printf("input:"); for(i=0;i<10;i+) scanf("%d",p+i);
16、for(i=1;i<10;i+) for(j=0;j<10-i;j+) if(*(p+j)>*(p+j+1) temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp; for(i=0;i<10;i+) printf("%4d",*(p+i); printf("n");补充作业实验题:1. 输入10个数,按小到大排序。#include<stdio.h>main() int i,j,temp,a10,n; for(i=0;i<10;i+) scanf("%d",&
17、;ai); for(i=0;i<=8;i+) for(j=i+1;j<10;j+) if(ai>aj) temp=ai; ai=aj; aj=temp; for(i=0;i<10;i+) printf("%5d",ai);printf("n");scanf("%d",&n); if(n>a9) a10=n; else for(i=0;i<9;i+) if(ai>n) for(j=9;j>=i;j-) aj+1=aj; ai=n; break; printf("11shu
18、n"); for(i=0;i<=10;i+) printf("%4d",ai);2. 求10个数中大于平均值的数的个数#include <stdio.h>void main()float a10,sum,average;int i;sum=0.0;printf("请输入十位数:n");for(i=0;i<10;i+)scanf("%f",&ai);for(i=0;i<10;i+)sum=sum+ai;average=sum/10;sum=0.0;for(i=0;i<10;i+)if(ai>=average)sum=sum+ai;printf(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度婚内忠诚行为规范合同
- 知识产权法律在体育产业的影响与作用
- 节能验收合同范本
- 电子商务的绿色发展与可持续发展
- 物资采购廉洁合同范本
- 知识产权教育在提升全民素质中的重要性
- 设备推广合同范本
- 2025年中国煤炭地质总局招聘(392人)笔试参考题库附带答案详解
- 知识产权侵权行为认定及处罚
- 疾病预防重要性从常见疾病看早期识别之关键
- 神奇的光:如何形成彩虹
- 三、胆石症课件
- 学生作业情况登记表模板(可打印)
- 兔子坡(阅读课上课课件)
- 高中数学《立体几何》教材分析及教学建议
- 八年级英语初中英语阅读理解阅读专项练习试卷附答案
- 固定资产清查盘点明细表
- 人教版八年级数学下册课件【全册】
- 物联网管理平台的设计与实现
- 1例妊娠糖尿病的个案护理
- 光伏发电职业病危害预评价方案方案
评论
0/150
提交评论