|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 基础 >> 正文>> 繁體中文

C语言入门教程-数组

数组

“数组”示例

本节我们将用C写一个小程序随机生成10个数,并对其进行排序。我们将使用一种新的变量结构:数组。

借助数组可以声明并使用一组同类型的数据。比如您现在需要创建五个整数。一种办法是直接进行声明:

int a, b, c, d, e;

这当然可以,但如果您需要一千个整数呢?一种更好的办法是声明一个包含五个整数的数组:

int a[5];

这个数组中的五个整数可以分别使用下标进行访问。C中所有数组的下标都是从零到n-1。所以int a[5];包含了五个元素。例如:

int a[5];
a[0] = 12;
a[1] = 9;
a[2] = 14;
a[3] = 5;
a[4] = 1;

使用下标访问数组带来的一个好处是可以用循环来遍历下标。例如,下面的代码把数组的所有元素初始化为零:

int a[5];
int i;
for (i=0; i<5; i++)
a[i] = 0;

下面的代码将数组元素按顺序初始化,然后打印输出:

#include
int main()
{int a[5];int i;for (i=0; i<5; i++)
a[i] = i;for (i=0; i<5; i++)
printf("a[%d] = %dn", i, a[i]);}

在C中到处都会用到数组。下面的代码是一种使用数组的常见情形。请打开编辑器并录入以下代码:

#include 
#define MAX 10
int a[MAX];
int rand_seed=10;
/* 摘自 K&R
- 返回0-32767之间一个随机数字。*/
int rand()
{rand_seed = rand_seed * 1103515245 +12345;return (unsigned int)(rand_seed / 65536) % 32768;}
int main()
{int i,t,x,y;/* fill array */
for (i=0; i < MAX; i++){a[i]=rand();printf("%dn",a[i]);}

/* 这里很快会加入新内容 */
return 0;}

这段代码引入了几个新概念。#define声明了一个名为MAX的常量并让它等于10。为在代码中醒目起见,常量名习惯上全用大写字母。int a[MAX];这行告诉我们在C中如何声明整型数组。注意,数组声明出现的位置决定了它是整个程序的全局变量。

下面的一行int rand_seed=10也声明了一个全局变量,名为rand_seed。它在每次程序开始时被初始化为10,作为下面随机数生成代码的初始种子。实际中随机数发生器的种子应该以一个随机数作为初值,如系统时间。本例中的rand函数,在每次程序运行时都会给出相同的随机数序列。

int rand()这行代码是一个函数声明:rand函数没有参数且返回一个整数。后面我们会学习更多关于函数的知识。下面的四行是rand函数的实现,我们可以暂时忽略。

主函数没什么特别的。先声明了四个整型变量,接下来的for循环用10个随机数填充数组。注意数组a包含了10个独立的整数。您可以用方括号指明具体元素。例如a[0]代表数组中的第一个整数,a[1]代表第二个,以此类推。用/*开始并用*/结束的行称为注释。编译器完全忽略注释行。您可以把程序说明(自己看或供其他程序员阅读)放在注释中。

现在请用下面的代码替换这里很快会加入新内容那行注释:

/* 将数组用冒泡法排序 */
for (x=0; x < MAX-1; x++)
for (y=0; y < MAX-x-1; y++)
if (a[y] > a[y+1])
{t=a[y];a[y]=a[y+1];a[y+1]=t;}
/* 打印排序后的数组 */
printf("--------------------n");
for (i=0; i < MAX; i++)
printf("%dn",a[i]);

以上代码将随机数排序,并按顺序打印。每次运行程序您都会得到同样的结果。要想改变参加排序的值,在每次运行程序前请改变rand_seed的值。

要真正读懂这段代码的简单办法只有一个,就是“手动”执行一下程序。为简单起见令MAX等于4。准备一张纸并假设您自己就是计算机。在纸上画出数组,然后填入四个随机、无序的数字。现在按照代码中的排序部分一边逐行执行,一边在纸上记录执行过程。您会发现每次执行完内层循环后,较大的那些数被推向数组尾部,而较小的那些数则向数组首部靠拢。

动手一试
在代码前一部分,试将填充数组的for循环缩减为一行代码。请确保结果和原来的程序相同。
将冒泡排序的代码提出来建立它自己的函数。函数头是void bubble_sort()。然后将冒泡排序使用的变量也移入函数变成局部变量。因为数组是全局的,所以不需要传递参数。
改变随机数种子的初始值。 
 

C 常见错误
C不提供边界检查。所以如果您的数组指标越界了,C不会有任何提示。程序会最后崩溃或输出无意义的数据。
即使不传递参数,函数调用也要包含()。例如,C接受x=rand;,但这不能完成函数调用,而是把rand函数的内存地址赋值给了x。必须写成x=rand();才行。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回基础】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     玉容西施散别名:玉容散[4月17日]
     国公酒_散风祛湿,舒筋活络[3月8日]
     气血双补党参、麦冬、黄芪炖[11月29日]
     参桂再造丸_臂丛神经痛[11月29日]
     臂丛神经痛该怎样治疗[11月29日]
     舒筋络酊、百宝丹擦剂、参桂[11月29日]
     臂丛神经痛针灸治疗[11月29日]
     枳椇子_利水渗湿药[11月29日]
     三七、丹参、西洋参_颈椎病[8月17日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     手机恢复出厂设置具体操作方…[3月29日]
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     [书籍]幼学琼林全文
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     黄历干支年号公元皇帝对照年[4月17日]
     广西高考2024~2022年历史类([6月25日]
     花木[4月16日]
     鸟兽[4月16日]
     释道鬼神[4月16日]
     讼狱[4月16日]
     技艺[4月16日]
     制作[4月16日]
     科第[4月16日]
     文事[4月16日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj