1.计算二维数组中每一行的和
#include <stdio.h>
//计算二维数组中每一行的和.
void he(int (*p)[3],int line,int row)
{
int i=0;
int j=0;
int num;
for(i=0;i<line;i++)
{
num=0;
for(j=0;j<row;j++)
{
num+=p[i][j];
}
printf("第%d行的和是%d\n",i+1,num);
}
}
int main(int argc, const char *argv[])
{
int arr[2][3]={3,5,3,7,8,3};
int line;
int row;
line=sizeof(arr)/sizeof(arr[0]);
row=sizeof(arr[0])/sizeof(arr[0][0]);
he(arr,line,row);
// printf("%d\t%d\t",line,row);
return 0;
}
2.使用指针求二维数组每一列的和
#include <stdio.h>
//使用指针求二维数组每一列的和
void kkk(int (*p)[3],int line,int row)
{
int i=0;
int j=0;
int num=0;
for(j=0;j<row;j++)
{
for(i=0;i<line;i++)
{
num+=*(*(p+i)+j);
}
printf("%d\n",num);
num=0;
}
}
int main(int argc, const char *argv[])
{
int arr[2][3]={1,5,3,5,3,6};
int line=sizeof(arr)/sizeof(arr[0]);
int row=sizeof(arr[0])/sizeof(arr[0][0]);
kkk(arr,line,row);
return 0;
}
3.求二维数组中最大的数
#include <stdio.h>
int Max(int (*p)[4],int lene,int row)
{ int i;
int j;
int max=p[0][0];
for(i=0;i<lene;i++)
{
for(j=0;j<row;j++)
{
if(j==0&&i==0)
{
max=p[i][j];
}
if(max<p[i][j])
{
max=p[i][j];
}
}
}
return max;
}
int main(int argc, const char *argv[])
{
int arr[3][4]={1,7,5,4,3,8,6,4,3,7,3,9};
int max = Max(arr,3,4);
printf("%d\n",max);
return 0;
}
3.使用命令行实现简单计算器
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = *argv[1]-48;
char b = *argv[2];
int c = *argv[3]-48;
if (b=='+')
{
printf("%d + %d = %d\n",a,c,a+c);
}
else if(b=='-')
{
printf("%d - %d = %d\n",a,c,a-c);
}
else if(b=='*')
{
printf("%d * %d = %d\n",a,c,a*c);
}
else if(b=='/')
{
printf("%d / %d = %d\n",a,c,a/c);
}
return 0;
}
4.使用二维指针让两行三列的数转换成三行两列的数组
#include <stdio.h>
void Transp(int (*p)[3],int (*q)[2],int line,int row)
{
int i=0;
int j=0;
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
*(*(q+j)+i)=*(*(p+i)+j);
}
}
for(i=0;i<row;i++)
{
for(j=0;j<line;j++)
{
printf("%d\t",*(*(q+i)+j));
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
#if 0
char *p[3]={"asdasda","adasd","asdasda"};
int i=0;
for(i=0;i<3;i++)
{
printf("%c\n",p[i]);
}
#endif
int arr[2][3]={1,5,6,4,3,2};
int arr1[3][2];
int line=sizeof(arr)/sizeof(arr[0]);
int row=sizeof(arr[0])/sizeof(arr[0][0]);
Transp(arr,arr1,line,row);
// printf("")
return 0;
}
5.用二维数组配合指针做出杨归三角
#include <stdio.h>
//用二维数组配合指针做出杨归三角;
void yanggui(int (*p)[10],int line,int row)
{
int i,j;
for(i=0;i<line;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||j==i)
{
*(*(p+i)+j)=1;
}
else
{
*(*(p+i)+j)=*(*(p+i-1)+j)+*(*(p+i-1)+j-1);
}
printf("%d\t",*(*(p+i)+j));
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
int arr[10][10];
int line,row;
line=sizeof(arr)/sizeof(arr[0]);
row=sizeof(arr[0])/sizeof(arr[0][0]);
yanggui(arr,line,row);
// printf("%d%d",line,row);
return 0;
}
6.使用指针计算每行最大值,每列最小值
#include <stdio.h>
//使用指针计算每行最大值,每列最小值
#if 0
void Max(int (*p)[3],int line,int row)
{
int i=0;
int j=0;
int Max=0;
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
if(j==0)
{
Max=*(*(p+i)+j);
}
if(Max<*(*(p+i)+j))
{
Max =*(*(p+i)+j);
}
}
printf("数组第%d行最大的值为%d\n",i,Max);
Max=0;
}
}
#endif
void Min(int (*p)[3],int line,int row)
{
int i=0;
int j=0;
int Min=0;
for(j=0;j<row;j++)
{
for(i=0;i<line;i++)
{
if(i==0)
{
Min=*(*(p+i)+j);
}
if(Min>*(*(p+i)+j))
{
Min=*(*(p+i)+j);
}
}
printf("数组第%d列最小的值为%d\n",j,Min);
Min=0;
}
}
int main(int argc, const char *argv[])
{
int arr[2][3]={1,2,3,4,5,6};
int line,row;
line=sizeof(arr)/sizeof(arr[0]);
row=sizeof(arr[0])/sizeof(arr[0][0]);
// Max(arr,line,row);
Min(arr,line,row);
// min(arr,line,row);
return 0;
}
7.用二维数组配合指针做出杨归三角
#include <stdio.h>
//用二维数组配合指针做出杨归三角;
void yanggui(int (*p)[10],int line,int row)
{
int i,j;
for(i=0;i<line;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||j==i)
{
*(*(p+i)+j)=1;
}
else
{
*(*(p+i)+j)=*(*(p+i-1)+j)+*(*(p+i-1)+j-1);
}
printf("%d\t",*(*(p+i)+j));
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
int arr[10][10];
int line,row;
line=sizeof(arr)/sizeof(arr[0]);
row=sizeof(arr[0])/sizeof(arr[0][0]);
yanggui(arr,line,row);
// printf("%d%d",line,row);
return 0;
}