实验数组含函数调用.docx

上传人:b****2 文档编号:16960586 上传时间:2023-07-20 格式:DOCX 页数:14 大小:426.95KB
下载 相关 举报
实验数组含函数调用.docx_第1页
第1页 / 共14页
实验数组含函数调用.docx_第2页
第2页 / 共14页
实验数组含函数调用.docx_第3页
第3页 / 共14页
实验数组含函数调用.docx_第4页
第4页 / 共14页
实验数组含函数调用.docx_第5页
第5页 / 共14页
实验数组含函数调用.docx_第6页
第6页 / 共14页
实验数组含函数调用.docx_第7页
第7页 / 共14页
实验数组含函数调用.docx_第8页
第8页 / 共14页
实验数组含函数调用.docx_第9页
第9页 / 共14页
实验数组含函数调用.docx_第10页
第10页 / 共14页
实验数组含函数调用.docx_第11页
第11页 / 共14页
实验数组含函数调用.docx_第12页
第12页 / 共14页
实验数组含函数调用.docx_第13页
第13页 / 共14页
实验数组含函数调用.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验数组含函数调用.docx

《实验数组含函数调用.docx》由会员分享,可在线阅读,更多相关《实验数组含函数调用.docx(14页珍藏版)》请在冰点文库上搜索。

实验数组含函数调用.docx

实验数组含函数调用

试验六数组

一、实验目的

1.了解数组的特点,掌握一维数组的定义、初始化及其使用方法。

2.掌握字符串的输入输出方法,熟悉常用的字符串操作函数。

3.掌握二维数组的定义、初始化及其使用方法。

二、所涉及到的知识点

1.一维数组的定义。

考虑数组定义的格式,数组元素在内存中的存储形式及地址分配,数组名的意义,数组元素的维数(数组元素的个数)等。

2.一维数组的初始化。

数组初始化赋值的形式,考虑初始值多于数组维数,少于数组维数以及数组维数缺省的情况下,初始赋值的意义理解。

3.二维数组的定义。

考虑二维数组定义的格式,尤其是行和列变化,二维数组在内存中如何存储,地址如何分配,二维数组如何转化为一维数组,数组下标如何变化?

4.二维数组的初始化。

二维数组初始化的形式,考虑行下标和列下标在什么情况下可以缺省,缺省时的意义有何不同?

5.字符数组的定义和初始化。

理解字符数组和字符串之间的联系和区别。

尤其是字符串结束标志‘\0’的意义。

分析字符串长度、字符串所占内存空间的大小这两种描述的区别。

6.字符数组的输入输出,字符串的输入输出,并比较二者的异同。

三、实验内容

(一)阅读并调试下列程序,给出程序结果,并指明程序的功能是什么。

1.求最大值问题。

#include"stdio.h"

#defineN10

voidmain()

{

inta[N]={20,9,10,-16,-9,18,96,7,11,33};

inti,max=a[0],m=0;

for(i=1;i

if(max

{

max=_a[i]_______;/*将比较后的数组元素的较大值赋给max变量*/

m=__i________;/*将比较后较大的数组元素下标赋给m变量*/

}

printf("max=%d,为第%d个元素\n",max,m+1);

}

此数列作用就是将数列中的最大项找出

2.数据分类问题。

#include"stdio.h"

#defineN10/*这是宏定义语句,表示后面程序中出现的N均为10*/

voidmain()

{

inta[N],b[N],i,j=0,k=N-1;

printf("请输入数据:

\n");

for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

{

printf("%d",a[i]);

if(a[i]<0)

b[j++]=a[i];/*将负数放在b的前部*/

else

b[k--]=a[i];/*将其他数放在b的后部*/

}

printf("\n");

for(i=0;i

printf("%d",b[i]);

}

程序调试

①调试程序时通常先将N定义为一个小数值,当程序调试成功后再将N定义为常数10,这样可以提高程序的调试效率。

②在设计调试用数据时,应考虑各种数据情况,以便提高程序的可靠性。

程序运行结果:

3.字母统计问题。

输入一个长度小于80的字符串,统计其中字母的个数。

/*字母统计问题程序*/

#include"stdio.h"

voidmain()

{

chars[20];

inti=0,counter=0;

printf("请输入字符串:

\n");

gets(s);

while(s[i]!

='\0')

{

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')

counter++;

i++;

}

printf("Total:

%d\n",counter);

}

程序调试

运行程序,输入一个长度不足20的字符串,察看并分析程序运行结果。

②运行程序,输入一个长度恰好是20的字符串,察看并分析程序运行结果。

③运行程序,输入一个长度超过20的字符串,察看并分析程序运行结果。

④运行程序,输入一个全是字母的字符串,察看并分析程序运行结果。

⑤运行程序,输入一个没有字母的字符串,察看并分析程序运行结果。

⑥运行程序,只输入一个回车符,察看并分析程序运行结果。

⑦运行程序,输入你认为最有特点的一个字符串,察看并分析程序运行结果。

4.奇偶数问题。

设有一维整型数组共有20个元素,且偶数与奇数各占一半,将该数组变换为2×10的二维数组且偶数和奇数各成一行。

/*二维数组问题程序*/

include"stdio.h"

voidmain()

{

inta[20],b[2][10];

inti,j,col1=0,col2=0;

printf("请输入数据:

\n");

for(i=0;i<20;i++)

scanf("%d",&a[i]);

for(i=0;i<20;i++)

{

if(a[i]%2==0)

b[0][col1++]=a[i];/*偶数存储在b[0]数组*/

else

b[1][col2++]=a[i];/*奇数存储在b[1]数组*/

}

for(i=0;i<2;i++)

{

for(j=0;j<10;j++)

printf("%6d",b[i][j]);

printf("\n");

}

}

程序调试

输入一组数据,其中偶数个数与奇数个数相等,察看并分析程序的运行结果。

②输入一组数据,其中偶数个数与奇数个数不相等,看程序能否正常运行,并对运行结果进行分析。

分析:

当连续的奇数输入时,他将把数组的空间挤占,使得其他数组元素无法进入。

③调试完善程序,使得对任何输入数据,程序都能正常运行:

或者给出一个正确的执行结果,或者给出一个恰当的提示信息。

(二)编制下列程序

1.只使用一个一维数组,实现本实验的数据分类问题。

2.分别使用scanf()函数的“%c”格式和“%s”格式输入字符串,实现本实验的字母统计问题。

3.修改奇偶数问题程序,使得一维整型数组的20个元素保存在10×2的二维数组中,且偶数与奇数分别存储在两列上。

4.写一个函数,使给定的一个二维整型数组(3×3)转置,即行列互换。

5.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

四、思考题

1.为什么要引入数组?

引入数组的意义是什么?

要从数组的定义和数组元素的引用去分析。

用数组去完成一个多数据的任务,对多数据的引用处理更方便。

2.如何理解一维数组的维数和二维数组的维数。

维数就是几个变量,一维就是一串数,二维就是一个面的数。

3.字符数组和字符串的联系和区别是什么?

从他们的定义和输入输出来分析。

字符数组是没有结束标志的,而字符串是有长度的。

例如定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。

应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。

还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

.用字符数组存放字符串

例如:

   charstr[10]

表示str是一个字符型数组,可以存放10个字符。

为了表示一个字符串的结束位置,可以用'\0'作标志。

说明一个字符数组时,有不同的初始化方式:

   ①逐个字符对数组元素赋初始值:

   charstr1[10]={'S','t','u','d','e','n','t'};

   ②用串常量初始化

   charstr2[10]={"Student"};

   charstr3[]={"Student"};

或者省略{}:

   charstr3[]="Student";

字符串用scanf(“%s”,~~~~~);

数组用for循环依此输出。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2