第6章数组。
一、一维数组。
1)定义:
类型说明数组名[常量]
例: int x [10];
元素的最小下标:0
元素的最大下标:元素个数-1
注意:数组的下标是从0开始的,切记!
另外c语言主函数中不能动态定义数组,例如。
int n=3,a[n];×
2)引用:定义后的数组可分别引用各个元素。
数组名[下标]
下标是整型常量或表达式;
例如:int a[3]=;
a[0]指的就是第一个元素1.
注意:引用的是数组中的元素,而不是整个数组;c编译系统对下标越界的引用不给出错误提示。
3)初始化:
int a[10]=;
定义整型数组a并给a[0]-a[9]赋初值。
int a[10]=;
定义整型数组a并给a[0]-a[5]赋初值,其余元素值为0。(注意加以分别)
以上都是些基本的关于一维数组的基本定义和一些概念,如有不清楚请翻书,要着重注意加粗的字。接下来是一些一维数组的经典例题。
4)例题集:
例1:求一维数组最大值及下标。
#include<>
int main()
int a[10]=;上文提到的初始化。
int i, max, imax;
max=a[0];imax=0;
for (i=0;i<10;i++)
if (a[i]>max) /用户的友好界面。
printf("最大值a[%d]=%d",imax,max);
return 0;}
例2:在一维数组中查找给定数据及下标。
#include<>
int main()
int a[10]=;
int i, key, index=-1;
printf("输入要查找的值: "
scanf("%d",&key);
for (i=0;i<10;i++)
if (key==a[i])
//注意break语句的使用,这里为切断if判定语句。
if (index==-1) printf("找不到");
else printf("找到,下标是: %d",index);
return 0;}
还有一种效率更高的折半查找,具体可以看看之前数组那章的课件)
例3:※冒泡排序。
#include<>for(j=0;j<9;j++)
int mainfor(i=0;i<9-j;i++)
int a[10if(a[i]>a[i+1])
int i,j,tt=a[i+1];a[i+1]=a[i];a[i]=t;}
printf("请输入10个数for(i=0;i<10;i++)
for(i=0;i<10;iprintf("%d ",a[i]);
scanf("%d",&a[ireturn 0;}
此图为简单流程图,可以参照书上p147页所讲加深理解)
此外还有选择排序,具体可以看看ppt)
例4:为数组初始化一组有序数据,在有序数组中插入一个用户输入的元素。
#include<>
int main()
int i,j,t,a[10]=;
printf("请输入你要插入数组的数字");
scanf("%d",&a[9]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;}
二、二维数组。
1)定义:
类型说明数组名[常量][常量]
功能: int a [3] [3]
2)引用:数组名[下标][下标]
例:赋值 a[1][3]=8;(同样注意从a[0][0]开始)
3)初始化:
int a[2][3]=;
以矩阵的形式进行赋值,即a[0][0]=2,a[0][1]=5,……a[1][2]=6
4)例题集:
超经典实例:※杨辉三角。
#include<>
int main()
int a[10][10]=,i,j;//初始化a[10][10]的各个数都为0;
for(i=0;i<10;i++)
a[i][0]=1令每行第一个数都为1;
for(i=1;i<10;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; 这里为杨辉三角运算法则,每一个数。
for(i=0;i<10;i都等于他上一行相邻两数之和。
return 0;}
例2:书上p153 例题6.5 对于一个二维数组,求最大值及其下标。
#include<>
int main()
int i,j,row=0,colum=0,max;
int a[3][4]=,定义并初始化。
max=a[0][0]; 先认定a[0][0]最大。
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
max=a[i][j];
row=i;colum=i;}
printf(“max=%drow=%dcolum=%d”,max,row,colum);
return 0;}
三、字符数组。
1)定义 类型说明数组名[常量]
功能: char a [3]
2)初始化。
char a[6]=;a[5]值为'\0')
3)字符数组的输入及输出。
输入输出格式:%c是输入和输出单个字符。
s是输入和输出字符串(到’\0’结束)
4)字符串处理函数(书p161-p164)
主要注意strlen函数,它是测试字符串长度的函数。例如:
char str[10]= china";printf("%d",strlen(str));
输出结果为5,即返回字符串(字符串常量或字符数组)中“\0”之前的字符个数。
4)例题集。
例1:教材习题第10题,统计一篇英文文章中的大写字母、小写字母、数字、空格、其他字符的个数。
#include<>
int main()
char str[3][80]=,
for(i=0;i<3;i++)
for(j=0;j<80;j++)
if(str[i][j]>=a'&&str[i][j]<=z')n[0]++
else if (str[i][j]>=a'&&str[i][j]<=z' )n[1]++
else if (str[i][j]>=0'&&str[i][j]<=9') n[2]++
else if (str[i][j]==32) n[3]++
else if(str[i][j]==0')n[4]=n[4这里是因为初始化时候出现了未定else n[4义的字符,所以会出现'\0'的值,所。
以要在这里处理掉。
printf("大写字母=%d个小写字母=%d个数字=%d个空格=%d个其他字符=%d个",n[0],n[1],n[2],n[3],n[4]);
return 0;
例2:教材例6.8,输入一行字符,统计其中有多少个单词(以空格作为单词的分隔)。
#include<>
int main()
char string[81];
int i,t=0;
printf("请输入单词(各单词用空格隔开)");
gets(string);
for(i=0;i<81;i++)
if(string[0]==32||string[79]==32)t--;printf("该字符串有%d个单词",t+1);
C语言第2章实验
2009 2010学年第 2 学期。实验报告。实验课程名称 c语言程序设计基础实验 专业班级信息0908 学生姓号 30902268 学生姓名沃凌雁。实验指导老师罗国明。浙江大学城市学院实验报告。实验项目名称实验2 用c语言编写简单程序。实验成绩指导老师 签名日期。一。实验目的和要求。1 使用if语...
C语言答案第2章
第2章。2.1略。2.2合法常量分别是 20 0.5 012 8e4 5.0x6a ok a 012 a b 2.3合法的变量名有 abc123 abc a b c abc int i,j错误,数据类型错误。float a,b 正确。int a,b float a,b 错误,变量重复定义。float...
C语言第05章 数组 作业
c程序设计第05章 数组 作业答题纸。学号 119064257 姓名葛冉浩班级电112 一 选择题 1 5 dcabb 6 8 dcc 二 写出下列程序的输出结果或填空题 11 a k k a 20 13 a m k 12 16 a 0 3 a 1 2 a 2 3 a 3 3 a 4 3 a 5 2...