1、上机实训实训五 数组实验五 数组一、实验目的:1.熟悉一维数组和二维数组的输入,输出2.至少掌握一种排序方法3.熟悉字符串的输入的三种方式,并区分每种方式的不同二、实验内容1.一位数组的输入和输出,将12个数字按照每输出3个数字换一行的形式输出(即输出3行4列的形式)#include stdio.hmain() int a12,i; printf(请输入12个数字:); for (i=0;i12;i+) scanf(%d,&ai); printf(n); printf(您刚输入的12个数字为:n);for (i=0;i12;i+) printf(%4d,ai);if(i+1)%3=0) pri
2、ntf(n);2.二位数组的输入和输出。启动Visual C+,输入以下程序#include stdio.hmain() int a34,i,j;for (i=0;i3;i+) / *外循环*/ for (j=0;j4;i+) /*内循环*/ scanf(%d,&aij);for (i=0;i3;i+) for (j=0;j4;i+) printf (%4d,aij); printf (n); 3.求数组中元素的最小值,并把最小值的元素的下标输出,请把程序补充完整#include stdio.hmain()int i,j,min;int a10=34,23,12,5,14,9,48,21,16
3、,27; _1_ for(i=1;iai) _2_ j=i ; /*j用于存放最小元素的小标*/ printf(最小值为:%d n其下标为:%d,min,j );4.计算N*N矩阵主对角线元素和反对角线元素之和,并将和输出。注意,要求先累加主对角线元素的值,然后累加反向对角线元素的值。例如:若N=3有以下矩阵:1 2 3 4 5 67 8 9首先累加1、5、9,然后累加3、5、7,输出结果为30。请把程序补充完整。#include stdio.h#define N 4main()int i,sum;int aN=34,23,12,5,14,9,48,21,16,27,3,10; _1_ for
4、(i=0;iN;i+) sum+=_2_ /*求主对角线的和*/ for(i=0;iN;i+) sum+=aiN-1-_3_; /*求反对角线的和*/printf(sum=%d,sum);5.排序算法一:对数组中的N个元素按照从小到大的顺序进行排序(考试重点)#define N 8#include stdio.hmain() int i,j,k; int aN=23,12,14,9,48,21,16,27; for(i=0;iN-1;i+) /*8个数一共比较7轮就行了*/n=i;for(j=i+1;jaj) /*两个数进行比较,记录最小值下标*/ n=j; /*以下的3条语句是用来实现交换的
5、*/k=ai; ai=an; an=k; for(i=0;iN;i+) /*将排序后的结果依次输出*/ printf(%4d,ai);排序算法二:对数组中的N个元素按照从大到小的顺序进行排序( 考试重点)#define N 8#include stdio.hmain() int i,j,k; int aN=23,12,14,9,48,21,16,27; for(i=0;iN-1;i+) /*只要选择7个位置就可以了*/for(j=i+1;jN;j+) /*每一次都是当前位置和后面的所有元素依次比较*/if(aiaj) /*进行比较*/ /*以下的3条语句是用来实现交换的*/ k=ai; ai=
6、aj; aj=k; for(i=0;iN;i+) /*将排序后的结果依次输出*/ printf(%4d,ai);6.字符串的输入输出(1)启动VC,新建一个文件,输入以下程序代码 (采用循环的方式读取字符串) #include stdio.hmain() char a15; int i; printf(请输入15个字符:); for (i=0;i=14;i+) scanf(%c,&ai); printf(n); printf(您刚输入的15个字符:); for (i=0;i=14;i+) printf(%c,&ai);(2)新建一个程序,输入以下的程序代码(采用%s的方式读取字符串)#incl
7、ude stdio.hmain() char c15; printf(请输入15个字符:); scanf(%s,c); printf(您刚输入的15个字符:); printf(%s,c);注意:%s读取时遇到空格就认为是结束标志!(3)新建一个程序,输入以下的程序代码#include stdio.hmain() char c20;gets(c);puts(c);说明:gets函数用来输入字符串,能够读取空格和回车符。puts函数用来输出的,输出时会自动在字符串末尾加一个换行符。【真题再现】1.求10个学生数学成绩的最高分,最低分,平均分。请把以下程序补充完整。#include stdio.hm
8、ain() int i,max,min,aver; int a10=58,60,82,89,76,54,72,65,55,35; _1_ aver=0; for(i=1;imax) _3_ if(ai=60分为及格),并把及格学生的成绩输出。请把以下程序补充完整。#include stdio.hmain() int i,count; int a10=58,60,82,89,76,54,72,65,55,35; _1_ for(i=0;i=60) _2_ /*统计个数*/ _3_ /*将符合条件的成绩输出*/ 3.从键盘输入15个学生的成绩,按照从高分到低分进行排名,并依次输出,请把程序补充完整
9、#include stdio.hmain() int i,j,k,a15; for(i=0;i15;i+) /*从键盘读取成绩*/ _1_ for(i=0;i14;i+) for(j=i+1;j15;j+) _2_ _此处要填多行_ for(i=0;i15;i+) /*将排序后的成绩依次输出*/ _4.求出数组周边元素的平均值。请把程序补充完整 例如,若a 数组中的值为: 0 1 2 7 9 1 9 7 4 5 2 3 8 3 1 4 5 6 8 2 5 9 1 4 1 输出结果应为:aver=3.375#include#define N 5main() int i,j,k=0; int aN
10、=0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1; double aver=0.0; _此处要填多行_ printf(The averagy is : %lfn ,aver);参考答案: 5.矩阵操作题(1)将矩阵的右上三角元素置0 右上三角 例如:#include#define N 4main() int i,j; int aN=1,2,3,4,5,6,7,8,9,3,6,7,2,4,3,1; for(i=0;iN;i+) for(_1_;_2_;j+) _3_; /*置0*/ for(i=0;iN;i+) for(j=0;jN;j+) p
11、rintf(%4d,aij); printf(n); 参考答案:(1)j=i (2)jN (3) aij=0(2)将矩阵转置#include#define N 4main() int i,j,k; int aN=1,2,3,4,5,6,7,8,9,3,6,7,2,4,3,1; for(i=0;iN;i+) for(j=0;jN;j+) _1_ /*判断*/ _2 _ /*进行转置操作*/ for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); 参考答案:(1) if(ij) (2) k=aij; aij=aji; aji=k;【常用算
12、法练习】1.从键盘输入5个整数,存在数组中,并输出#include main() int a5,i; 2.求数组中的最大值及下标,最小值#include main() int a5,i,max,min; for(i=0;i5;i+) scanf(%d,&ai); _1_ for(i=0;i5;i+) _2_ _3_ printf(最大值=%d,最小值=%d,max,min);3.求数组元素的和,平均值#include main() int a5,i,sum; float aver; for(i=0;i5;i+) scanf(_1_); _2_ for(i=0;i5;i+) _3_ _4_ pr
13、intf(和为=%d,平均值=%f,sum,aver);4.将数组中大于平均值的元素输出#include main() int a5,i,sum; float aver; for(i=0;i5;i+) scanf(_1_); sum=0; for(i=0;i5;i+) _2_ _3_ printf(和为=%d,平均值=%fn,sum,aver); printf(大于平均值的元素为:); for(i=0;i5;i+) _ 5.将1500中能被7整除或11整除,不能同时被7和11整除的数存在数组中,并输出#include main() int a100,i,j=0; for(i=1;i=500;i+) if(i%7=0|i%11=0)&(i%77!=0) /*请在此处填写你的代码*/ for(i=0;ij;i+) /*请在此处填写你的代码*/ 6.将100200之间的所有素数存在数组中,并输出#include main() int a100,i,j,t=0,flag; for(i=100;i=200;i+) /*请在此处填写你的代码*/ for(i=0;it;i+) /*请在此处填写你的代码*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1