1、在主函数定义二维数组,在有参无返函数中实现杨慧三角。
#include<stdio.h>
#include<string.h>
void key(int n,int a[n][10]);
int main(int argc, const char *argv[])
{
int n=0;
printf("please enter n:");
scanf("%d",&n);
int a[n][4];
key(n,a);
return 0;
}
void key(int n,int a[n][10])
{
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d",a[i][j]);
}
putchar(10);
}
}
![](https://img-blog.csdnimg.cn/direct/653210b2c9f8455fb3add3080cf5576e.png)
2.在主函数定义二维数组并输入,在有参有返函数中计算二维数组的第二大值。
eg:数组元素是{12 4 34},{ 5 34 4}
则第二大值是12,返回第二大值。
#include<stdio.h>
#include<string.h>
// 输入二维数组 寻找第二大值 ,有参有返
int second(int a[2][3]);
int main(int argc, const char *argv[])
{
int a[2][3],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
int k=second(a);
printf("k=%d\n",k);
return 0;
}
int second(int a[2][3])
{
int i,j;
int max=a[0][0];
int second = a[0][0];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(max<=a[i][j])
{
max=a[i][j];
}
}
}
i = 0;
j = 0;
if(second == max)
{
second=a[i+1][j+1];
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(second<=a[i][j]&&a[i][j]!=max)
{
second=a[i][j];
}
}
}
return second;
}
![](https://img-blog.csdnimg.cn/direct/895a906f818a45bab116e60d36095e5d.png)
3.在主函数中定义两个字符串并输入,在有参无返函数中实现字符串拷贝。
#include<stdio.h>
#include<string.h>
//输入两个字符串 实现 字符串拷贝 有参无返
void cpy(char a[10],char b[10]);
int main(int argc, const char *argv[])
{
char a[10];
char b[10];
printf("please enter a:");
gets(a);
printf("please enter b:");
gets(b);
cpy(a,b);
return 0;
}
void cpy(char a[10],char b[10])
{
int i=0;
while(b[i]!='\0')
{
a[i]=b[i];
i++;
}
a[i]='\0';
puts(a);
puts(b);
}
![](https://img-blog.csdnimg.cn/direct/d221802fa6104f6eab793ad5e3fa9e46.png)
4.在主函数中定义两个字符串并输入,在有参无返函数中实现字符串链接。
#include<stdio.h>
#include<string.h>
//输入两个字符串 实现 字符串连接 有参无返
void cat(char a[10],char b[10]);
int main(int argc, const char *argv[])
{
char a[10];
char b[10];
printf("please enter a:");
gets(a);
printf("please enter b:");
gets(b);
cat(a,b);
return 0;
}
void cat(char a[10],char b[10])
{
int i=0,j=0;
while(a[i]!='\0')
{
i++;
}
while(b[j]!='\0')
{
a[i+j]=b[j];
j++;
}
a[i+j]='\0';
puts(a);
puts(b);
}
![](https://img-blog.csdnimg.cn/direct/6ab1d76ac03a49c4918178110e720a93.png)
5.在主函数中定义一个字符串并输入,在有参有返函数中是atoi
返回:最终转换的整数。
eg:输入-123sdf3 返回-123
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//输入一个字符串 实现 字符串化为整数 有参有返
int at(char a[10]);
int main(int argc, const char *argv[])
{
char a[10];
printf("please enter a:");
gets(a);
at(a);
int k=at(a);
printf("%d\n",k);
return 0;
}
int at(char a[10])
{
int i=0,k;
while(a[i]==' ')
{
i++;
}
k=i;
if(a[i]=='+'||a[i]=='-')
{
i++;
}
int sum=0;
while(a[i]!='\0')
{
if(a[i]>='0'&&a[i]<='9')
{
sum=sum*10+(a[i]-'0');
}
else break;
i++;
}
if(a[k]=='-')
{
sum=-sum;
}
return sum;
}
![](https://img-blog.csdnimg.cn/direct/87d9c4b5e64d4a2187504b03c8fb57b3.png)
6.在主函数定义二维数组并输入,在有参无返函数中实现二维数组转置。
#include<stdio.h>
#include<string.h>
void temp(int a[2][3]);
int main(int argc, const char *argv[])
{
int a[2][3];
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
putchar(10);
temp(a);
return 0;
}
void temp(int a[2][3])
{
int b[3][2];
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",b[i][j]);
}
putchar(10);
}
}
![](https://img-blog.csdnimg.cn/direct/6f60f3fb8abe4c42b8985a2ceead114a.png)
7.在主函数定义一维数组并输入,在有参有返函数中计算一维数组的第二小值。
eg:输入元素是 12 4 32 5 34 4, 则第二小值是5 返回:第二小值。
#include<stdio.h>
#include<string.h>
int minu(int n,int a[n]);
int main(int argc, const char *argv[])
{
int n,i;
printf("please enter n:");
scanf("%d",&n);
int a[n];
printf("please enter a:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int k=minu(n,a);
printf("k=%d\n",k);
return 0;
}
int minu(int n,int a[n])
{
int i=0;
int min1=a[0];
int min2=a[0];
for(i=0;i<n;i++)
{
if(min1>=a[i])
{
min1=a[i];
}
}
if(min2==min1)
{
min2=a[1];
}
for(i=0;i<n;i++)
{
if(min2>=a[i] && a[i]!=min1)
{
min2=a[i];
}
}
return min2;
}
![](https://img-blog.csdnimg.cn/direct/3825cbcee0fb4be2afc3a4fab5eb5fe6.png)
8.递归计算各个位数字的乘积。
2315--->2*3*1*5-->30
#include<stdio.h>
#include<string.h>
int fan(int n)
{
if(n==0) //
{
return 1;
}
else
{
return n%10*fan(n/10);
}
}
int main(int argc, const char *argv[])
{
int n;
printf("please enter n:");
scanf("%d",&n);
int s=fan(n);
printf("s=%d\n",s);
return 0;
}
![](https://img-blog.csdnimg.cn/direct/36e24278f1f94d83bbebf3ff30d6de97.png)
9.思维导图
![](https://img-blog.csdnimg.cn/direct/6bf9bb2927a74430a0cccfe6fa4b7e11.png)