1.通过终端实现计算器
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char *p1 = argv[1];
int num1 = 0;
while(*p1!='\0')
{
num1 *= 10;
num1 += *p1 - '0';
p1++;
}
char *p2 = argv[3];
int num2 = 0;
while(*p2!='\0')
{
num2 *= 10;
num2 += *p2 - '0';
p2++;
}
int sum = 0;
if(!strcmp(argv[2],"+"))
sum = num1 + num2;
else if(!strcmp(argv[2],"-"))
sum = num1 - num2;
printf("%d\n",sum);
return 0;
}
2.通过数组指针计算二维数组的最大值,并返回
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int Max(int m,int n,int (*p)[n])
{
int maxi = 0;
int maxj = 0;
int i,j;
int max = 0;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (max < *(*(p+i)+j))
{
maxi = i;
maxj = j;
max = *(*(p+maxi)+maxj);
}
}
}
return max;
}
int main(int argc, const char *argv[])
{
int m,n;
printf("请输入数组行数:");
scanf("%d",&m);
printf("请输入数组列数:");
scanf("%d",&n);
int arr[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("请输入第%d行第%d列的元素:",i+1,j+1);
scanf("%d",&arr[i][j]);
}
}
int (*p)(int m,int n,int (*p)[n]) = Max;
int max = p(m,n,arr);
printf("max=%d\n",max);
return 0;
}