#include <stdio.h>
int max_(int (*p)[5],int hang,int row)
{
int max = 0; //最大值
int flag = 1; //记录x[i,j]就是每一行的乘积,一定要为1,因为0乘任何数都是0
int h,l;
int i,j,k,x;
for(i=0;i<hang;i++)
{
for(j=0;j<row;j++)
{
flag = 1; //每次让乘积从0开始
for(k=0;k<hang;k++)
{
for(x=0;x<row;x++)
{
//如果是第a[k][x]个元素跳过
if(k==i&&x==j)
{
continue;
}
//如果是第k行的其他元素计算乘积
else if(k==i)
{
flag*=p[k][x];
}
//如果是第j列的其他元素计算乘积
else if(x==j)
{
flag*=p[k][x];
}
}
}
//要保证初始的最大值,数组乘积;只有第一次算出乘积的时候才赋值给max
if(i==0)
{
max=flag;
}
//其他行的时候,去比较,找最大值出来
else if(flag>max)
{
//三杯水交换
int temp = flag;
flag = max;
max = temp;
}
}
}
return max;
}
int main(int argc, const char *argv[])
{
int arr[3][5]={
{5,1,8,5,2},
{1,3,10,3,3},
{7,8,5,5,16}};
printf("%d\n",max_(arr,3,5));
return 0;
}
有一个unsigned char 类型的数据data,把他的第6个bit位置为1,请写出把第6位置为0的表达式
#include<stdio.h>
int main(int argc, const char *argv[])
{
unsigned char data=0x70;
//把第6个bit位置为1
data = data|(0x1<<5);
printf("%#x\n",data);
// printf("%d\n",data);
//把第6个bit位置为0
data=data&~(0x1<<5);
printf("%#x\n",data);
// printf("%d\n",data);
return 0;
}