满意答案
mdqpr
2017.01.05
采纳率:50% 等级:7
已帮助:811人
您好楼主 根据你的问题 如果我没有理解错的话 第一题问的是 求两种短料各截多少段时,剩余的材料最少?
那么代码如下:
#include
int main()
{
int a = 133;//总长度为133米
int x,y; //表示19m有x段 23米有y段
int z[100]; //用来存储每次循环的剩余长度z
z[0]=133; //初始化z数组
int i=1;
//表示当x为x_min 当y为y_min z为z_min的时候 剩余长度z最小
int x_min = 0;
int y_min = 0;
int z_min = 0;
for(x=0;x<=7;x++)
{
for(y=0;y<=5;y++)
{
z[i]=133-x*19-y*23;
if( z[i]>=0 && z[i]
{
x_min = x;
y_min = y;
z_min = z[i];
}
i=i+1;
}
}
printf("%d %d %d \n",x_min,y_min,z_min);
return 0;
}
最后结果为 x=5 y=1 z=15
也就是最少剩余15米
第二题:
第二道题解析
按位左移<
所以y<<2 先运算
3的二进制是00000011 左移2位为00001100用十进制表示为12
再运算2|12
2用8bit表示是 00000010
12用8bit表示是 00001100
按位或就是对应的每一位进行或运算 0|0=0 1|0=1 0|1=1 1|1=1
所以答案为00001110用十进制表示位14
11分享举报