C 高级 /Day 2

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

猜你喜欢

转载自blog.csdn.net/weixin_57039874/article/details/130607454