一些问题的小心得

问题1

int main()
{
  unsigned char a = 200;
  unsigned char b = 100;
  unsigned char c = 0;
  c = a + b;
  printf(“%d %d”, a+b,c);
  return 0;
}

问题是求这个程序的执行结果;

200,100,都是整形,左边的表达式都是char类型,会发生转换,整形占4个字节,而char占一个字节,200是11001000  ,100是1100100,所以 两个数转成二进制后转字符型都是可以完全保留,a是200,b是100,此后执行c=a+b操作,先执行a+b,然后因为c是char类型,所以加了之后再转换,300是100101100,留下低八位字节转换成十进制为44;

问题2

unsigned int a= 0x1234; unsigned char b=*(unsigned char *)&a;

在32位大端模式处理器上变量b等于( )

大端模式小端模式,小端模式低位低地址,高位高地址,

 而大端模式呢,低位高地址,高位低地址。

在vs内存地址中写一下的话,那就是00 00 12 34,而平常写的地址和计算机的内存地址是逆置的,所以此时强转char类型的话,剩下的一个字节是00.

问题3

打印杨辉三角

在这里我是直接照着如下链接打的一遍觉得有些小的问题

(11条消息) 用c语言输出杨辉三角形_li1376417539的博客-CSDN博客_杨辉三角c语言

 首先直接初始化了一个100*100的数组,申请浪费的空间太多了,但是算法的思想和数学中一致,最左边的一列直接全打印1;其他的元素按照arr[row][col] = arr[row - 1][col] + arr[row - 1][col - 1];这一条核心语句来写

问题4

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

思想值a,b,c,d分别用1,2,3,4表示,a的话就是murder!=1;,b的话就是murder=3;c的话就是murder=4;d的话是c在胡说,那么就理解为murder!=4;

三个人说真话,一个人是假话,三个逻辑表达式结果是1.一个是0,把他们相加等于3就是判定条件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值