1.使用指针实现一维数组的传参,写一个冒泡排序的函数void sort_(int *p,int len)
#include <stdio.h>
#include <string.h>
void sort_(int *p,int len)
{
int m;
for(int i = 0;i < len;i++)
{
for(int j= 0;j < len-1;j++)
{
if(*(p+j) > *(p+j+1))
{
m = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = m;
}
}
}
for(int n = 0;n < len;n++)
{
printf("%d\t",*(p+n));
}
}
int main(int argc, const char *argv[])
{
/*使用指针实现一维数组的传参
写一个冒泡排序的函数
void sort_(int *p,int len)
*/
int a = 30;
int arr[a];
printf("请输入数组长度:");
scanf("%d",&a);
for(int i = 0;i < a;i++)
{
printf("请输入第%d个数",i+1);
scanf("%d",&arr[i]);
}
sort_(arr,a);
putchar(10);
return 0;
}
输出结果:
请输入数组长度:8
请输入第1个数11
请输入第2个数15
请输入第3个数14
请输入第4个数12
请输入第5个数19
请输入第6个数18
请输入第7个数16
请输入第8个数17
11 12 14 15 16 17 18 19
2.使用二维数组传参实现杨辉三角void fun(int (*p)[100],int h)
#include <stdio.h>
#include <string.h>
void fun(int (*p)[100],int h)
{
int i,j;
int m=h-1;
bzero(p,h*h);
*(*p+m)=1;
*(*(p+m))=1;
*(*(p+m)+2*m)=1;
for(i=1;i<h;i++)
{
for(j=1;j<2*m;j++)
{
*(*(p+i)+j)=*(*(p+i-1)+(j-1))+*(*(p+i-1)+j+1);
}
}
}
int main(int argc, const char *argv[])
{
/*使用二维数组传参实现杨辉三角
void fun(int (*p)[100],int h)
*/
int arr[100][100];
int (*p)[100]=arr;
int len;
int i,j;
printf("请输入要打印的行数:");
scanf("%d",&len);
fun(p,len);
for(i=0;i<len;i++)
{
for(j=0;j<2*len-1;j++)
{
if(*(*(p+i)+j) == 0)
{
printf("\t");
}
else if(*(*(p+i)+j) != 0)
{
printf("%d\t",*(*(p+i)+j));
}
}
putchar(10);
}
return 0;
}
输出结果:
结果1:
请输入要打印的行数:5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
结果2:
请输入要打印的行数:6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
结果3:
请输入要打印的行数:7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
标签:10,7.31,函数,int,void,个数,len,今日,输入
From: https://blog.csdn.net/qq_62099195/article/details/140831291