二维字符型数组
char a[5][10]
可以存储最大长度为为10的,5个字符串;
按行初始化:a[5][10]={“hello”,“world“,“who”,“are”,“you”}
char s[3][10] = {{"hello"},{"world"},{"english"}};
gets(s[0]); //s[0] 就是第0行 这个一维字符型数组的数组名
scanf();
char s1[10];
gets(s1);
可以逐个字符串存储进行初始化
注:
自己编写字符串函数时,形参要写成指针形式,这样比较符合字符串函数的操作思想,也会显得更加专业一点,也就是说简单的函数要显得更加专业一点。
字符串排序
主要是用strcpy给字符串赋值。
1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 char s[5][10];
7
8 int n;
9 int i = 0;
10 printf("Input 5 string\n");
11 for(i = 0;i<5;i++)
12 {
13 gets(s[i]);
14 }
15 int j;
16 int k = 0;
17 char max[10] ;
18 strcpy(max,s[0]);
19 for(i = 0;i<4;i++)
20 {
21 for(j=i+1;j<5;j++)
22 {
23
24 if(strcmp(s[i],s[j]) > 0)
25 {
26 strcpy(max,s[i]);
27 strcpy(s[i],s[j]);
28
29 strcpy(s[j],max);
30 }
31 }
32 }
33 for(i=0;i<5;i++)
34 printf("s[%d] = %s\n",i,s[i]);
35
36
37 return 0;
38 }
39
.二分查找字符串
主要是用strcmp替换比大小。
这里需要注意while判断条件,和整数一样,代表下标,而不是用数组中字符串长度strcmp比较。
如果字符串没有,则会和整型一样,begin和end会错开,导致end>begin不成立
1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 char s[5][10] = {"a","b","c","d","e"};
7 int begin = 0;
8 int end = 4;
9 int mid;
10 char n[10];
11 gets(n);
12 while(begin<=end)
13 {
14 mid = (begin+end)/2;
15 if(strcmp(s[mid],n)>0)
16 {
17 end = mid -1;
18 }else if(strcmp(s[mid],n)<0)
19 {
20 begin = mid + 1;
21 }else
22 break;
23 }
24 if(begin<=end)
25 {
26 printf("found the string s[%d] = %s\n",mid,s[mid]);
27 }else
28 printf("not found\n");
29
30 return 0;
31 }
函数---function
函数定义:表示把功能实现出来。
函数调用 :表示使用功能。
类型说明符 函数名(形式参数1,形式参数2,形式参数3,……)
{
函数体代码;
}
(1)类型标识符
数据类型 //表示函数要带出的结果的类型。
注意:数组类型不能做函数返回结果的类型。
a.如果函数不需要带出结果,此时返回结果类型为void。
b.如果返回结果的类型与类型说明符不一致,以类型说明符为准,最终结果的类型,都会转为类型说明符所表示的类型。
c.如果没有写返回结果类型,默认为int型。
d.函数体中没有返回值,不需要写return 返回值。
(2)函数名
标识符,命名规则符合标识符命名规则。
(3)形式参数
表示调用函数时需要用到的实际参数,每个形参都有自己对应的数据类型。
(4)函数体代码
实现函数具体功能部分d代码。
函数定义位置:
1.main函数之前.
2.main函数之后,需要在调用函数之前声明.
注意:函数传参是传递的数值 ,值传递。
eg:
1 #include <stdio.h>
2 #include <string.h>
3
4 int add(int num1,int num2) //创建函数
5 {
6 int sum;
7 sum = num1 +num2;
8 return sum;
9 }
10
11 int main()
12 {
13 int ret;
14 ret = add(4,6);//调用函数
15
16 printf("ret = %d",ret);
17 return 0;
18 }
~
练习:
写一个判断输入数字是不是素数的函数,并使用
1 #include <stdio.h>
2 #include <string.h>
3 #include <math.h>
4 int sushu(int num1)
5 {
6 int i,n;
7 for(i=2;i<sqrt(n)+1;i++)
8 {
9 if(num1==1&&num1==2)
10 n = 1;
11 if(num1%i==0)
12 {
13 n = 0;
14 break;
15 }
16 if(i>=sqrt(n))
17 {
18 n = 1;
19 }
20 }
21 return n;
22 }
23
24 int main()
25 {
26 int ret,n;
27 printf("Input a num:\n");
28
29 scanf("%d",&ret);
30
31 n = sushu(ret);
32
33 if(n==0)
34 printf("%d is not sushu\n",ret);
35 else
36 printf("%d is sushu\n",ret);
37
38 return 0;
39 }
附加:void bzero(void *s,size _t n)s为首地址,n表示从首地址开始后n个字节清零。
标签:字符,函数,10,int,ret,二维,数组,字符串,include From: https://blog.csdn.net/2201_75286049/article/details/140842980