2023/1/6 作业

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);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值