C语言算术转换例题

这里写目录标题

  • 例题一
    • 题目解析
    • 答案
  • 例题二
    • 题目解析
    • 答案
  • 例题三
    • 题目解析
    • 答案
  • 例题四
    • 方法一
    • 解析
    • 方法二
    • 解析
  • 例题五
    • 答案
    • 方法一
    • 方法二
    • 解析

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐓🏀 python

例题一

下面代码的结果是

#include <stdio.h>
int i;
int main()
{
    i--;
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0; 
}

A.> B.< C.不输出 D.程序有问题

题目解析

之前我认为i是没有初始化的,所以程序有问题

但是后面看了答案发现全局变量,没有给初始值时,编译其会默认将其初始化为0,所以i=0

既然i=0的话那i–就应该是-1才对,sizeof(i)的话就应该是求的int类型的大小,sizeof(i)=4,那-1<4理论上是输出<才对,可是答案却是>

这里我们就可以联想到无符号整形,也就是-1最后换算成无符号整形的时候是一个很大的数

事实上也确实是如此,sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据,-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该选择A

答案

答案:D

例题二

关于表达式求值说法不正确的是:( )
A.表达式求值先看是否存在整形提升或算术转换,再进行计算

B.表达式真正计算的时候先看相邻操作符的优先级再决定先算谁

C.相邻操作符的优先级相同的情况下,看操作符的结合性决定计算顺序

D.只要有了优先级和结合性,表达式就能求出唯一值

题目解析

具体可以看我之前写的一篇文章操作符详解下(非常详细)
ABC都是对的,对于D我们来看一个例子

#include <stdio.h>
int main()
{
    int i = 1;
    int ret = (++i)+(++i)+(++i);
    printf("ret = %d\n", ret);
	return 0;
}

这里的结果是不确定的,可以尝试在不同的编译器上打印结果

答案

答案:D

例题三

有序序列合并
在这里插入图片描述

题目解析

这道题需要将两个数组都合并起来,因此数组的空间要足够大,否则就会出现数组越界

第一步就需要确定两个数组的有效元素个数,也就是m和n,然后再向数组输入数据,

第二步就需要将两个数组合并,由于两个数组的有效元素个数都是确定的,因此我们只需要用一个循环就可以解决

第三步就是重新排列,我们需要用两个循环,因为第二个循环是为了将一个会较大的数往后排,但是前面仍然可能存在一些数比后面的数大,所以第一个for循环是为了检查前面是否有一些数比后面的数大

答案

这是我之前写的代码

int main() {

	int n,m,temp,a1[1000],a2[10000];

	scanf("%d %d",&n,&m);

	for(int i=0; i<n; i++) {
		scanf("%d",&a1[i]);
	}
	for(int i=0; i<m; i++) {
		scanf("%d",&a2[i]);
	}
	for(int i=0; i<m; i++) {
		a1[n+i]=a2[i];
	}

	for(int i=0; i<m+n-1; i++) {
		for(int j=0; j<m+n-1; j++) {
			if(a1[j]>a1[j+1]) {
				temp=a1[j];
				a1[j]=a1[j+1];
				a1[j+1]=temp;
			}
		}
	}

	for(int i=0; i<m+n; i++) 
    {
		printf("%d ",a1[i]);
	}

	return 0;
}

例题四

获得月份天数

在这里插入图片描述

方法一

#include<stdio.h>
int main()
{
	int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
	int notrun[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	int year, month;

	while(scanf("%d %d", &year, &month)!=EOF)
	{if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		printf("%d\n", run[month - 1]);
	}
	else
	{
		printf("%d\n", notrun[month - 1]);
	}
    }
	return 0;
}

解析

这种解法是将创建两个数组,一个数组是闰年,另一个数组就不是闰年,将每个月份的总天数输入进数组

然后判断是否为闰年,由于数组的下标是0开始,所以最后打印的时候需要mouth-1

方法二

#include<stdio.h>
int main() {
    int year, month, day;
    while (scanf("%d %d", &year, &month) != EOF) {
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                printf("31\n");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                printf("30\n");
                break;
            case 2: {   //2月平年28天,闰年29天
                    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
                        printf("29\n");
                    else
                        printf("28\n");
                }
        }
    }
    return 0;
}

解析

这个方法用switch语句,如果switch语句不是很懂可以参考我之前写的一篇文章switch语句和while循环

因为有一些月份的天数是相同的比如1 3 5 7 8 1012,因此把那些天数都放在一块

因为在中间是没break的,所以当我们在case12后只需要将天数打印出来就可以了

对于4,6,9,11也是一样的,而2月只需要一个简单的判断也可以解决

例题五

变种水仙花
在这里插入图片描述

答案

方法一

#include <stdio.h>
int main()
{
	for (int i = 10000; i <= 99999; i++)
	{
		int a = (i % 10) * (i / 10), b = (i % 100) * (i / 100), c = (i % 1000) * (i / 1000), d = (i % 10000) *( i / 10000);
		if (i == a + b + c + d)
		{
			printf("%d ", i);
		}
	}
	return 0;

方法二

这个方法二非常妙

#include <stdio.h>
int main()
{
    int i = 0;
    for(i=10000; i<=99999; i++)
    {
        //判断i是否为lily number
        int j = 10;
        int sum = 0;
        int tmp = i;
        for(j=10; j<=10000; j*=10)
        {
            sum += (tmp%j)*(tmp/j);
        }
        if(sum == i)
            printf("%d ", i);
    }
    return 0;
}

解析

由于题目要求输出五位数的所有 Lily Number,所以需要一个i的for循环,
对于j=10是为了后面的求余和除法,sum就是为了把求余和除法的结果全加起来,而tmp是为了接收循环中i的值

对于内部的j循环可能比较难看懂
我们来画一个图就知道了
在这里插入图片描述

注意for循环是先用j=10,经过第一次循环后j=j*10=100,也就是第二次循环的j

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法笔记:OPTICS 聚类

1 基本介绍 OPTICS(Ordering points to identify the clustering structure)是一基于密度的聚类算法 OPTICS算法是DBSCAN的改进版本 在DBCSAN算法中需要输入两个参数&#xff1a; ϵ 和 MinPts &#xff0c;选择不同的参数会导致最终聚类的结果千差万别&#xff0c;因此DBCSAN…

ONNX实践系列-修改yolov5-seg的proto分支输出shape

一、目标 本文主要介绍要将原始yolov5分割的输出掩膜从[b,c,h,.w]修改为[b, h, w, c] 原来的: 目标的: 代码如下: Descripttion: version: @Company: WT-XM Author: yang jinyi Date: 2023-09-08 11:26:28 LastEditors: yang jinyi LastEditTime: 2023-09-08 11:48:01 …

手动实现 git 的 git diff 功能

这是 git diff 后的效果&#xff0c;感觉挺简单的&#xff0c;不就是 比较新旧版本&#xff0c;新增了就用 "" 显示新加一行&#xff0c;删除了就用 "-" 显示删除一行&#xff0c;修改了一行就用 "-"、"" 显示将旧版本中的该行干掉了并…

线上PDF文件展示

场景&#xff1a; 请求到的PDF&#xff08;url链接&#xff09;&#xff0c;将其展示在页面上 插件&#xff1a; pdfobject &#xff08;我使用的版本&#xff1a; "pdfobject": "^2.2.12" &#xff09; 下载插件就不多说了&#xff0c;下面将其引入&a…

线上ES集群参数配置引起的业务异常案例分析

本文介绍了一次排查Elasticsearch node_concurrent_recoveries 引发的性能问题的过程。 一、故障描述 1.1 故障现象 1. 业务反馈 业务部分读请求抛出请求超时的错误。 2. 故障定位信息获取 故障开始时间 19:30左右开始 故障抛出异常日志 错误日志抛出timeout错误。 故障之前…

大数据 DataX-Web 详细安装教程

目录 一、DataX-Web 介绍 1.1 DataX-Web 是什么 1.2 DataX-Web 架构 二、DataX-Web 安装部署 2.1 环境要求 2.2 安装 2.3 部署 2.4 数据库初始化 2.5 配置 2.6 启动服务 2.6.1 一键启动所有服务 2.6.2 一键取消所有服务 2.7 查看服务&#xff08;注意&#xff01…

2024深圳电子展,加快粤港澳电子信息发展,重点打造“湾区经济”

在“十四五”期间&#xff0c;中国电子信息产业面临着新形势和新特点。随着国家对5G、人工智能、工业互联网、物联网等“新基建”的加速推进&#xff0c;以及形成“双循环”新格局的形势&#xff0c;新型显示、集成电路等产业正在加速向国内转移。这一过程不仅带来了新的应用前…

HTTP协议抓包工具Charles 抓包图文完整教程

Charles是在您自己的计算机上运行的Web代理&#xff08;HTTP代理 / HTTP监视器&#xff09;&#xff0c;您的网络浏览器&#xff08;或任何其他Internet应用程序&#xff09;配置为通过Charles访问Internet&#xff0c;Charles可以为您记录并显示发送和接收的所有数据。 Http抓…

盘点43个Python登录第三方源码Python爱好者不容错过

盘点43个Python登录第三方源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 项目名称 bnuz中国电信校园网模拟登录&#xff0c;python selenium BNUZ教务系统认证爬虫Python语言实现&#xff0c;你可以用…

UNETR++:深入研究高效和准确的3D医学图像分割

论文&#xff1a;https://arxiv.org/abs/2212.04497 代码&#xff1a;GitHub - Amshaker/unetr_plus_plus: UNETR: Delving into Efficient and Accurate 3D Medical Image Segmentation 机构&#xff1a;Mohamed Bin Zayed University of Artificial Intelligence1, Univers…

工业级5G路由器:稳定性更高,网络速度更快!

随着5G技术的发展&#xff0c;5G路由器也越来越受到人们的关注。特别是工业级5G路由器&#xff0c;它的应用范围更广&#xff0c;稳定性更高&#xff0c;网络速度更快&#xff0c;已成为许多企业和工业领域的必备选择。 一、工业级5G路由器的特点 工业级5G路由器具有很多独特的…

社区物联网云服务架构设计

文章目录 1 摘要2 架构图2.1 社区物联网云服务网络拓扑图2.2 社区物联网云服务通讯流程图2.3 社区远程开锁功能流程图 3 应用场景 1 摘要 随着社区管理越来越智能化&#xff0c;社区物联网升级与改造的市场空间也越来越大。社区物联网包含楼宇对讲、门禁门锁、通道闸等等设备系…

Vue3(setup)中使用vue-cropper图片上传裁剪插件,复制代码直接使用

最近在项目中用到上传裁剪&#xff0c;看了一下代码&#xff0c;觉得这插件可可以。梳理了一下代码分享给大家 前端UI组件element-plus 如果你也用到了 &#xff0c;快速帮你解决了问题,别忘记点赞收藏 1.首先看效果图 因为版本vue-cropper 众多 &#xff0c;虽然网上有各…

S71200通过PROFINET协议和岛电数字控制器通讯

项目要求 西门子S71200PLC需要通过PROFINET协议和岛电数字控制器&#xff08;型号&#xff1a;SRS13A&#xff09;通讯&#xff0c;读取温度的测量值PV和设定值SV。 项目实施 采用NET90-PN-MBT&#xff08;以下简称“网关”&#xff09;&#xff0c;它是一款将Modbus TCP/RT…

用户隐私与游戏体验如何平衡?第二周 Web3 开发者集结精华回顾

由 TinTinLand 联合 Dataverse 、Web3Go 、Subquery 、Cregis 、Litentry、Aspecta、SpaceID、ANOME、VARA&Gear、Moonbeam、Mantle、Obelisk 等 10 余家 Web3 项目共同举办的 Web3 开发者赢积分活动已举办至第三周。精彩线上主题活动分享、近距离交流体验互动&#xff0c;…

京东采销面对面,洞悉行业新趋势 京东3C数码生态大会在武汉圆满举行

为促进湖北省3C数码产业发展&#xff0c;本地企业降本增效、促进行业交流、充分发挥京东集团全链路生态服务能力&#xff0c;支持地方3C特色产业提质增量。2023年11月23日&#xff0c;由京东零售、京东物流主办&#xff0c;湖北省电子商务行业协会联合协办的“聚力共赢、携手共…

想问问各位大佬,网络安全这个专业普通人学习会有前景吗?

网络安全是一个非常广泛的领域&#xff0c;涉及到许多不同的岗位。这些岗位包括安全服务、安全运维、渗透测试、web安全、安全开发和安全售前等。每个岗位都有自己的要求和特点&#xff0c;您可以根据自己的兴趣和能力来选择最适合您的岗位。 渗透测试/Web安全工程师主要负责模…

山西电力市场日前价格预测【2023-11-25】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-25&#xff09;山西电力市场全天平均日前电价为312.19元/MWh。其中&#xff0c;最高日前电价为350.80元/MWh&#xff0c;预计出现在09:15。最低日前电价为273.49元/MWh&#xff0c;预…

NX二次开发UF_CSYS_map_point 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_map_point Defined in: uf_csys.h int UF_CSYS_map_point(int input_csys, double input_point [ 3 ] , int output_csys, double output_point [ 3 ] ) overview 概述 Ma…