函数的学习

函数的引用

在主函数定义二维数组,在有参无返函数中实现杨辉三角
  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张图片

在主函数定义二维数组并输入,在有参有返函数中计算二维数组的第二大值
  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
效果图

函数的学习_第2张图片

在主函数中定义两个字符串并输入,在有参无返函数中实现字符串拷贝
  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   
效果图

函数的学习_第3张图片

在主函数中定义两个字符串并输入,在有参无返函数中实现字符串链接
  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     
效果图

函数的学习_第4张图片

在主函数中定义一个字符串并输入,在有参有返函数中是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
效果图

函数的学习_第5张图片

在主函数定义一维数组并输入,在有参有返函数中计算一维数组的第二小值
  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 }
效果图

函数的学习_第6张图片

函数的递归

递归计算各个位数字的乘积
  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 }     
效果图

函数的学习_第7张图片

思维导图

你可能感兴趣的:(学习,算法,c语言)