文档介绍:该【简单构造数据类型 】是由【54156456】上传分享,文档一共【54】页,该文档可以免费在线阅读,需要了解更多关于【简单构造数据类型 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。前面的章节中我们已经学习了C语言中的一些基本数据类型(整型、字符型、实型),从本章开始我们学习构造类型的数据:数组类型、结构体类型、共同体类型,枚举类型。
第四章 简单构造数据类型
《C语言程序设计》
一维数组
二维数组
字符数组与字符串
数组与指针
字符串与指针
典型例题
1、数组的引入
:编写一个函数,从键盘读如10个数,返回最大数,在主函数中输出最大数。
int max( )
{ int x,n,p;
printf(“input 10 integers:\n”);
scanf(“%d”,&x);
p=x;
for(n=1;n<=9;n++)
{ scanf(“%d”,&x);
if(p<x) p=x; }
return(p);
}
main( )
{
printf(“max=%d\n”,
max( ));
}
《C语言程序设计》
:
int max(int m[],int n)
{ int p,j;
p=m[0];
for(j=1;j<n;j++)
if (p<m[j]) p=m[j];
return(p);
}
main()
{ int x[10],m, n;
printf(“input 10 integers:\n”);
for(n=0;n<10;n++)
scanf(“%d”,&x[n]);
m=max(x,10);
printf(“max=%d\n”,m);
}
数组
《C语言程序设计》
2、所谓的数组是指一个有序数据的集合,其中每个元素由统一的数组名和下标来唯一的表示。
3、定义形式:类型说明符 数组名[常量表达式]
如:int a[5];
表示一个含有5个整型元素的数组,其中a是数组名,元素是a[0],a[1],a[2],a[3],a[4]。
下标
4、注意:
①、数组名由用户定义,定义规则和变量名相同,
②、常量表达式表示数组的元素个数,即数组长度。常量表达式中可以包括常量和符号常量,不能包含变量。
③、数组的下标从0开始。
④、和其他变量一样,数组也必须先定义后使用。
数组长度
数组名又代表数组首地址
判断一下数组表达方式正误?
数组a[10]中包括元素:
①int a(10);
01
scanf(“%d”,&n);
添加正文。
03
int a[n+5];
添加正文。
05
a[0],a[1],…a[9],a[10]
int n;
02
int a[n];
int n=10;
04
《C语言程序设计》
( × )
(×)
(×)
(×)
《C语言程序设计》
一维数组的引用
引用形式:数组名[下标]
数组元素的下标可以是整型常量或整型表达式;
C语言规定只能逐个引用数组元素而不能一次引用整个数组;
对下标的引用不要超过下标的最大值。
int x[10],n;
for(n=0;n<10;n++)
scanf(“%d”,&x[n]);
注意:
例:
6、 一维数组的初始化
(1)概念 : 在定义一维数组时对各元素指定初始值称为
数组的初始化
如: int a[5] = { 1 , 3 , 5 , 7 , 9 } ;
(2)方法:
1)在数组定义的同时对全体数组元素初始化。(可以省略数组长度)
如: int a[]={1,2,3,4,5};
2)可以仅对一部分下标元素赋初值。(不能省略数组长度 )
如: int a[5]={1,2,3},则;
a[0]= a[1]= a[2]= a[3]= a[4]=
3)如果不对某些下标元素赋初值,则对数值型元素均为0,对字符型元素均为空操作符’\0’.
1
2
0
0
3
《C语言程序设计》
《C语言程序设计》
如: int a[]={1,2,3,4,5};
4)如果想对所有的元素全部赋初值,可以省略定义元素个数。
int a[10]={0,0,0,0,0,0,0,0,0,0};
或 int a[10]={0};
5)如果使数组所有元素值为0,可以:
: 用冒泡排序法对6个数进行排序(从小到大)
9
7
2
5
4
1
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
7
2
5
4
1
9
2
7
7
5
4
7
1
2
5
4
1
7
9
4
5
1
5
2
4
1
5
7
9
2
1
4
5
7
9
1
4
1
2
冒泡排序方法: 依次比较相邻的两个数,将小数放前面,
大数放后面. n个数排序需要进行n-1轮比较, 从第1轮到
第n-1轮, 各轮的比较次数依次为:n-1次、n-2次 … 1次
9
7
2
5
4
1
9
9
9
9
9
7
2
5
4
1
初始状态
第1轮
第2轮
第3轮
第4轮
第5轮
7
7、一维数组举例
#include <>
void main( )
{ int a[6] , i , j , t;
for ( i=0 ; i<6 ; i++)
scanf(“%d”, &a[i] );
for ( i=0 ; i<5 ; i++)
for ( j=0 ; j<5-i ; j++)
if ( a[j]>a[j+1] )
{ t=a[j] ;
a[j]=a[j+1] ;
a[j+1]=t ;
}
for ( i=0 ; i<6 ; i++)
printf( “%3d”, a[i] );
}
输入6个数据
用嵌套的for循环实现排序
外层循环控制进行6-1轮比较
内层循环控制第i轮进行6-i次比较
若前面的数大于后面的数,则进行交换
输出排序后的6个数据
《C语言程序设计》