C语言基础应用(二)数据的转换与输入输出

news2024/9/30 19:32:34

学习了C语言的基本数据类型后,我们可能会想这些数据如何进行运算,是否可以让不同类型的数据直接进行运算呢?

一、数据类型转换

1.1 int类型与float类型之间的转换

    int i = 5;
//    j值为2.000000  因为左右操作数均为整型
    float j = i/2;
//    l值为2.500000  
    float l = (float) i/2;
    printf("%f\n",j);
    printf("%f\n",l);

上述的 j 值为2.000000,是因为,i和2,均为整型,当整型进行除法运算时,默认进行整除运算。
要想得到正确的结果,我们需要先进行类型转换。就像上述的l中,(float)i,就将int类型的i转换成了float类型的数据,再与2进行除法运算。
指的一提的是,int类型与float类型可以直接进行运算,这是因为默认进行了隐式转换,在计算前就把n转成了float型。

	int i = 1;
    float f = 5.4;
//  输出的结果是6.400000
    printf("%f",i+f);

1.2 int类型与char类型之间的转换

int类型与char类型之间的转换,大致服从以下规则。
在这里插入图片描述

	int i = 65;
    char c = (char) i;
//  结果输出为A 
    printf("%c",c);

1.3 进制转换

printf中的
%d 表示十进制
%o 表示八进制
%x 表示十六进制

    int s = 123;
//    十进制
    printf("%d\n",s);
//    八进制
    printf("%o\n",s);
//    十六进制
    printf("%x\n",s);

二、数据的输出

输出的格式:printf("%",);
%c 字符
%d (有符号)整型
%f 浮点型
%s 字符串

   int age = 20;
//  输出结果为:His name is Mianded, and he is 20 years old
   printf("His name is %s, and he is %d years old\n","Mianded",age);

在上面所提到的数据类型转换时,输出浮点型数据时,总是默认输出6位小数,现在我们可以通过更改printf的相关属性,对输出小数进行控制。
printf输出值占位,可以在%后加数字实现,如:%4d,即输出数字在四位以内,均占四位,默认对齐方式为右对齐,如果左对齐,需要在%+‘-’。
控制浮点型小数位数,可以在%后+.+数字,如%.2d ,即输出的数字小数点保留两位,符合四舍五入的规则。

   int p = 90;
   int q = 1000;
//    the int-number is   90 and .
   printf("the int-number is %4d and .\n",p);
//    the int-number is 1000 and .
   printf("the int-number is %4d and .\n",q);
   
   float a = 99.994;
   float b = 3.6;
//    the float-number is 99.99 and .
   printf("the float-number is %.2f and .\n",a);
//    the float-number is 3.60 and .
   printf("the float-number is %.2f and .\n",b);

三、数据的输入

输入的格式为:

int i;
scanf("%d",&i);

如果是其他类型的数据,可以参考printf进行更改,将%d,更改为%c …
需要注意的是,i前面有个&,表示的是,获取的是i的地址值。类比printf,同样是整数参数, 为什么printf只需要传入参数本身,而scanf需要取地址?
这是因为,printf只需要获得参数值,而scanf则是需要对值进行更改。
scanf, 传入的参数是值传递, 没办法修改到原变量,所以必须要取地址.

	printf("please input a number:\n");
    scanf("%d",&i);
    printf("please input another number:\n");
    scanf("%d",&j);
    printf("i=%d\n",i);
    printf("j=%d\n",j);

特别注意:行缓冲:在输入和输出中遇到换行符时,将执行I/O操作。这时,我们输入的字符会先存放到缓冲区中,摁下回车键后执行I/O操作。
scanf由“回车”触发,当我们输入数据后,输入’\n’后,scanf进行匹配,匹配成功后,会把相关数据放入指定变量中。scanf函数匹配到一个字符后,会在缓冲区删除对应的字符。

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

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

相关文章

人脸识别原理与模型方法综述

概述 一、人脸识别流程 二、优点特性 1、便捷性 采集设备简单,使用快捷。一般来说,常见的摄像头就可以用来进行人脸图像的采集, 不需特别复杂的专用设备。图像采集在数秒内即可完成。 2、友好性 通过人脸识别身份的方法与人类的习惯一致&am…

C# 用NPOI读取EXCEL

1. 复制DLL文件 ICSharpCode.SharpZipLib.dll NPOI.dll NPOI.OOXML.dll NPOI.OpenXml4Net.dll NPOI.OpenXmlFormats.dll 2. 在工程中添加引用 3. using System.IO; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.OpenXml4Ne…

顿悟日记(一)

目录2023年1月顿悟日记:2023年2月24日顿悟日记:2023年2月25日顿悟日记:2023年2月26日顿悟日记:顿悟的经历是如此的奇妙,且让人亢奋的事情。 2023年1月顿悟日记: 1.我是面向对象还是面向过程? …

Linux下使用Shell脚本实现进程监控

本文介绍一种在Linux系统下为实现某些关键进程状态的实时监控而使用shell脚本的编写方法。在这里主要通过监控某些进程是否退出作为判断依据,如果某个进程退出了,则进行对应的恢复处理,如重新拉起相关的进程等。下面介绍该脚本的实现流程。首…

MyBatis之增、删、查、改

目录 前言 一、配置MyBatis开发环境 1.1 创建数据库和表 1.2 添加框架支持 1.3 创建目录结构 1.4 配置数据库连接 1.5 配置MyBatis中的XML文件路径 二、添加业务代码 2.1 查询数据库操作 2.1.1 添加实体类 2.1.2 添加mapper接口 2.1.3 在xml中实现mapper接口 2.1.…

【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)

目录 一、背景和挖掘目标 1、问题背景 2、传统方法的缺陷 3、原始数据情况 4、挖掘目标 二、分析方法和过程 1、初步分析 2、总体过程 第1步:数据获取 第2步:数据预处理 第3步:构建模型 三、思考和总结 项目地址:Data…

jQuery:入门

jQuery 入门 Date: January 19, 2023 目标: 能够说出什么是 jQuery 能够说出 jQuery 的优点 能够简单使用 jQuery 能够说出 DOM 对象和 jQuery 对象的区别 jQuery 概述 JavaScript 库 仓库: 可以把很多东西放到这个仓库里面。找东西只需要到仓库里…

vue中子组件间接修改父组件传递过来的值

一、前言 Vue官方文档Props单向数据流讲解 Vue中遵循单向数据流,所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况&a…

分布式算法 - ZAB算法

ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议), 它应该是所有一致性协议中生产环境中应用最多的了。为什么呢?因为它是为 Zookeeper 设计的分布式一致性协议!什么是 ZAB 协议? ZAB 协议…

Java基本数据类型

1.概述 佛说,大千世界,无奇不有。在这个世界里,物种的多样性,遍地开花,同样,在Java的世界里,也有着异曲同工之妙,Java秉承面向对象的特性,必然少不了区分对象的类型&…

【安全知识】——端口复用隐藏后门

作者名:白昼安全主页面链接: 主页传送门创作初心: 以后赚大钱座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日鸡汤: 精彩的人生是在有限的生命中实现无限价值端口复用是…

【C++】类和对象的六个默认成员函数

类的6个默认成员函数构造函数概念特性析构函数概念特性拷贝构造函数概念特征拷贝构造函数典型调用场景:赋值运算符重载运算符重载赋值运算符重载取地址及const取地址操作符重载类的6个默认成员函数 到底什么是类的6个默认成员函数呢?相信大家一定对此怀…

2023安装archlinux笔记

本文只是个笔记,不是详细教程,仅供参考。 安装过程基本与 《2021年vmware安装archlinux》 https://blog.csdn.net/lxyoucan/article/details/115226297 差不多。 无U盘安装 不想格式化U盘了,直接从硬盘安装。参考一下文章。 《没有U盘纯硬…

什么是全站加速(DCDN)

全站加速(DCDN) 在阅读本文之前,如果你还没有看过 你管这玩意儿叫CDN 这篇文章,可以先去看一下,然后再来阅读本文,效果会更好一些。 什么是全站加速 全站加速DCDN(Dynamic Route for Content…

每日分享(苹果CMS V10仿韩剧TV主题模板源码)

demo软件园每日更新资源,请看到最后就能获取你想要的: ​ 1.低代码引擎技术白皮书 PDF高清版 低代码引擎是一款为低代码平台开发者提供的,具备强大定制扩展能力的低代码设计器研发框架。本白皮书从应用、基础协议和原理三个方面对低代码引擎的技术进行了全面的介绍…

计算机网络体系结构及分层参考模型

文章目录一、分层设计思想的提出二、网络分层的必要性三、什么是计算机网络体系结构四、计算机网络参考模型OSI参考模型/五层参考模型/TCP/IP参考模型一、分层设计思想的提出 最早提出分层思想的是 ARPANET网。1969年11月,美国国防部开始建立一个命名为ARPANET的网络…

c++编程入门到精通(四) 编译过程详解(g++ 编译选项 & cmake编译初解 vscode调试c++)

目录1. g编译基础1.1 g编译过程简述1.2 安装2.g编译过程2.1 g编译选项2.2 g编译实例2.2.1直接编译2.2.2 生成库文件并编译2.2.3 运行可执行文件3. cmake初步3.1 基本特点3.2 CMake基础3.2.1 CMake常见指令3.2.2 CMake常用变量4. CMake编译工程4.1两种方式设置编译规则&#xff…

生活中我们的那些疑惑

在我们日常生活我们大多数都没有天生优势,怎么样让我们创新力和创造力得到最大限度的发挥?也是决定我财商的大小的基础。通过学习努力不断提升我们自身的认知,把认知不确定性尽量降低。 在认知方面,积极情绪最大的作用是让我们更愿…

(四十一)Read Committed隔离级别是如何基于ReadView机制实现的?

今天我们来给大家讲一下,基于之前我们说的ReadView机制是如何实现Read Committed隔离级别的,那么当然了,首先就是要先做一些简单的回顾。所谓的Read Committed隔离级别,我们可以用骚气一点的名字,就是简称为 RC 隔离级…

Java开发环境搭建

什么是JDK、JREJVM 简介JDK下载Hello WorldJava程序开发的三个步骤编写编译运行什么是JDK、JRE JDK ( J ava D evelopment K it):是Java程序开发工具包,包含JRE和开发人员使用的工具。JRE(Java Runtime Environment&a…