欢迎光临
我们一直在努力

C语言基础:二维整型数组、二维字符型数组 函数基础

7.字符串数组逆序

注:sizeof(str)代表整个字符串的长度,strlen(len)代表有效字符的长度。

因此求字符串有效长度必须用strlen(len),不能用sizeof(str)/sizeof(str[0])

#include<stdio.h>
#include<string.h>
int main()
{
char str[32]="hello";
int len=strlen(str);
int i=0;
int temp=0;
for(i=0;i<(len/2);++i)
{
temp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=temp;
}
puts(str);
return 0;
}

七、二维整型数组

1.语法

类型说明符  数组名  [行数][列数];

int   a[3][4];    //可保存12个int类型数据

float  a[3][4];    //可保存12个float类型数据

2.二维数组的访问

数组名 [行下标][列下标]

行下标:0—》行数-1

列下标:0—》列数-1

注意:二维数组规定,在二维数组初始化后,行下标可以省略,列下标不能省略

a[m][n]: //代表m个一维数组,其中每个一维数组有n个元素

a[0]: //代表一个一维数组

a[0]=10; //错误写法,不能给一维数组直接赋值

行数计算:

sizeof(a)/sizeof(a[0])  —–>行数

列数计算:

sizeof(a[0])/sizeof(a[0][0])  —–>列数

二维数组的赋值与访问:

#include<stdio.h>
int main()
{
int a[3][4]={0};
int i=0;
int j=0;
int t=0;
for(j=0;j<3;++j)
{
for(i=0;i<4;++i)
{
a[j][i]=t++;
}
}
for(j=0;j<3;++j)
{
for(i=0;i<4;++i)
{
printf("%d ",a[j][i]);
}
printf("\\n");
}
return 0;
}
//运行结果
0 1 2 3
4 5 6 7
8 9 10 11

3.二维数组的初始化

//全部初始化
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

//局部初始化
int a[3][4]={{1,2},{5,6,7},{9}}; //未初始化的数据按0存储
int a[3][4]={1,2,3,4,5};

//全部初始化成0
int a[3][4]={0};

4.二维数组的存储方式

满足单一性,有序性,连续性

八、二维字符型数组

作用:保存多个字符串

1.语法

char  数组名[行数][列数];

char str[3][100]; //占300字节
"hello world"
"how are you"
"xxxxxxxxx"

2.二维字符数组初始化

//初始化成全0
char str[3][100]={0};

char str[3][100]={{"hello"},{"world"},{"how"}};
// 里面的{}可以省略

char str[3][100]={"hello"};

3.二维字符数组输入输出

二维字符数组的输入输出可以当作多个一维字符数组

//输入
for(i=0;i<hang;++i)
{
gets(str[i]);
}

//输出
for(i=0;i<hang;++i)
{
puts(str[i]);
}

二位字符数组比较出最大字符串:

#include<stdio.h>
#include<string.h>
int main()
{
char str[3][100]={"hello","world","hi"};
char max[100]={0};
strcpy(max,str[0]);
int i=0;
int hang=sizeof(str)/sizeof(str[0]);
for(i=1;i<hang;++i)
{
if(strcmp(str[i],max)>0)
{
strcpy(max,str[i]);
}
}
puts(max);
return 0;
}

二维字符数组行逆序:

#include<stdio.h>
#include<string.h>
int main()
{
char str[3][100]={"how","are","you"};
int hang=sizeof(str)/sizeof(str[0]);
int i=0;
char temp[100]={0};
for(i=0;i<hang/2;++i)
{
strcpy(temp,str[i]);
strcpy(str[i],str[hang-1-i]);
strcpy(str[hang-1-i],temp);
}

for(i=0;i<hang;++i)
{
puts(str[i]);
}
return 0;
}

九、函数

优点:

1.降低程序的耦合性(关联度),减少重复代码

2.让程序模块化,增强代码复用性

1.函数的定义

(1)语法:

返回值  函数名(形参表)

{

函数体;

}

返回值:类型说明符    可以是int、char…基本数据类型、构造数据类型、void类型

                也是返回函数最终结果的类型

                void:空类型   函数不需要返回值时使用

函数名:标识符   字母数字下划线构成,不能与系统中的函数名重名

                动宾命名:例:get_max_val();

形参表:函数执行过程中需要用到的条件

                形式:数据类型  形参名,数据类型  形参名

                例:int  a,int  b

2.函数的调用

(1)语法:

函数名(实参表);

实参表:传递给函数的具体的条件

                值1,值2,…

(2)注意:

        1.实参个数与形参个数一致

        2.实参和形参数据类型一致,或者相互兼容

        3.函数不被调用则不被执行,调用n次执行n次

        4.实参名和形参名可以相同

        5.除了void类型,别的类型函数若不return,则会返回一个随机值

(3)主调函数、被调函数

主调函数:调用函数的函数称为主调函数(如main)

被调函数:被调用的函数

赞(0)
未经允许不得转载:171主机测评 » C语言基础:二维整型数组、二维字符型数组 函数基础
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址