C语言程序实验报告数组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与软件科学学院实验报告
学期:2011至2012__ 第_1 学期 2011年10 月 31 日课程名称:程序设计基础教程-C语言专业:2010级5_班实验编号: 07 实验项目:数组指导教师_
姓名:学号:实验成绩:
一、实验目的及要求
(1) 掌握C语言环境下数组的声明、定义和使用方法,包含其初始化、赋值、输入、输出和处理方法;
(2) 掌握字符数组和字符串数组的使用方法;
(3) 了解数组作为函数参数或返回值的传递和使用方法。
二、实验内容
1.数组的基本使用方法实验。包含数组的声明方法、初始化方法、输入、输出方法、元素的引用方法以及数组作为函数参数的使用方法。
(1)一维数组的声明、初始化及引用方法;
(2)二维数组的声明、初始化及引用方法;
(3) 字符数组和字符串数组的初始化及引用方法的差异分析;
(具体实例参见教材实例)
测试函数声明和定义方法时,可以从以下几个方面进行测试:
1) 用已声明和定义的变量作为数组大小的声明;
2) 用已声明的const变量作为数组变量大小的声明;
3) 用宏名表示声明数组变量的大小;
4) 用表达式计算结果作为数组变量的大小;
5) 用宏的运算结果表示声明数组变量的大小。
(4) 分别按行序和列序顺序返回一个二维数组中各个元素的内存空间地
址值,以观察数组元素在计算机内存中的排列规律。
2.一维数组的应用。具体实例如下:
(1) 有一个数组大小为10,内放10个数,请找出其中对大和最小元素来,
并分别将其与数组第1个元素和最后1个元素交换。
3.二维数组应用。具体实例如下:
(1) 输入一个n*n的矩阵。
1) 试求除开对角线上元素之外的元素之和;
2) 求每行中与相应对角线元素不同的元素之和;
4.字符数组应用。具体实例:(8班同学不做)
(1) 有三行文字,请找出其中空格的个数,并统计单词的个数。(注:
单词以一个或多个空格为间隔。如果一个单词刚好在行末结束,则下
一行开头应该有空格,包含句号和逗号后面也应该有空格!)
实验准备:
(1) 编写所选实验题目的程序代码和流程图;
(2) 检查源程序并给出其可能的运行结果说明。
三、实验步骤(该部分不够填写.请填写附页)
1.数组的基本使用方法实验。包含数组的声明方法、初始化方法、输入、输出方法、元素的引用方法以及数组作为函数参数的使用方法。
(1)一维数组的声明、初始化及引用方法;
int main(void)
{
int nArr[10],i;
for(i=0;i<10;i++)
scanf("%d",&nArr[i]);
printf("Array nArr's values are\n");
for(i=0;i<10;i++)
printf("nArr[%d]=%d\n",i,nArr[i]);
getch();
return 0;
}
运行结果见图一。
(2)二维数组的声明、初始化及引用方法;分别按行序和列序顺序返回一个二维数组中各个元素的内存空间地址值,以观察数组元素在计算机内存中的排列规律。
int main(void)
{
int nArr[3][3],i,j;
clrscr();
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d\t",&nArr[i][j]);
printf("Array nArr's values are\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("nArr[%d][%d}=%d,the address\
is%d\n",i,j,nArr[i][j],&nArr[i][j]);
printf("\n");}
getch();
return 0;
}
运行结果见图二
2.一维数组的应用。具体实例如下:
(1) 有一个数组大小为10,内放10个数,请找出其中对大和最小元素来,
并分别将其与数组最大元素和最小元素交换。
int main()
{
int nArr[10],i,min,k,max,j;
clrscr();
for(i=0;i<10;i++)
scanf("%d",&nArr[i]);
min=nArr[0];max=nArr[0];
for(i=0;i<10;i++)
{
if(min>nArr[i])
{min=nArr[i];k=i;}
else
if(max {max=nArr[i];j=i;} } printf("max is nArr[%d]=%d,min is nArr[%d]=%d\n",j,max,k,min); printf("before exchange the order is::\n"); for(i=0;i<10;i++) printf("nArr[%d]=%d\n",i,nArr[i]); nArr[k]=nArr[j];nArr[j]=min;nArr[k]=max; printf("after exchange the order is::\n"); for(i=0;i<10;i++) printf("nArr[%d]=%d\n",i,nArr[i]); getch(); return 0; } 结果见图三 3.二维数组应用。具体实例如下: (1) 输入一个n*n的矩阵。 1) 试求除开对角线上元素之外的元素之和; 2) 求每行中与相应对角线元素不同的元素之和; #define N nArr #define FI for(i=0;i<3;i++) #define FJ for(j=0;j<3;j++) #define FK for(k=0;k<3;k++) int main() { int N[3][3],i,j,k,sum1,S[3]; clrscr(); printf("please input the numbers::\n");