2023/1/6 作业
1.在命令行输入表达式,实现计算器功能(直接在主函数实现就行)
#include <stdio.h>
int StrNum(const char *p);
int main(int argc, const char *argv[])
{
int a,b;
a=StrNum(argv[1]);
b=StrNum(argv[3]);
switch(*argv[2])
{
case '+':{
printf("%d+%d=%d\n",a,b,a+b);
break;
}
case '-':{
printf("%d-%d=%d\n",a,b,a-b);
break;
}
case '*':{
printf("%d*%d=%d\n",a,b,a*b);
break;
}
case '/':{
if(b==0)
{
printf("除数不能为0\n");
break;
}else{
printf("%d/%d=%.2f\n",a,b,(float)a/b);
break;
}
}
}
return 0;
}
int StrNum(const char *p)
{
int num,sum;
sum=0;
while(*p)
{
num=*p-'0';
sum=sum*10+num;
p++;
}
return sum;
}
2.使用指针计算每一列的和 void Sum(int (*p)[],int line,int row)
3. 使用指针计算每行最大值,每列最小值 void Max(int (*p)[],int line,int row) void Min(int (*p)[],int line,int row)
#include <stdio.h>
void SumLine(int (*p)[3],int line,int row);
void MaxLine(int (*p)[3],int line,int row);
void SumRow(int (*p)[3],int line,int row);
void MinRow(int (*p)[3],int line,int row);
void Transp(int (*p)[3],int (*q)[2],int line,int row);
int main(int argc, const char *argv[])
{
int line,row;
int arr[2][3]={1,3,5,8,6,4};
line=2;
row=3;
int brr[3][2];
SumLine(arr,line,row);
MaxLine(arr,line,row);
SumRow(arr,line,row);
MinRow(arr,line,row);
Transp(arr,brr,line,row);
return 0;
}
void Transp(int (*p)[3],int (*q)[2],int line,int row)
{
int i,j;
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
*(q[j]+i)=*(p[i]+j);
}
}
}
void SumLine(int (*p)[3],int line,int row)
{
int i,j;
int sum;
for(i=0;i<line;i++)
{
sum=0;
for(j=0;j<row;j++)
{
sum+=*(p[i]+j);
}
printf("第%d行的和为%d\n",i+1,sum);
}
}
void MaxLine(int (*p)[3],int line,int row)
{
int i,j;
int max;
for(i=0;i<line;i++)
{
max=*p[i];
for(j=0;j<row;j++)
{
if(max<*(p[i]+j))
{
max = *(p[i]+j);
}
}
printf("第%d行的最大值为%d\n",i+1,max);
}
}
void SumRow(int (*p)[3],int line,int row)
{
int i,j;
int sum;
for(i=0;i<row;i++)
{
sum=0;
for(j=0;j<line;j++)
{
sum+=*(p[j]+i);
}
printf("第%d列的和为%d\n",i+1,sum);
}
}
void MinRow(int (*p)[3],int line,int row)
{
int i,j;
int min;
for(i=0;i<row;i++)
{
min=(*p)[i];
for(j=0;j<line;j++)
{
if(min>*(p[j]+i))
{
min=*(p[j]+i);
}
}
printf("第%d列的最小值为%d\n",i+1,min);
}
}