函数的引用
在主函数定义二维数组,在有参无返函数中实现杨辉三角
1 #include
2 #include
3 #include
4 void YangHui(int n,int arr[][n]);
5 int main(int argc, const char *argv[])
6 {
7 int n;
8 printf("请输入杨辉三角的行数");
9 scanf("%d",&n);
10 int a[n][n];
11 YangHui(n,a);
12 return 0;
13 }
14 void YangHui(int n,int arr[][n])
15 {
16 for(int i=0;i
效果图
在主函数定义二维数组并输入,在有参有返函数中计算二维数组的第二大值
1 #include
2 #include
3 #include
4 int second_max(int line,int row,int arr[line][row]);
5 int main(int argc, const char *argv[])
6 {
7 //计算与最大值不同的第二大值
8 int line,row;
9 printf("请输入行数");
10 scanf("%d",&line);
11 printf("请输入列数");
12 scanf("%d",&row);
13 int a[line][row];
14 for(int i=0;iarr[i][j])
37 {
38 min=arr[i][j];
39 }
40 if(max
效果图
、
在主函数中定义两个字符串并输入,在有参无返函数中实现字符串拷贝
1 #include
2 #include
3 #include
4 void Strcpy(char a[],char b[]);
5 int main(int argc, const char *argv[])
6 {
7 char a[40]="";
8 char b[20]="";
9 printf("请输入数组a的内容");
10 gets(a);
11 printf("请输入数组b的内容");
12 gets(b);
13 Strcpy(a,b);
14 printf("拷贝后a:\n");
15 puts(a);
16 return 0;
17 }
18 void Strcpy(char a[],char b[])
19 {
20 int i;
21 for( i=0;b[i]!='\0';i++)
22 {
23 a[i]=b[i];
24 }
25 a[i]='\0';
26 }
27
效果图
在主函数中定义两个字符串并输入,在有参无返函数中实现字符串链接
1 #include
2 #include
3 #include
4 void Strcat(char a[],char b[]);
5 int main(int argc, const char *argv[])
6 {
7 //自定义函数实现链接
8 char a[40]="";
9 char b[20]="";
10 printf("请输入数组a的内容");
11 gets(a);
12 printf("请输入数组b的内容");
13 gets(b);
14 Strcat(a,b);
15 printf("链接后a:\n");
16 puts(a);
17 return 0;
18 }
19 void Strcat(char a[],char b[])
20 {
21 int i;
22 for( i=0;a[i]!='\0';i++);
23 for(int j=0;b[j]!='\0';j++)
24 {
25 a[i]=b[j];
26 i++;
27 }
28 a[i]='\0';
29 }
30
效果图
在主函数中定义一个字符串并输入,在有参有返函数中是atoi
1 #include
2 #include
3 #include
4 int Atoi(char a[]);
5 int main(int argc, const char *argv[])
6 {
7 char a[40]="";
8 printf("请输入数组a的内容");
9 gets(a);
10 int num=Atoi(a);
11 printf("%d\n",num);
12 return 0;
13 }
14 int Atoi(char a[])
15 {
16 int i=0;
17 while(a[i]==' ')
18 i++;
19 //记录符号的下表
20 int j=i;
21 //定义一个变量接受数字
22 int sum=0;
23 //判断是否为正负号
24 if(a[i]=='+'||a[i]=='-')
25 {
26 i++;
27 }
28 //循环字符串
29 while(a[i]!='\0')
30 {
31 //判断是否为数字
32 if(a[i]>='0'&&a[i]<='9')
33 {
34 //如果是是数字由公式反推整个数字
35 sum=sum*10+(a[i]-'0');
36 }
37 else
38 {
39 //不是数字就跳出循环
40 break;
41 }
42 i++;
43 }
44 //判断第一个不是空格的下表是否为符号
45 if(a[j]=='-')
46 //是负号就输出负的值
47 sum=-sum;
48 else
49 //其他情况输出正常输出sum
50 sum=sum;
51 return sum;
52 ;
53 }
54
效果图
在主函数定义二维数组并输入,在有参无返函数中实现二维数组转置
1 #include
2 #include
3 #include
4 void Trans(int n,int m,int arr[n][m],int a[m][n]);
5 int main(int argc, const char *argv[])
6 {
7 int n,m;
8 printf("请输入数组的行数:");
9 scanf("%d",&n);
10 printf("请输入数组的列数:");
11 scanf("%d",&m);
12 int arr[n][m];
13 int a[m][n];
14 Trans(n,m,arr,a);
15 return 0;
16 }
17 void Trans(int n,int m,int arr[n][m],int a[m][n])
18 {
19
20 for(int i=0;i
效果图
在主函数定义一维数组并输入,在有参有返函数中计算一维数组的第二小值
1 #include
2 #include
3 #include
4 int second_min(int n,int arr[n]);
5 int main(int argc, const char *argv[])
6 {
7 //自定义函数实现输出与最大值不同的第二大值
8 int n;
9 printf("请输入数组长度");
10 scanf("%d",&n);
11 int a[n];
12 for(int i=0;ia[i])
30 min=a[i];
31 }
32 int second=max;
33 for(int i=0;ia[i]&&a[i]!=min)
36 second=a[i];
37 }
38 return second;
39 }
效果图
函数的递归
递归计算各个位数字的乘积
1 #include
2 #include
3 #include
4 int fun(int n);
5 int main(int argc, const char *argv[])
6 {
7 //函数递归实现数字上各位乘积
8 int n;
9 printf("请输入数字:\n");
10 scanf("%d",&n);
11 int num=fun(n);
12 printf("各位数字的乘积为%d\n",num);
13 return 0;
14 }
15 int fun(int n)
16 {
17 if(n>=0&&n<=9)
18 {
19 return n;
20 }
21 else
22 {
23 return n%10*fun(n/10);
24 }
25 }
效果图
思维导图