几道作业题

简介: 几道作业题

题目一


程序的执行结果为( )


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;

}


作业内容

A.300 300

B.44 44

C.300 44

D.44 300


要解决上面这个问题我们可以画图解决也可以心算解决


首先a+b一定会发生整型提升提升之后的数一定是个int类型的数据


关于整型提升 大家可以参考下这篇博客


整型提升


所以提升之后的数字应该是300


而c是一个char类型的数据 储存在里面会发生整型截断 只留下8位的数据 所以数据范围在-128~127之间


所以只可能是44


故而选d


题目二


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

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


作业内容

A.0x00

B.0x12

C.0x34

D.0x1234


题目分析 int a = 0x1234


这里我们要注意的是 前面的0是可以省略的 后面的0是不可以省略的


所以说 完整的写出a 是 0x 00 00 12 34


所以说大端表示就是 00 00 12 34


截断一个char类型的数据之后编程 0x00


所以选a


题目三


猜名次


作业内容

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:


A选手说:B第二,我第三;


B选手说:我第二,E第四;


C选手说:我第一,D第二;


D选手说:C最后,我第三;


E选手说:我第四,A第一;


比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。


题目分析:

这个题目以前没见过 做不出来正常

考虑到一共五个人,直接模拟推理有些太难,计算机最擅长的遍历此时就会派上用场,将每个人从第1到第5来一遍,则一共会产生5^5种可能性,这个只需要一个5层循环即可搞定。但是这样会导致一些不期望出现的结果出现,因为我并没有查重,所以会出现两个人抢名次的情况,也就是两个人或者更多的人名次相同的情况 这时候我们只需要加上限定条件 就可以


代码表示如下


int main()
{
  int i,j = 0;
  int a, b, c, d, e, f = 0;
  for ( a = 1; a < 5; a++)
  {
    for ( b = 1; b <=5; b++)
    {
      for ( c = 1; c <= 5; c++)
      {
        for ( d = 1; d <=5; d++)
        {
          for ( e = 1; e <=5; e++)
          {
            if (((b==2)+(a==3)==1)&&
              ((b==2)+(e==4)==1)&&
              ((c==1)+(d==2)==1)&&
              ((c==5)+(d==3)==1)&&
              ((e==4)+(a==1)==1)&&
              (a+b+c+d+e==15)&&
              (a*b*c*d*e==120))
            {
              printf("a=%d b=%d c=%d d=%d e=%d", a, b, c, d, e);
              printf("\n");
            }
          }
        }
      }
    }
  }
  return 0;
}


题目四


作业内容

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


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


A说:不是我。


B说:是C。


C说:是D。


D说:C在胡说


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


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


在做过上一道题目之后 这道题目很简单了

因为说上面三个人说了真话 所以说它们的条件相加就是3


代码如下


int main()
{
  int killer = 0;
  for (killer='a';killer<='d';killer++)
  {
    if ((killer!='a')+(killer=='c')+(killer=='d')+(killer!='d')==3)
    {
      printf("%c\n", killer);
    }
  }
}


题目五


杨辉三角


作业内容


在屏幕上打印杨辉三角。


1

1 1

1 2 1

1 3 3 1


……


题目分析

我们只要分析下这个图案矩阵就可以

我们可以发现 当i==j是 数字是1 其他位置时数字是上面的a[i-1][j-1] +a[i-1][j]


那么代码就很容易写了


int main()
{
  int i = 0;
  int j = 0;
  int n = 0;
  int arr[100][100]={0};
  scanf("%d", &n);
  for ( i = 0; i < n; i++)
  {
    for ( j = 0; j <= i; j++)
    {
      if ((i==j)||(j==0))
      {
        arr[i][j] = 1;
      }
      else
      {
        arr[i][j]=arr[i - 1][j - 1] + arr[i - 1][j];
      }
    }
  }
  for ( i = 0; i < n; i++)
  {
    for ( j = 0; j <=i; j++)
    {
      printf("%d    ", arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}


以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够


不吝赐教 在评论区或者私信指正 博主一定及时修正


那么大家下期再见咯

相关文章
|
人工智能 搜索推荐 大数据
VR技术在教育与培训中的应用
虚拟现实(VR)技术作为一种先进的交互式技术,已经被广泛应用于游戏、娱乐等领域。然而,其在教育与培训中的应用也越来越受到关注。本文将探讨VR技术在教育与培训中的应用,揭示其优势和挑战,并探讨未来发展趋势。
526 4
|
JSON 前端开发 安全
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
layui框架实战案例(22):多附件上传实战开发实录(php后端、文件删除、数据库删除)
1024 0
|
6月前
|
传感器 监控 网络协议
OSI 物理层详解
本文介绍了多种传输介质及其特性,包括双绞线、光纤、同轴电缆和无线介质。双绞线成本低、易于安装,适合短距离传输;光纤具有大带宽、远距离传输和高安全性,适用于数据中心互联和广域网;同轴电缆抗干扰能力强,但安装复杂;无线介质通过电磁波传输,2.4GHz覆盖广但速度慢,5GHz速度快但穿墙能力弱。此外,文章还提及了曼彻斯特编码的特点与应用,以及传输速率单位bps的定义与换算方法,为网络规划提供了理论依据。
145 5
|
存储 NoSQL Java
【Redis】利用 Redis List 实现 Java 数据库分页快速查询
在大型应用中,数据库分页查询是日常开发中不可避免的需求之一。随着数据量的不断增加,传统的数据库分页方式可能会变得效率较低。为了解决这一问题,本文将介绍如何使用 Redis List 数据结构,结合 Java 编程语言,实现高效的数据库分页查询。
427 9
|
12月前
如何设置条件格式以填充颜色?
【10月更文挑战第21天】如何设置条件格式以填充颜色?
708 2
|
设计模式 缓存 架构师
敲了几万行源码后,我给Mybatis画了张“全地图”
傅哥手写Mybatis,怎么把Mybatis都给手写了!—— 就这么学源码,面试还是个事?
455 0
敲了几万行源码后,我给Mybatis画了张“全地图”
|
算法 JavaScript
JS算法-单词拆分
JS算法-单词拆分
|
算法 安全 Linux
Linux配置strongSwan
Linux配置strongSwan
Linux配置strongSwan
每日一道面试题之forward 和 redirect 的区别?
每日一道面试题之forward 和 redirect 的区别?
122 0
|
数据格式
java_试题 历届真题】兰顿蚂蚁【第五届】【省赛】【C组】
平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。   蚂蚁的头部朝向为:上下左右其中一方。
221 0