四川师范大学c语言实验报告(3)

2019-06-11 12:48

二、实验内容(参考实验指导书):

1、从键盘输入一个长度为N(比如10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组中间。比如原来数组为:2 -5 -89 75 0 -89 0 93 48 0,经过处理后的数组为:-5 -89 -89 0 0 0 75 93 48 2。由于不要求数组有序,所以不允许用排序方法。 提示:

1)输入N个数据,构建数组。

2)按照要求确定数据的位置,需要注意循环条件的确定、0数据元素往中间推的实现过程以及数组处理的方向。 (1)算法描述:

for(从第一个数到第十个数) {

for(从第i+个数到第十个数) {

首先判断前一个数是否大于零,再判断后一个数是与零之间的关系,如果不是等于零,则需交换位置。 } }

(2)源代码及说明: #include main() { int N,i,end=0; scanf(\ int a[N]; int b[N]; int j=0; int st =0; int m=N-1; for(i=0;i0) { b[m--]=a[i];

第 11 页 共 11 页

end=m; } } for(i=st;i

(3)测试数据:10

2 -5 -89 75 0 -89 0 93 48 0 (4)运行结果:-5 -89 -89 0 0 0 75 93 48 2 (5)问题及解决方法:

问题:对大于0和小于0的数进行分类,再重新组合。 解决方法:重新定义一个数组,依次放入数据。 2、设数组a的定义如下:

int a[20] = {2,4,6,8,10,12,14,16}; 已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入一个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。请编写一个程序实现上述功能。 提示:

1)定义整型数组并初始化。 2)从键盘输入一个数据。

3)将该数据插入到数组中,由于要保证插入的数组仍然有序,所以需要查找插入的位置。 4)输出插入数据以后的数组。 (1)算法描述:

遍历数组找到插入数在数组中的位置

for( i=0;i<20;i++) { if(a[i]>x) break; } j=i;

重新排列插入数后面的数 for(i=8;i>=j;i--){ a[i+1]=a[i];} a[j]=x;

最后输出插入数据后的数组 (2)源代码及说明: #include main() { int a[20]={2,4,6,8,10,12,14,16}; int n,i,k;

第 12 页 共 12 页

scanf(\ for(i=0;i<8;i++) { if(n=k;i--) { a[i+1]=a[i]; } a[k]=n; for(i=0;i<9;i++) { printf(\ } }

(3)测试数据:3

(4)运行结果:2 3 4 6 8 10 12 14 16 0 0 0 0 0 0 0 0 0 0 0 (5)问题及解决方法:无

3、写一个3 x 5矩阵的转置程序,输出其原矩阵的值和转置以后的结果。 提示:

1)定义一个二维数组及相关变量。

2)对二维数组赋值,可以由键盘输入,也可以通过其他方式赋值。 3)输出转置前的二维数组。 4)对二维数组中的值进行转置。 5)输出转置后的二维数组中的值。 (1)算法描述:

从键盘中输入数组

for(i=0;i<3;i++) for(j=0;j<5;j++) scanf(\ 交换数组对应数值并输出 for(i=0;i<5;i++) for(j=0;j<3;j++) b[i][j]=a[j][i];

printf(\(2)源代码及说明: #include main() { int a[3][5]={1,2,3,4,5,1,2,3,4,5,1,2,3,4,5}; int b[5][3]; int i,j;

第 13 页 共 13 页

for(i=0;i<5;i++) { for(j=0;j<3;j++) { b[i][j]=a[j][i]; printf(\ } printf(\ } }

(3)测试数据:1 2 3 4 5 5 6 7 8 9 1 3 5 7 9 (4)运行结果:1 5 1 2 6 3 3 7 5 4 8 7 5 9 9 (5)问题及解决方法:无

4、编程实现随机产生10个位于区间[100 200]互不相等的整数,并将其按降序排序和输出。 (1)算法描述: 产生随机数

#include #include

#define random(x) (100+rand()1) 存入数组for(i=0;i<=9;i++) { a[i]=random(200); printf(\ }

进行排序(选择) for(i=0;i<=9;i++) { for(j=i+1;j<10;j++) { if(a[i]

(2)源代码及说明:

第 14 页 共 14 页

#include #include #include main() { int x; int a[10]; int i,j,m = 1; int temp; srand((unsigned)time(NULL)); while(1) { for(i=0;i<10;i++) { x =100+ rand() % 101; for(j=0;j

第 15 页 共 15 页


四川师范大学c语言实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学五年级下册语文1-8单元测试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: