C语言复习第6章

发布 2022-01-12 20:52:28 阅读 8677

第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...