一.运算与数据类型的笔记
1.使用求余运算符"%d"时,a%b中a和b必须都是整数。
2.printf函数中的格式化字符%符号具有转换说明的功能,若只是想显示%时,要写成%%,当使用不具有转换说明功能的puts函数时,输入%即输出%。
3.int/double得到的是double型,进行了隐式类型转换,想进行double和int的类型转换可以使用类型转换符(),列如(int)5.7就会去掉小数部分,变成int型的5.
4.0标志,设置了0标志则用0补齐位数,列如%09.9f。
5.条件运算符,a?b:c,表示如果a不为0即a为真,则结果是b的值,否则结果为c的值
max=(n1>n2)?n1:n2; //将较大的值赋给max//
printf("他们的差是%d",(n1>n2)?n1-n2:n2-n1); //进行差值运算//
二.分支结构与循环结构
1.逻辑与运算符&&:一假则假
逻辑或运算符||:一真则真
2.if语句和switch语句
switch(n%3)
{
case 0:puts("n能被3整除");
break;
case 1:puts("n除以3余1");
break;
case 2:puts("n除以3余2");
break;
}
其中case是标签,case与0之间要有空格,如果没有break语句,程序就不会跳出switch语句,并继续往下执行。
比较两种语句,使用单一表达式分支的时候switch语句效果更好。
3.循环结构
do语句先循环后判断,循环体至少执行一次。
while语句和for语句先判断后执行,可能一次也不会执行。
4.多重循环中break语句只会跳出内侧的循环语句,执行continue语句时会跳过循环体剩余部分
5.前置递增运算符,如++a,该表达式是递增后的值,后置递减运算符,如a--,代表递减前的
值,即a的值。
6.德摩根定律:对各条件取非,再将逻辑或变成逻辑与,将逻辑与变成逻辑或,再取其否定,结果和原来一样。即x&&y和!(!x||!y)相等。
#include<stdio.h>
int main()
{
int i,t,l1,w1,h1,l2,w2,h2,max1,mid1,min1,max2,mid2,min2;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d %d %d",&l1,&w1,&h1);
scanf("%d %d %d",&l2,&w2,&h2);
if(l1>w1)
{
max1=l1;
min1=w1;
if(w1>h1)
{
mid1=w1;
min1=h1;
}
else
{
mid1=h1;
}
}
else if(l1>h1)
{
max1=l1;
min1=h1;
if(h1>w1)
{
mid1=h1;
min1=w1;
}
else
{
mid1=w1;
}
}
else
{
max1=w1;
min1=l1;
if(l1>h1)
{
mid1=l1;
min1=h1;
}
else
{
mid1=h1;
}
}
if(l2>w2)
{
max2=l2;
min2=w2;
if(w2>h2)
{
mid2=w2;
min2=h2;
}
else
{
mid2=h2;
}
}
else if(l2>h2)
{
max2=l2;
min2=h2;
if(h2>w2)
{
mid2=h2;
min2=w2;
}
else
{
mid2=w2;
}
}
else
{
max2=w2;
min2=l2;
if(l2>h2)
{
mid2=l2;
min2=h2;
}
else
{
mid2=h2;
}
}
if((max1>=max2&&mid1>=mid2&&min1>min2)||(max1<=max2&&mid1<mid2&&min1<=min2))
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
使用分支语句和循环语句来解决箱子匹配问题,只要满足长宽高中的最大值max,中间值mid,最小值min都大于等于另一个箱子的就能成功匹配。所以先用if语句选出max,mid,min再进行比较即可。