实验四 一维与二维数组实验

一、 实验目的和要求
(1)掌握一维数组的定义与初始化,会正确访问数组元素,并利用循环对元素成批访问。
(2)掌握二维数组的定义与初始化,会利用双层循环对元素访问,实现一些基本算法。
(3)会用一维数组作为参数实现特定功能的函数,能正确实现一维数组中的一些经典算法。

二、实验环境(实验设备)
硬件: 微型计算机
软件: Windows 操作系统、Microsoft Visual Studio 2010
实验题目(1)【见实验教材实验五的题目1】:编写程序exp5_1.c,在主函数中定义一维数组int array[10],自定义以下函数:输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在(若存在,请输出下标)、给数组元素排序,要求在主函数中对各子函数进行调用和测试。
实验解答:
① 写出完整的源程序代码并做适当注释:

#include<stdio.h>
#define N 10
void input(int array[],int n);
void print(int array[],int n);
double avenum(int array[],int n);
int maxnum(int array[],int n);
int minnum(int array[],int n);
int find(int array[],int n,int x);
void bubblesort(int array[],int n);
int main()
{int array[N],x,n,pos,max,min;double ave;do             //输入数组长度{  printf("liease input n(1<=n<=10):\n");scanf("%d",&n);}while(n<1||n>N);input(array,n);print(array,n);ave=avenum(array,n);printf("The avenum is %f\n",ave);max=maxnum(array,n);printf("The maxnum is %d\n",max);min=minnum(array,n);printf("The minnum is %d\n",min);printf("please input x be searched:");scanf("%d",&x);pos=find(array,n,x);if(pos<n)printf("value=%d,index=%d\n",x,pos);elseprintf("Not present!\n");printf("After renew the order,");bubblesort(array,n);print(array,n);printf("\n");return 0;
}
void input(int array[],int n)  //输入数组元素
{int i;printf("please input 10 numbers:");for(i=0;i<n;i++)scanf("%5d",&array[i]);printf("\n");
}
void print(int array[],int n)  //输出数组元素
{int i;printf("The elements are:");for(i=0;i<n;i++)printf("%5d",array[i]);printf("\n");
}
double avenum(int array[],int n)  //求平均值
{int sum=0,i;for(i=0;i<n;i++)sum+=array[i];return sum*1.0/n;
}
int maxnum(int array[],int n)  //求最大值
{int i,max;max=array[0];for(i=1;i<n;i++)if(array[i]>max)max=array[i];return max;
}
int minnum(int array[],int n)  //求最小值
{int i,min;min=array[0];for(i=1;i<n;i++)if(array[i]<min)min=array[i];return min;
}
int find(int array[],int n,int x)   //查找某元素
{int i=0;while(i<n){if(x==array[i])break;i++;}return i;
}
void bubblesort(int array[],int n)  //给数组元素排序
{int i,j,temp;for(i=0;i<n-1;i++)for(j=n-1;j>i;j--)if(array[j]<array[j-1]){temp=array[j-1];array[j-1]=array[j];array[j]=temp;}
}

实验题目(2)【见实验教材实验五的题目2】:编写程序exp5_2.c,定义一个3*3的矩阵,要求实现读入矩阵、输出矩阵、矩阵转置、输出矩阵主对角线元素之和,所有功能均采用子函数实现。

实验解答:
①源程序exp5_2.c的源代码如下:

#include<stdio.h>
#define ROW 3
#define COL 3
void input(int array[][COL],int n);
void print(int array[][COL],int n);
void zz(int array[][COL],int array2[][ROW],int n);
int getsum(int array[][COL],int n,int diag[3]);
int main(){int array[ROW][COL];int array2[COL][ROW];int diag[3];int sum;input(array,3);print(array,3);zz(array,array2,3);sum=getsum(array,3,diag);printf("对角线元素之和为:%d\n",sum);return 0;
}
void input(int array[][COL],int n)
{int i,j;printf("please input 9 intergers:");for(i=0;i<ROW;i++){for(j=0;j<COL;j++)scanf("%4d",&array[i][j]);}
}
void print(int array[][COL],int n)
{int i,j;printf("before transpose:\n");for(i=0;i<ROW;i++){for(j=0;j<COL;j++)printf("%4d",array[i][j]);printf("\n");}
}
void zz(int array[][COL],int array2[][ROW],int n)
{int i,j;for(i=0;i<COL;i++)for(j=0;j<ROW;j++)array2[i][j]=array[j][i];printf("After transpose:\n");for(i=0;i<COL;i++){for(j=0;j<ROW;j++)printf("%4d",array2[i][j]);printf("\n");}
}
int getsum(int array[][COL],int n,int diag[3])
{int i,sum=0;for(i=0;i<3;i++){diag[i]=array[i][i];sum+=diag[i];}return sum;
}

②输入的数据及运行结果是:

please input 9 intergers:1
2
3
4
5
6
7
8
9
before transpose:
1 2 3
4 5 6
7 8 9
After transpose:
1 4 7
2 5 8
3 6 9
对角线元素之和为:15

实验题目(3)【见实验教材实验五的题目6】:编写程序exp5_6.c,请判断花瓶是谁打碎的。教师花瓶碎了,班级只有四个小同学,老师询问小同学,已知是其中1人打碎的,还知道4人中每个人要么是诚实的,要么总是说谎的。
小同学回答老师的问题是:
甲说:“乙没有打碎,是丁打碎的。”
乙说:“我没有打碎,是丙打碎的。”
丙说:“甲没有打碎,是乙打碎的。”
丁说:“我没有打碎。”
根据四人回答判断谁打碎了花瓶。
实验解答:
①源程序exp5_6.c的源代码如下:

#include<stdio.h>
int main()
{int array[4]={0},i,j;for(i=0;i<4;i++){array[i]=1;if(array[3]+array[1]==1&&array[2]+array[1]==1&&array[0]+array[1]==1){printf("打碎花瓶的是:");for(j=0;j<=3;j++){if(array[j])printf("%d\n",j);}}array[i]=0;}printf("(0,1,2,3分别代表 甲,乙,丙,丁)\n");return 0;
}

②运行结果是:
打碎花瓶的是:1
(0,1,2,3分别代表 甲,乙,丙,丁)

四、实验小结(包括问题和解决方法、心得体会、意见与建议、实验出错信息及解决方案等)
(一)实验中遇到的主要问题及解决方法

1:输入数组元素时,一开始不知道输一个数后要回车,不能输逗号,后来经过debug,发现了问题,并解决了问题。
2:一开始忘记了数组调用,定义时的格式,导致代码错误,后来一一复习纠正。
3:编写代码时,输出要更人性化,这需要一遍遍的修改。
4:写趣味算法题时,要先构造数学模型,思路清晰后再编写代码。
5:注意数组要初始化。

(二)实验心得

写代码时,切忌心浮气躁,要沉下心来掌握基本。
遇到问题时,要主动使用debug来找出问题所在。
学习C语言,要多实践。

(三)意见与建议(没有可省略)

五、支撑毕业要求指标点
1.2-H掌握计算机软硬件相关工程基础知识,能将其用于分析计算机及应用领域的相关工程问题。
3.1-M掌握设计/开发复杂工程问题解决方案所需要的专业知识和开发工具。

南京邮电大学C语言实验报告4v2(仅供参考)相关推荐

  1. 南京邮电大学c语言实验报告5,南京邮电大学C语言大一上期末复习.pdf

    南京邮电大学C语言大一上期末复习.pdf 高级语言程序设计期末总复习高级语言程序设计期末总复习 课程的全部内容可分为五大模块课程的全部内容可分为五大模块 1 1基础知识基础知识 2 2三种基本结构及流 ...

  2. 南京邮电大学c语言实验报告3v2,南京邮电大学操作系统实验报告

    <南京邮电大学操作系统实验报告>由会员分享,可在线阅读,更多相关<南京邮电大学操作系统实验报告(20页珍藏版)>请在人人文库网上搜索. 1.通信与信息工程学院2015 / 20 ...

  3. 南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

    <南京邮电大学算法设计实验报告--动态规划法>由会员分享,可在线阅读,更多相关<南京邮电大学算法设计实验报告--动态规划法(12页珍藏版)>请在人人文库网上搜索. 1.实 验 ...

  4. 南京邮电大学C语言实验报告一

    实验一:顺序结构编程练习 实验题目(1)[见实验教材实验一的题目1]:正确进入VS2010集成开发环境,建立一个单文件项目,项目名为:exp1_1,然后向该项目中以新建方式添加一个源文件,名为:exp ...

  5. 南京邮电大学C语言实验报告6v2(仅供参考)

    实验六 结构体与文件实验 一. 实验目的和要求 (1)掌握结构体类型以及结构体变量的定义与使用. (2)综合运用结构体.数组.指针等知识,解决相关问题. (3)会正确定义FILE*指针,掌握文件操作从 ...

  6. 南京邮电大学C语言实验报告六

    实验六:结构体与文件实验 实验题目(1)[见实验教材实验八的题目3]:编写程序exp8_3.c,验证用户输入的日期格式是否正确,如果不正确,则提示重新输入,直到重新输入正确为止.(提示:需要定义一个表 ...

  7. 南京邮电大学C语言实验报告三

    实验三: 函数实验 实验题目(1)[见实验教材实验四的题目2]:编程序exp4_2.c,巧用函数调用,打印不同行数和字符构成的等腰三角形.具体要求:定义一个函数原型void DrawTriangle ...

  8. 南京邮电大学C语言实验报告五

    实验五:指针与字符串实验 实验题目(1)[见实验教材实验六的题目2]:编程exp6_2.c,现有整型变量x,y,调用交换函数以期实现两个值的交换.下表中4种不同的定义及调用分别进行测试并填写表格. 表 ...

  9. 南京邮电大学C语言实验报告3v2(仅供参考)

    实验三 函数实验 一. 实验目的和要求 (1)掌握正确的函数定义与调用,需要时会正确使用函数声明.会正确设置形式参数,理解参数传递及程序的执行流程. (2)理解各种不同存储类别变量的生命期与作用域 ( ...

最新文章

  1. mvc3 之三 符号列表
  2. 通用数据库管理工具DBeaver
  3. stm32中如何进行printf重定向用于串口调试输出
  4. Linux I2C子系统分析之(一) ----- 用GPIO模拟I2C总线
  5. 【合唱】男女差八度的科学解释
  6. 转载:工程师笔记|STM32F030在低温下无法启动
  7. java自定义字段_自定义字段的设计与实现(Java实用版)
  8. ProgressBar 类
  9. Java生鲜电商平台-高并发核心技术订单与库存实战
  10. mysql-nt.exe w3wp.exe cpu 100%_w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法
  11. edp和edt哪个好_香水edp和edt是什么意思
  12. 真正理解 git fetch, git pull 以及 FETCH_HEAD
  13. 笔记----Linux中pt_regs结构体
  14. 微博粉丝精灵_腾讯与精灵宝可梦公司宣布合作开发新游戏
  15. Excel 使用技巧之 -- 统计、过滤与引用数据
  16. 职工工作量c语言调试分析,c语言职工工作量统计
  17. 给定一个区间寻找三角形_计算给定图片中的三角形数量–程序化解决方案
  18. TcpSocket的Qt串口实现与QtSocket接收数据不完整处理方法
  19. Eclipse ADT 进行android应用签名打包详解
  20. 服务器开机自检提示信息,hp服务器开机自检报错提示

热门文章

  1. 面向对象编程:多态性(C++)
  2. 软件工程知识点整理(复习用)
  3. c语言stm32串口控制单片机,基于STM32F103C8T6单片机电脑串口通讯控灯设计(原理图+程序+论文)...
  4. 今日国际黄金走势图是调整还是反转呢?
  5. CVPR2017oral注意力模型RA-CNN简析(转)
  6. IDEA最全实用插件与使用(VIP典藏版)
  7. 两台不同服务器上的mysql跨库查询(FEDERATED)
  8. 递归函数c语言中的定义,C语言函数定义、调用-递归函数.doc
  9. 如何使用命令提示符检查电脑内存规格
  10. GIT合并特定commit