二维字符数组
1、定义和声明
例如,如果要声明一个3行4列的二维字符数组
char matrix[3][4];
2、初始化
char s[3][10] = {{"hello"},{"world"},{"english"}};
char s[3][10] = {"hello","world","english"};
3.输入输出
gets(s[0]); //s[0] 就是第1行 这个一维字符型数组的数组名 ,读入第一行字符串
3行表示能存放3个字符串,get(s[0])表示输入字符串放到第一行;
puts函数同理,也要得到要输出行的首地址
puts(s[0]);//输出第一行
puts(s[1]);//输出第二行
输出时也可以用%s打印,它的功能也是打印字符串,直到碰到'\0'为止
4.练习
从键盘输入5个字符串,排序,并使用二分法查找一个字符串;
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[5][100];
char p[100];
int i = 0;
int j = 0;
for(i = 0;i < 5;++i)
{
gets(s[i]);
}
for(i = 1;i < 5;++i)
{
for(j = 0;j < 5-i;++j)
{
if(strcmp(s[j],s[j+1])>0)
{
strcpy(p,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],p);
}
}
}
printf("输入要查找的字符串:");
char ss[100];
gets(ss);
int begin = 0;
int end = 4;
int mid;
while(begin <= end)
{
mid = (begin + end)/2;
if(strcmp(s[mid],ss)>0)
{
end = mid -1;
}else if(strcmp(s[mid],ss)<0)
{
begin = mid + 1;
}else
{
break;
}
}
if(begin <= end)
{
printf("找到了\n");
}else
{
printf("没找到\n");
}
return 0;
}
函数
1.函数的思想
从上到下,逐步求解的过程 (拆);
function //功能 --- 函数
2.函数的定义
类型标识符 函数名 (形式参数)
{
函数体代码
}
(1)类型标识符
数据类型 //表示函数要带出的结果的 类型
注意:
数组类型 不能做 函数返回结果的类型
返回结果的类型。
注意:
a.如果函数不需要带出什么结果,此时返回结果的类型说明符 一般设计为void
如果类型为void,一般不写return
如果要写,return ;
b.如果 返回结果的类型 与 类型说明符不一致,
以 类似说明符 为准。
最终结果的类型,都会转为类型说明符表示的类型
c.类型说明符,如果不写,默认是 int 类型
(2)函数名
标识符 ,命名规则符合 标识符命名规则
(3)形式参数
表示,该函数需要用到的数据
//表明,将来使用时,需要用到的实际参数,该怎么写
注意:
a.形参变量,必须都明确指定类型
不能写成
int a,b
b.实参 和 形参对应关系
类型匹配
个数相同
顺序一一对应的
c.函数传参 --- 传递的是 实际参数的 数值
//值传递
d.如果不需要接收实际参数,形参一般设计为void //表示空类型
(4)函数体代码
这是 实现函数具体功能的那部分代码
3.函数定义的位置
1.main函数之前
2.main函数之后
main之后,需要在使用(函数调用)前,作函数声明
函数头+分号 就是函数声明
4.定义一个函数的思路:
例如:实现两个数求和
1.先确定函数名
add
//输入数据 ---处理数据 ---输出
2.考虑函数需要用到哪些数据 ---- 形参
处理两个整数
形参的写法:
数据类型 形参变量名1,数据类型 形参变量名2 ...
int num1,int num2
3.处理数据---- 函数体的具体实现
求和
sum = num1 + num2;
4.考虑需不要带出结果 --- (返回值对应)类型说明符
return 语句:
return (表达式);
//return 表示从函数中返回,意味着函数执行结束
即:return sum;
实际代码
#include<stdio.h>
int add(int num1,int num2)
{
int sum;
sum = num1 + num2;
return sum;
}
int main(void)
{
int a,b;
scanf("%d%d",&a,&b);
int ret;
ret = add(a,b);
printf("ret = %d\n",ret);
return 0;
}