C语言—基础数据类型(含进制转换)

进制转换不多,但我觉得适合小白(我爱夸自己嘿嘿)

练习

1. 确认基础类型所占用的内存空间(提示:使用sizeof 运算符): 

在这里我说一下,long 类型通常占用 4 字节。在 64 位系统上,long 类型通常也可为 8 字节。

格式化符sizeof对应的是%zu懒得改了,%lu也行毕竟没报错


2.定义一个unsigned short 类型的变量,并赋值为0,确认该变量减一后的值是什么,(注意无符号数输出需要使用%u)   


3.输入摄氏度转成华氏度输出 (摄氏 = (华氏-32)/1.8)


4. 按下面要求转换数据:
     0356 -->   十六进制   
     0x47 --->  十进制 ---> 八进制
     1026 --->  八进制----> 十六进制

手算:这里按照方法一点点来,我倒是学懂了

1.0356八进制数转十六进制,先将0356每一位数转换为三位二进制数,再由右向左每四位组在一起,不够补零。ABCDEF代表的数字是10-15,E是14,1414也就是EE

2.0x47(十六进制0x为前缀)

  转十进制就直接乘以它本身的进制数,比如十六进制就乘以它的进制数16,十进制就算出来了((4*16^1+7*16^0=71))

  十六进制转八进制把十六进制数每一位数字转为四位的二进制数再由右向左每三个排在一起,就可以了

3.1026十进制转八进制、十六进制

  直接除以要转的进制数,直至商为0,看余数,倒着数就可以,如图所示。

代码:我暂时还不太会,但我决定还是先放上来吧

#include <stdio.h>  // 引入标准输入输出库
#include <stdlib.h> // 引入标准库,用于处理转换int main(void)
{char hexInput[10]; // 声明一个字符数组,用于存储十六进制输入int decimal, octal, hex; // 声明三个整型变量,用于存储十进制、八进制和十六进制数// 八进制到十六进制printf("请输入一个八进制数:"); // 提示用户输入一个八进制数scanf("%o",&octal); // 使用%o格式符读取八进制数,并存储在变量octal中hex = octal; // 将八进制数直接赋值给十六进制数变量hex,因为八进制和十六进制数在数值上是一一对应的sprintf(hexInput,"%x",hex); // 使用sprintf函数将十六进制数转换为字符串表示,并存储在hexInput中printf("八进制数 %o 转换为十六进制数: %s\n",octal,hexInput); // 打印转换结果// 十六进制到十进制printf("请输入十六进制数:"); // 提示用户输入一个十六进制数scanf("%s",hexInput); // 使用%s格式符读取字符串形式的十六进制数decimal = (int)strtol(hexInput,NULL,16); // 使用strtol函数将十六进制字符串转换为十进制整数printf("十六进制数 %s 转换为十进制数是: %d\n",hexInput,decimal); // 打印转换结果//十六进制转八进制printf("请输入十六进制数:");scanf("%s",hexInput);hex = (int)strtol(hexInput,NULL,16); // 将十六进制数先转换为十进制octal = hex;// 将十进制数直接赋值给八进制数变量octal,因为十六进制和八进制的数值一一对应printf("十六进制数 %s 转换为八进制数是: %o\n",hexInput,octal);// 打印转换结果// 十进制到八进制printf("请输入一个十进制数:"); // 提示用户输入一个十进制数scanf("%d",&decimal); // 使用%d格式符读取十进制数octal = decimal; // 十进制数直接赋值给八进制数变量octal,因为它们在数值上也是一一对应的printf("十进制数 %d 转换为八进制数 %o\n",decimal,octal); // 打印转换结果// 十进制到十六进制printf("请输入一个十进制数:"); // 提示用户输入一个十进制数scanf("%d",&decimal); // 使用%d格式符读取十进制数sprintf(hexInput,"%x",decimal); // 使用sprintf函数将十进制数转换为十六进制字符串表示printf("十进制数 %d 转换为十六进制 %s\n",decimal,hexInput); // 打印转换结果return 0; // 程序结束
}


1、通过键盘输入一个通话秒数,编程显示通话用了几分钟几秒。

这里注意if语句应该是if(sec < 0),可以秒数可以为0,我懒得改动了,代码是改动过的

/*1、通过键盘输入一个通话秒数,编程显示通话用了几分钟几秒.*/#include <stdio.h>int main(void)
{int sec;int min;printf("请输入通话的秒数:");scanf("%d",&sec);if(sec <= 0){printf("输入错误,通话时间不能为负数,请重新输入!\n");return 1;}min = sec / 60;sec %= 60;printf("通话了%d分钟%d秒\n",min,sec);return 0;}


2、输入身高公制(cm),转换成英制(inch)(1inch = 2.54cm)。

/*2、输入身高公制(cm),转换成英制(inch)(1inch = 2.54cm)*/#include <stdio.h>int main(void)
{float height_cm,height_inch;printf("请输入您的身高(cm):");scanf("%f",&height_cm);if(height_cm < 0){printf("身高不能为负数,请重新输入!\n");return 1;}height_inch = height_cm / 2.54;printf("您的身高是%.2f英寸\n",height_inch);return 0;}


3、输入身高和体重,计算BMI指数(BMI = w/(h*h))。

/*3、输入身高和体重,计算BMI指数(BMI = w/(h*h))。*/#include <stdio.h>int main(void)
{float wei,hei,bmi;printf("请输入您的体重(kg):");scanf("%f",&wei);printf("请输入您的身高(m):");scanf("%f",&hei);bmi = wei / (hei * hei);printf("您的BMI指数是: %.2f\n",bmi);return 0;}


4.已经字符变量的值为 'p',如何使得该变量的输出为 'M',写出程序;

/*4.已经字符变量的值为 'p',如何使得该变量的输出为 'M'*/
/*p ASCII码112     M 77*/#include <stdio.h>int main(void)
{char var = 'p';var -= 35;printf("%c\n",var);return 0;}


5.将数字8输出为'8'; 

变量a被赋予了整数值8。当printf使用%c格式说明符时,它会将整数8转换为其对应的ASCII字符,即输出字符’8’。我是这么理解的,当然也可以直接输出字符'8'.

/*5.将数字8输出为'8'*/#include <stdio.h>int main(void)
{int a = 8;printf("%c\n",a);return 0;}//只输出字符'8'
printf("%c\n",'8');


6. 写出整型数 -56 在内存中的存储数据,如果将该内存的存储数据当作无符号整型数,则值是多少?(没记错的话,补码是其在存储方式)四个字节也就是11001000 11001000 11001000 1100100

          内存存储方式:  按照整数数据的补码方式存放:
               原码:  整型数据的二进制形式
               有符号整数   (最高位符号位 (0:正数,1:负数)) + 数据位
               无符号:     所有的二进制位都是数据位 
           反码:   除了符号位外,其余数据位取反(0--->1, 1--->0)
           补码:   反码 + 1

正数: 原码,反码 和补码是相同的; 
负数: 最高位符号位,其余位为数据位,采用补码方式存储,

差不多上述算就完事好像是这样不确定,就这样啦,我会的话会回来精进的啦,数应当是对的,让C自己算的哈哈哈

/*6. -56 如果将该内存的存储数据当作无符号整型数,则值是多少?*/#include <stdio.h>int main(void)
{int a = -56;printf("%u\n",a);return 0;}

.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DS Wannabe之5-AM Project: DS 30day int prep day14

Q1. What is Autoencoder? 自编码器是什么&#xff1f; 自编码器是一种特殊类型的神经网络&#xff0c;它通过无监督学习尝试复现其输入数据。它通常包含两部分&#xff1a;编码器和解码器。编码器压缩输入数据成为一个低维度的中间表示&#xff0c;解码器则从这个中间表示重…

代码随想录刷题笔记 DAY 24 | 回溯算法理论基础 | 组合问题 No. 77

文章目录 Day 2401. 回溯算法理论基础1.1 什么是回溯法&#xff1f;1.2 为什么要使用回溯法&#xff1f;1.3 如何理解回溯法&#xff1f; 02. 组合问题&#xff08;No. 77&#xff09;2.1 题目2.2 笔记2.3 代码 Day 24 01. 回溯算法理论基础 1.1 什么是回溯法&#xff1f; &…

【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

解决MAC连上wifi或热点却不能上网问题

解决MAC连上wifi或热点却不能上网问题 #新换的mac昨天还能连上wifi&#xff0c;今天就不好使了。 找到连接的wifi点击详细信息&#xff0c;选择TCP/IP 中的配置IPV4 选择关闭

从零开始:Windows下的Miniconda安装教程

&#x1f680;从零开始&#xff1a;Windows下的Miniconda安装教程&#x1f680; &#x1f333;一、引言&#x1f333; 【&#x1f680;全新启程&#x1f680;】✨踏入Python数据科学的大门&#xff0c;&#x1f525;Miniconda&#x1f525;将成为您不可或缺的得力助手&#xf…

Spring Boot 笔记 007 创建接口_登录

1.1 登录接口需求 1.2 JWT令牌 1.2.1 JWT原理 1.2.2 引入JWT坐标 1.2.3 单元测试 1.2.3.1 引入springboot单元测试坐标 1.2.3.2 在单元测试文件夹中创建测试类 1.2.3.3 运行测试类中的生成和解析方法 package com.geji;import com.auth0.jwt.JWT; import com.auth0.jwt.JWTV…

Spring Boot 笔记 009 创建接口_更新用户基本信息

1.1.1 给User实体类添加校验 package com.geji.pojo;import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta…

python-自动化篇-办公-批量新建文件夹并保存日志信息

文章目录 说明代码效果 说明 因为业务需要&#xff0c;每天都需要按当天的日期创建很多新文件夹。把这种重复又繁重的操作交给Python来做&#xff0c;一直是我的目标。先说下要求&#xff1a; 默认在桌面新建文件夹。文件夹命名方式&#xff0c;“月.日-1”&#xff0c;比如7…

全国计算机等级考试二级,Web考试大纲(2023年版)

基本要求 1.理解Web基本工作原理&#xff0c;掌握Web技术的基本概念和基础。 2.理解超文本传输协议 HTTP的基本概念和模型&#xff0c;掌握 HTTP的消息格式、常用消息头、请求消息和常用请求方法、响应消息和常用响应状态。 3.熟练掌握超文本标记语言 HTMl文档的结构、常用文档…

JavaWeb:SpingBoot原理 --黑马笔记

1. 配置优先级 在我们前面的课程当中&#xff0c;我们已经讲解了SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方式当中…

C++ 贪心 Huffman树 合并果子

在一个果园里&#xff0c;达达已经将所有的果子打了下来&#xff0c;而且按果子的不同种类分成了不同的堆。 达达决定把所有的果子合成一堆。 每一次合并&#xff0c;达达可以把两堆果子合并到一起&#xff0c;消耗的体力等于两堆果子的重量之和。 可以看出&#xff0c;所有…

spring boot整合cache使用Ehcache 进行数据缓存

之前的文章 spring boot整合 cache 以redis服务 处理数据缓存 便捷开发 带着大家通过spring boot整合了 cache 缓存 那么 我们就来说说 其他服务的缓存 而spring boot默认的缓存方案就是 cache 用simple模式 spring boot的强大在于它的整合能力 它将其他缓存技术整合 统一了接…