- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5次课 数的定义与使用
第5次课 数组的定义与使用
一、 案例
1、几种错误的数组定义方法
(1)问题的提出
关于数组定义,下面的几种方法大都是错误的:
#define M 10
void main()
{
int n=5;
int a[n],b[a+2]; //错,a数组元素个数为变量表达式,b数组为地址表达式
int c[10.0]; //错,c数组元素个数为实型表达式
int d[0],e[-5]; //错,数组元素个数必须大于0
int f[M*2]; //对,数组元素个数允许使用常量表达式,M为常量
……
}
(2)分析
在定义数组时,要注意3点:
(1)表示数组元素个数的下标表达式,不能含有变量。但是可以使用常量(用#define宏定义,在实验21叙述);
(2)表示数组元素个数的下标表达式,必须是整型的,包括强制类型转换的。例如,“int a[(int)10.0];”也是正确的;
(3)表示数组元素个数的下标表达式,元素个数要大于零,不能是零或负数。
2、几种错误的数组输入/输出方法
(1)问题的提出
关于数组的输入/输出,下面的几种方法都是错误的:
#includestdio.h
void main()
{
int a[10],i,n=10;
char b[10];
scanf(“%d”,a); //错,数值型数组(整型、实型和双精度型)不能整体输入
printf(“%d\t”,a) //错,数值型数组(整型、实型和双精度型)不能整体输出
scanf(“%s”,b); //错,字符数组可以整体输入,但是数组名b前不能使用
printf(“%s\n”,b); //正确,字符数组可以整体输出
for(i=0;i=n;i++) //错,数组元素下标超界,不能输如a[10],最大下标为9
scanf(“%d”,a[i]);
printf(“%d”,a[10]); //错,输出时a[10]下标超界,最大下标为9
}
(2)分析
上述错误改正后为:
#includestdio.h
void main()
{
int a[10],i,n=10;
char b[10];
for(i=0;in;i++) //用循环代替scanf(“%d”,a);
scanf(“%d”,a[i]);
for(i=0;in;i++) //用循环代替printf(“%d\t”,a);
printf(“%d\t”,a[i]);
scanf(“%s”,b); //代替scanf(“%s”,b);
printf(“%s\n”,b); //原题正确,字符数组可以整体输出
for(i=0;in;i++) // i=n应改为in,这样下标就不会越界
scanf(“%d”,a[i]);
printf(“%d”,a[9]); // 代替printf(“%d”,a[10]);,最大下标为9
}
11.2.3 数组的基本算法
1.问题的提出
有关数组的基本算法,主要是指:
(1)在具有10个元素的整型数组中,求最大值和最小值;
(2)在具有10个元素的整型数组中,求10个元素的平均值;
(3)在具有10个元素的整型数组中,顺序查找一个指定的数;
(4)对具有10个元素的数组进行冒泡排序;
2.分析
(1)在具有10个元素的整型数组中,求最大值和最小值。
在数组中求最大值、最小值,是C语言的经典问题,所采用的方法称为“打擂台”。所谓“打擂台”,就是先放一个数组元素在“擂台”上(程序中的“擂台”其实就是一个变量),一般放上去的元素是第0个元素。然后其余的数组元素逐个“上擂台”和“擂主”比大小,哪个大(小),哪个就留在擂台上。
此法也称“逐个比较法”。
数组中的数据来源有四种方案,分别是:①初始化,②键盘输入,③计算赋值,④随机数赋值。方案①②③本实验的前面案例均已用过,方案④在实验10中介绍。本案例使用键盘输入。
程序有两种写法,写法一如下:
#includestdio.h
void main()
{
int a[10], i, max, min; //这里有两个擂台max和min,分别比最大数和最小数
for(i=0;i10;i++) //找数之前必须先输入数据
scanf(“%d”,a[i]);
max=min=a[0]; //先将a[0]放到擂台max和min上,假设为最大数和最小数
for(i=1;i10;i++) //i从1开始,就是a[0]的后面元素参与打擂台
{
if(a[i]max)max=a[i]; //攻擂者胜,大数留在台上
if(a[i]min)min=a[i]; //攻擂者胜,小数留在台上
}
printf(“max=%d\n”
您可能关注的文档
- 第13课 事的正确答案不止一个.ppt
- 第13课 挑教皇的权威.ppt
- 第13课 抗救亡运动.ppt
- 第13课 统的隋唐时代1.ppt
- 第13课全面日战争的开始.ppt
- 第13课多一情趣多一点高雅.doc
- 第14次课2时.doc
- 第14章 控与控制过程.ppt
- 第14章呼吸统答案.doc
- 第14章 工防灾和抗灾.ppt
- 县退役军人事务局副局长2025年度民主生活会个人对照检查材料(五个带头).docx
- 在社区2025年度党建工作总结会议上的讲话稿.docx
- 县财政局副局长2025年度民主生活会个人对照检查材料(五个带头).docx
- 在镇人居环境整治工作推进会上的讲话.docx
- 党委副书记在参加所属党委2025年度民主生活会上的点评讲话.docx
- 县统计局副局长2025年度民主生活会个人对照检查材料(五个带头).docx
- 集团领导在参加下级公司2025年度党员领导干部民主生活会上的指导讲话.docx
- 银行党群工作部2025年工作总结及2026年工作计划.docx
- 县工业经济局局长2025年度民主生活会个人对照检查材料(五个带头).docx
- 党课:在追寻信仰之光中淬炼青春成色——与有志加入党组织的同学们谈心.docx
原创力文档


文档评论(0)