C语言练习记录(蓝桥杯练习)(小蓝数点)

news2024/9/21 20:53:20

目录

 小蓝数点

 第一题程序的输出结果是?:

第二题下面代码的执行结果是什么?:

第三题下面代码的执行结果是什么?:

第四题关于关系操作符说法错误的是?:

第五题对于下面代码段,y的值为?

第六题sum = 21

第七题设字符型变量x的值是064,表达式“~ x ^ x << 2 & x”的值是()​编辑

第八题变量void (*s[5])(int)表示意思为


 小蓝数点

蓝桥用户登录

此题要用到两个数学公式

1、三点间面积公式:s = |(x2 - x1) × (y3 - y2) - (y2 - y1) × (x3 - x2)| / 2

代码实现 :

s = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2); 
    if (s < 0)
    {
        s = -s;
    }
    s = s / 2;

2、皮克定理:是一个计算点阵中顶点在格点上的多边形面积公式,具体为S=a+b÷2-1,其中a表示多边形内部的点数,b表示多边形落在格点边界上的点数,S表示多边形的面积。

代码实现:

n = s + 1 - count / 2;

接下来是解题思路:

  • 变量声明:

  • x1, y1, x2, y2, x3, y3:这些变量用于存储三条线段的端点坐标。 s:存储三条线段的交点数量。 k1, k2, k3:存储线段的斜率。 count:存储三条线段之间交点的数量。(count = -6,而后每个点计算两次,故后面计算不用-1) t:用于计算交点坐标的临时变量。 n:最后输出结果。

  • 求面积

  • 对三个坐标进行排序,使得x1 <= x2 <= x3。这一步是为了简化后续的计算过程。

  • 计算斜率k1、把x1和x2之间的整数点一一带入点斜式计算,判断y是否为整数,若为整数,则count++,注意斜率不存在的情况,此时直接计算两点间有几个点是整数点。

  • 对于k2、k3重复上述操作。

  • 最后,计算输出结果n = s - count / 2,并输出(此处不需要减一,因为减一的情况已经考虑过了)。

个人认为此方法的缺陷:代码中存在一些冗余,可能需要进行调整和优化以适应特定的需求,此算法也并非最优解,只是我个人能想出来的解。 

int main(int argc, char* argv[])
{
    double x1 = 0, y1 = 0;
    double x2 = 0, y2 = 0;
    double x3 = 0, y3 = 0;
    double s = 0, k1 = 0, k2 = 0, k3 = 0;
    double count = 0, t = 0;
    /*double a = 0, b = 0, c = 0;*/
    long long int n = 0;
    scanf("%lf%lf", &x1, &y1);
    scanf("%lf%lf", &x2, &y2);
    scanf("%lf%lf", &x3, &y3);
    s = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2);


    if (s < 0)
    {
        s = -s;
    }
    s = s / 2;

    if (x1 > x2)
    {
        x1 = x1 + x2;
        x2 = x1 - x2;
        x1 = x1 - x2;
        y1 = y1 + y2;
        y2 = y1 - y2;
        y1 = y1 - y2;
    }
    if (x2 > x3)
    {
        x3 = x3 + x2;
        x2 = x3 - x2;
        x3 = x3 - x2;
        y3 = y3 + y2;
        y2 = y3 - y2;
        y3 = y3 - y2;
    }
    if (x1 > x3)
    {
        x3 = x3 + x1;
        x1 = x3 - x1;
        x3 = x3 - x1;
        y3 = y3 + y1;
        y1 = y3 - y1;
        y3 = y3 - y1;
    }
    if (x1 != x2)
    {
        k1 = (y1 - y2) / (x1 - x2);
        for (int i = x1 + 1; i < x2; i++)
        {
            t = y1 + k1 * (i - x1);
            if (t - ceil(t) == 0)
            {
                count++;
            }
            t = 0;
        }
    }
    else {
        int m = y2 - y1;
        if (m < 0)
        {
            m = -m;
        }
        count += m - 2;
    }
    if (x2 != x3)
    {
        k2 = (y2 - y3) / (x2 - x3);
        for (int i = x2 + 1; i < x3; i++)
        {
            t = y2 + k2 * (i - x2);
            if (t - ceil(t) == 0)
            {
                count++;
            }
            t = 0;
        }
    }
    else {
        int m = y3 - y2;
        if (m < 0)
        {
            m = -m;
        }
        count += m - 2;
    }
    if (x1 != x3)
    {
        k3 = (y1 - y3) / (x1 - x3);
        for (int i = x3; i > x1; i--)
        {
            t = y3 + k3 * (i - x3);
            if (t - ceil(t) == 0)
            {
                count++;
            }
            t = 0;
        }
    }
    else {
        int m = y3 - y1;
        if (m < 0)
        {
            m = -m;
        }
        count += m - 2;
    }

    n = s - count / 2;
    printf("%lld", n);

    return 0;
}

 第一题程序的输出结果是?:

第一次循环:a = 1,b=1--->b小于20,if不成立,b=b+3, 此时b的值为4,

以此类推:

第八次循环:a = 8,b=1+3*7--->b大于20,if成立,循环break终止

最后打印a:8

第二题下面代码的执行结果是什么?:

switch的每个case之后如果没有加break语句,当前case执行结束后,会继续执行紧跟case中的语句。故最终执行default之后的语句

第三题下面代码的执行结果是什么?:

#include <stdio.h>
  int main() {
  	int x = 3;
  	int y = 3;
  	switch (x % 2) {  // x%2的结果为1,因此执行case1
  	case 1:
  		switch (y)   // y是3,因此会执行case3,而case3不存在,那只能执行default
  		{
  		case 0:
  			printf("first");
  		case 1:
  			printf("second");
  			break;
  		default: printf("hello"); // 打印hello,打印完之后,内部switch结束,此时外部case1结束
  		}             // 因为外部case1之后没有添加break语句,所以继续执行case2
  	case 2:             // 打印third
  		printf("third");      // 外部switch结束
  	}
  	return 0;
  }

同上,如果没有break,case语句会从上往下一直执行

第四题关于关系操作符说法错误的是?:

两个字符串是否相等不能使用==,应该使用strcmp函数

第五题对于下面代码段,y的值为?

此处有两个坑,

1、求的是y的值,而不是t

2、若||左边为真则不计算右边的代码

第六题sum = 21

  • a[3][3]={{3,5},{8,9},{12,35}};  

  • 二维数组没有初始化的值默认初始化为0, 

  • 即:a[3][3]={{3,5,0},{8,9,0},{12,35,0}}; 

  •  sum = a[0][2]+a[1][1]+a[2][0] = 0+9+12 = 21。

第七题设字符型变量x的值是064,表达式“~ x ^ x << 2 & x”的值是()

  • x << 2: 这将x的二进制表示左移2位。由于x是字符型变量,其值为064(八进制),这在十进制中是52,二进制中是00110100。左移2位后,它变为11010000

  • ~x: 这是对x的按位取反。对于x = 00110100,取反后得到11001011。

  • ~x ^ x: 这是上面得到的两个结果的异或操作。即11001011 XOR 00110100 = 11111111。

  • (~x ^ x) & x << 2: 这是上面得到的11111111与x << 2的结果(即11010000)的按位与操作。结果为11010000,即八进制的333

  • 最后八进制前置加上0,0333,选A

第八题变量void (*s[5])(int)表示意思为

  • 先看主体:s[5]  这表示s是一个大小为5的数组。

  • *s:在数组前加上*表示数组的每个元素都是一个指针。

  • void (*)(int):这是一个函数指针的类型,它指向一个接受一个int参数并返回void的函数。

  • 总结:该类题需先看主体是数组,函数,还是指针

今天就先到这了!!!

看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注!

你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信!!!

关注必回!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1273259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Microsoft Expression Web - 网页布局

在本章中&#xff0c;我们将介绍网页的基本布局。在创建我们的网页布局之前&#xff0c;我们需要考虑我们的内容&#xff0c;然后设计我们希望如何呈现该内容&#xff0c;因为它是在我们的网站上可见的内容。 由我们如何呈现我们的内容&#xff0c;以便我们的观众找到我们的网…

人工智能概论

一、关键技术 人工智能包含了七项关键技术: 1. 机器学习: 机器学习是研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能&#xff0c;是人工智能技术的核心。 从学习模式划分&#xff0c;分…

Redis:主从复制

目录 概念配置步骤通过命令配置主从复制原理薪火相传反客为主哨兵(Sentinel)模式原理配置SpringBoot整合Sentinel模式 概念 主机更新后根据配置和策略&#xff0c;自动同步到备机的master/slave机制&#xff0c;Master以写为主&#xff0c;Slave以读为主。 作用&#xff1a; …

DCDC前馈电容与RC串并联电路

一、RC串并联电路特性分析 1、RC串联电路 RC 串联的转折频率&#xff1a; f01/&#xff08;2πR1C1&#xff09;&#xff0c;当输入信号频率大于 f0 时&#xff0c;整个 RC 串联电路总的阻抗基本不变了&#xff0c;其大小等于 R1。 2、RC并联电路 RC 并联电路的转折频率&…

【Linux基础开发工具】yum生态vim的配置与使用

目录 前言 1. Linux 软件包管理器 yum 1.1 什么是yum 1.2 快速上手yum 1.3 yum生态 2. Linux编辑器vim 2.1 vim的模式 2.2 vim使用技巧 3. vim编辑器辅助功能配置 3.1 配置 3.2 用户sudo权限配置 总结 前言 Linux基础指令与权限之后&#xff0c;Linux系统开发工具的使用…

[操作系统] 文件管理

文章目录 5.1 磁盘调度算法1. 先来先服务算法( First Come First Served, FCFS) 算法2. 最短寻道时间优先算法( Shortest Seek Time First, SSTF) 算法3. 扫描算法( SCAN ) 算法4. 循环扫描算法( Circular Scan, CSCAN ) 算法5. LOOK 与 CLOOK 算法 5.2 进程写文件时&#xff0…

2023.11.27 使用anoconda搭建tensorflow环境

2023.11.27 使用anoconda搭建tensorflow环境 提供一个简便安装tensorflow的方法 1. 首先安装anoconda&#xff0c;安装过程略&#xff0c;注意安装的时候勾选安装anoconda prompt 2. 进入anoconda prompt 3. 建立python版本 conda create -n tensorflow1 python3.84. 激活t…

BUUCTF [ACTF新生赛2020]swp 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 密文&#xff1a; 下载附件&#xff0c;得到一个.tar文件。 解题思路&#xff1a; 1、使用WinRAR解压.tar文件&#xff0c;得到两个.zip文件。 解压wget.zip文件&#xff0c;得…

如何有效的进行 E2E

一、前言 本文作者介绍了什么是E2E测试以及E2E测试测什么&#xff0c;并从对于被测系统、测试用例、测试自动化工具、测试者四个方面的要求&#xff0c;介绍了如何保证E2E测试有效性&#xff0c;干货满满&#xff0c;值得学习。 二、什么是E2E测试 相信每一个对自动化测试感…

MySQL图书管理系统(49-94)源码

-- 九、 子查询 -- 无关子查询 -- 比较子查询&#xff1a;能确切知道子查询返回的是单值时&#xff0c;可以用>&#xff0c;<&#xff0c;&#xff0c;>&#xff0c;<&#xff0c;!或<>等比较运算符。 -- 49、 查询与“俞心怡”在同一个部门的读者的借…

Python VIP 付费漫画,无需充值随便霍霍,零基础也能学会!

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 环境使用: Python 3.10 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 …

【开源】基于Vue+SpringBoot的独居老人物资配送系统

项目编号&#xff1a; S 045 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S045&#xff0c;文末获取源码。} 项目编号&#xff1a;S045&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4…

Embedding压缩之hash embedding

在之前的两篇文章 CTR特征重要性建模&#xff1a;FiBiNet&FiBiNet模型、CTR特征建模&#xff1a;ContextNet & MaskNet中&#xff0c;阐述了特征建模的重要性&#xff0c;并且介绍了一些微博在特征建模方面的研究实践&#xff0c;再次以下面这张图引出今天的主题&#…

销售客户分配管理细则

随着市场竞争的不断加剧&#xff0c;销售团队的有效管理变得愈发重要。其中&#xff0c;客户分配是销售团队成功的关键之一。一个科学合理的销售客户分配管理细则不仅可以提高销售团队的整体工作效率&#xff0c;还能够优化客户体验&#xff0c;促使销售业绩持续增长。下面是一…

Jmeter接口测试:jmeter_逻辑控制器_随机控制器随机顺序控制器

随机控制器 当该控制器下有多个子项时&#xff0c;每次循环会随机执行其中一个 Ignore sub-controller block&#xff08;忽略子控制器模块&#xff09; 如果勾选了此项&#xff0c;随机控制器下的子控制器中的多个子项只会被执行一个 随机顺序控制器 当该控制器下有多个子项…

5. 文件属性和目录

5. 文件属性和目录 1. Linux 系统的文件类型1.1 普通文件1.2 目录文件1.3 字符设备文件和块设备文件1.4 符号链接文件1.5 管道文件1.6 套接字文件 2. stat 系统调用2.1 struct stat 结构体2.2 st_mode 变量2.3 struct timespec 结构体 3. fstat 和 lstat 函数3.1 fstat 函数3.2…

反欺诈指南:东南亚数字经济反欺诈注意事项

目录 东南亚各类网络欺诈肆虐 科技助力东南亚反欺诈 东南亚做反欺诈需要注意四个方面 据谷歌、淡马锡和贝恩公司发布的一份报告显示&#xff0c;尽管东南亚地区的经济增长有所放缓&#xff0c;但2023年数字经济仍预计创造约100亿美元的收入&#xff0c;数字支付占该地区总交易额…

石油化工隐蔽设备AR可视化检修协助系统让新手也能轻松上岗

随着城市基础设施建设的不断推进&#xff0c;地下管线巡检工作的重要性日益凸显。传统的巡检方法已无法满足现代都市的高效运营需求。此时&#xff0c;地下管线AR智慧巡检远程协助系统应运而生&#xff0c;凭借其独特的特点与优势&#xff0c;为城市地下管线巡检带来了革命性的…

98.套接字-Socket网络编程1(基础概念)

目录 1.局域网和广域网 2.IP 互联网协议(Internet Protocol) IP的作用 3.查看IP地址 Windows上查看IP ​编辑 Linux上查看IP 4.端口 主要类型&#xff1a; 用途&#xff1a; 示例&#xff1a; 端口的表示&#xff1a; 5.OSI/ISO 网络分层模型 1.局域网和广域网 …

《C++ Primer》第10章 算法(二)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 10.4 再探迭代器&#xff08;P357&#xff09; 除了为每个容器定义的迭代器外&#xff0c;头文件 iterator 中还定义了额外的几种迭代器&#xff1a; 插入迭代器&#xff08;insert iterator&#xff09;&…