C语言基础第04天:数据的输出和输出

C语言基础:04天笔记

内容提要

  • 回顾
  • C语言
  • 数据的输入输出

回顾

运算符

算术运算符

结果:数值

+ - * / % +(正) -(负) ++ --

i++和++i

相同点:i自身都会增1

不同点:他们运算的最终结果是不同的. i++先使用 ,后加1; ++i先计算,后使用

赋值运算符

结果:赋值后的变量的值

赋值顺序:由右到左

= += -= *= /= %=

关系运算符

表达式 = 运算符 + 运算数

关系表达式 = 关系运算符 + 运算数

结果: 布尔类型(默认结果:0代表假,非0代表真,引入stdbool.h文件,false代表假,true代表真)

> < >= <= == !=

注意:

1. 两个浮点型数据比较的时候,不能使用==,因为比较出来的结果是不确定的,解决方案: 参与比较的两个操作数相减然后和0比较

逻辑运算符

结果:布尔类型

&& || !

&&

运算符左右两侧表达式都成立,则结果为真,有一个不成立,则结果为假

||

运算符左右两侧表达式都不成立,则结果为假,有一个成立,则结果为真

!

对原操作数或者表达式结果取反,如果原操作数或者表达式结果为真,最终结果为假;反之结果为真

惰性运算

惰性运算的目的减少运算的次数,从而提供运算效率

短路与:如果&&左侧表达式返回假,就不再执行右侧表达式,最终结果就是与左侧表达式相同的结果

短路或:如果||左侧表达式为真,就不再执行右侧表达式,最终返回的结果就是左侧表达式的结果

逗号运算符

结果:最后一个表达式的结果

语法:表达式1,表达式2,表达式3.....

位运算

所谓的位运算,就是计算机底层直接针对二进制位进行操作

~ & | ^ << >>

~:按位取反,单目运算,针对二进制位,每一位进行取反,如果二进制0变1,1变0

&:按位与,双目运算,两个数相同二进制位,如果都为1结果为1,否则结果为0

|: 按位或,双目运算,两个数相同二进制位,有一个为1,结果为1,否则结果为0

^:按位异或:双目运算,两个数相同二进制位,结果为0,否则结果为1

<<:左移:分为无符号左移和有符号左移,所有二进制位从低位到高位依次左移,超出部分舍弃,缺失部分使用0补齐

>>:右移:分为无符号左移和有符号右移,所有二进制位从低位到高位依次左移,超出部分舍弃

无符号右移:直接补0

有符号右移:算术右移,默认补1. 逻辑右移,补0由计算机系统决定

流程控制

C语句

定义
  • C程序是以函数为基础单位的
  • 一个函数的执行部分是若干条语句
  • C语句都是用来完成一定的操作任务
  • C语句必须依赖于函数存在
C程序结构

在这里插入图片描述

C语句分类
控制语句

用于完成一定的控制功能

  1. if…else…
  2. for…
  3. while…
  4. do…while…
  5. continue…
  6. break
  7. switch
  8. return
  9. goto
函数调用语句

由一个函数调用加一个分号组成,例如:

printf ("这是一个C程序 \n");
test();
表达式语句

由一个表达式加一个分号构成,最典型的表达式语句就是赋值语句,例如:

a = 3          //是一个表达式
score > 90     //是一个表达式
score = 90;   //是一个表达式语句
空语句

只有一个分号,什么都不做,例如

;

复合语句

用"(…)"括起来的若干个语句,例如

{z = x + yt = z / 100printf("%f\n",t);
}

一般形式为:{语句部分;}

数据的输入输出

数据的输入与输出是相对而言,其中:

  • 从计算机向外部设备输送数据称之为输出(output).通常的输出设备包括:显示器,打印机等
  • 从外部设备向计算机输送数据称之为输入(input).通常的输出设备包括:键盘.鼠标.扫描仪等

在C语言中,输入与输出需要使用标准的输入输出库(stdio)中的输入函数(scanf), 输出函数(printf)实现

库函数已经被编译成了目标文件,在链接时与编译源程序得到的目标文件(.obj)相链接,生成可执行程序.

注意:在使用系统库函数时,要用预处理指令# include将有关的头文件包含到用于源文件中(要放在程序的开头位置)头文件中包含了调用函数时需要的有关信息,具体的函数在编译时再去链接对应的系统库

简单的输入输出
用简单的printf函数输出数据

语法:

printf("格式控制",输出列表);

注意:格式控制中的格式化符号(如%d)要和输出的数据一一对应

举例:

printf("i=%d,x=%d,y=%d\n",i,32.i+1)

格式控制:用哪个一对英文双引号括起来,包括两种信息

  1. 格式说明:由%d和特定字符组成,如:%d %f %u等,用于说明输出项目所采用的格式

  2. 普通字符:作为说明性文字.符号等,照原样显示出来.

    输出列表:输出列表中的各项目指出了所要输出的内容,可以是常量,变量,表达式
    基本的格式字符

%d 按有符号十进制整型(int)数据的实际长度输出。(十进制(0)、八进制(00)、十六进

制(0x00))

%u 按无符号十进制整型(int)数据的实际长度输出。

%c 仅输出一个字符(char)

%s 输出结果是字符串,举例:printf(“%s\n”,“CHINA”);,输出结果:CHINA

%f 以小数形式输出一个实数(涵单双精度)。整数部分全部输出,小数部分输出6位。

%e 也可以写作%E,以指数形式输出一个实数(涵单双精度)。小数点前1位非0数字,并输出6

位小数。

%hd 短整型(short int/short)

%hhd 字符型的ASCII码,char数据对应的ASCII码的值,举例:char a = ‘A’;printf(“%hhd\n”,a);,输

出结果:65

%lf 双精度浮点型(double)

%ld 长整型(long int/long)

%lld 长长整型(long long int/long long)

%x 十六进制,但是十六进制的前缀0x不会打印出来,举例:printf(“%x,%#x\n”,198,198);,输

出结果:c6,0xc6

%#x 十六进制,并且十六进制的前缀0x也会打印出来,举例:0x05

%#o 八进制,并且八进制的前缀0也会打印出来,举例:05

%p 打印内存的地址

用简单的scanf函数输入数据

语法:

scanf("格式控制",地址列表);

注意: 不能传变量, 常量, 表达式, 只能传与之对应的内存地址(首地址)

举例

int a = 10; //定义了一个变量a
scanf("%d",&a);//&被称作取地址符,&a意思是获取a变量对应的内存地址(首地址)
printf("%p\n",a);//打印输出a的内存地址(首地址)

作用:将从键盘输出的值所占的存储单元中,存储单元有地址标识.

说明:

  • 格式控制: 含义等同于printf函数的格式控制, 说明输入的数据应该使用的格式, 但是格式控制中不能添加格式化外的字符

    • 地址列表: 是若干个地址组成的,可以是变量的地址或者字符串的首地址,&是取地址运算符,用于去除变量的地址.与格式化输出一样,在格式控制中,用于说明数据格式的格式说明符以%开头,后面紧跟具体的格式
      案例:

    • 需求: 从键盘输入整数给变量abc

    • 代码:

    • #include <stdio.h>int main()
      {a//定义三个变量abc,用来接受控制台的输入int a,b,c;// 加一个信息,这样效果好一点printf("请输入三个整数:\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);
      }

      在这里插入图片描述

  • 说明:

    • scanf函数中的"格式控制"后面应当是变量的地址.由取地址运算符&和变量名共同组成,

      不能仅是变量名:scanf(“%f%d”,&a,&b);

    • 如果"格式控制"中除了格式说明以外还有其他字符,则在输入数据是必须在对应位置输入与之相同的字符:

      scanf(“%d,%d”,&a,&b)

      从键盘录入的时候必须输入逗号:3,4

      scanf(“%d年%d月%d日”,&a,&b,&c)

      必须输入2025年2月10日

    • 用%c格式输入字符时,空格和转义字符(\n)都作为有效字符输入,应注意:

    scanf(“%c%c%c”,&a,&b&c);

    只有输入xyz

    也能得到a=x,b=y.c=z

    • 在输入数值型数据(整型)

复杂的输入与输出

按指定格式输出数据的宽度,小数位数,上下行数据按小数点对齐,用八进制,十六进制输出等

输出数据格式的控制
整型格式说明符
  • 十进制形式(0~9)
    在这里插入图片描述

  • 八进制形式(0~7)

    在这里插入图片描述

  • 十六进制形式(0~F)
    在这里插入图片描述

m表示输出整型数据所占总宽度(即列数),其中

  1. 当实际数据的位数不到m位时,数据前面将用空格填满

  2. 若实际数据的位数大于等于m位时,则以数据的实际位数为准进行输出

    一个int整型也可以用%u输出,反之一个unsigned整数也可以用%d,%o,%x格式输出,按相互复制的规则处理

在这里插入图片描述

字符型格式说明符
  • 字符型
    在这里插入图片描述

  • 字符串型

    在C语言中,是支持字符串常量的,但是不支持字符串变量.
    在这里插入图片描述

    注意:因笔记中♦代替空格

    一个整数,只要其值在0~255范围内,也可以用%c格式按其字符形式输出.这里0-127对应ASCII码

    在输出前,系统会自动将整数作为ascii码转为相应的字符,反之也成立

​ 案例:

  • 要求:字符串输出

  • 代码

    #include <stdio.h>int main ()
    {printf("%3s,%7.2s,%-5.3s,%.4s\n","CHINA","CHINA","CHINA","CHINA")
    }
    
    • 运行结果

      CHINA,-----CH,CHI--,CHIN

    浮点型格式说明符
  • 浮点型格式分为三种形式

    • 十进制形式:%m.nf或者%-m.nf
    • 指数形式:%m.ne或者%-m.ne
    • %g或者%G形式,根据数值的大小 自动选择%f或者%e中宽度较短的一种格式,不输出无意义的0

​ 解释:

​ 在输出浮点型数据时,格式说明符中的m表示整个数据所占的列宽,n表示小数点后面所占的位数(保留的小数位)

​ 如果在小数点后取n位后,所规定的数据宽m不够输出数据前面的整数部分(包括小数点),则按实际 的位数进行输出

​ 在C语言中,用于输出单精度浮点型与双精度浮点型数据格式说明符是一样的

案例:

代码

#include <stdio.h>int main()
{float f = 123.456printf("%8.2f,%-8.2f,%8.6f,%8.2e,%g\n",f,f,f,f,f")
}

结果:

_ _123.46, 123.46- - , 123.45601, 1.2e+02, 123.456

案例:

在这里插入图片描述

浮点型格式说明符
  • 单精度浮点型: %f或者%e

  • 双 精度浮点型: %lf

    可见:

    ① 与输出不同,输入时无论是单精度还是双精度浮点型,都不能用m.n来指定输出的宽度和小数点后的位数

    ②可以指定输入数据所占的列数,系统自动按他截取所需数据,如scanf(“%3d%3d”,&a,&b);当输入1234567时,a得到123,b得到456,多余的7无用

    ③若在%后有一个*和一个数字,表示跳过他指定的列数,如:

    scanf("%2d%*3d%3d,&a,&b")当输入12345678时,a得到12,%*3d表示跳过3列,b得到678

案例:

#include <stdio.h>int main(){int a,b;scanf("%3d%3d",&a,&b);//}

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

DeepSeek训练成本与技术揭秘

引言&#xff1a;在当今人工智能蓬勃发展的时代&#xff0c;DeepSeek 宛如一颗耀眼的新星&#xff0c;突然闯入大众视野&#xff0c;引发了全球范围内的热烈讨论。从其惊人的低成本训练模式&#xff0c;到高性能的模型表现&#xff0c;无一不让业界为之侧目。它打破了传统认知&…

数组与指针1

1. 数组名的理解 1.1 数组名是数组首元素的地址 int arr[10] {1,2,3,4,5,6,7,8,9,10};int *p &arr[0]; 这里我们使用 &arr[0] 的方式拿到了数组第一个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;而且是数组首元素的地址。如下&#xff1a; 1.2…

Axure原型图怎么通过链接共享

一、进入Axure 二、点击共享 三、弹出下面弹框&#xff0c;点击发布就可以了 发布成功后&#xff0c;会展示链接&#xff0c;复制即可共享给他人 四、发布失败可能的原因 Axure未更新&#xff0c;首页菜单栏点击帮助选择Axure更新&#xff0c;完成更新重复以上步骤即可

软件模拟I2C案例(寄存器实现)

引言 在经过前面对I2C基础知识的理解&#xff0c;对支持I2C通讯的EEPROM芯片M24C02的简单介绍以及涉及到的时序操作做了整理。接下来&#xff0c;我们就正式进入该案例的实现环节了。本次案例是基于寄存器开发方式通过软件模拟I2C通讯协议&#xff0c;然后去实现相关的需求。 阅…

脚手架开发【实战教程】prompts + fs-extra

创建项目 新建文件夹 mycli_demo 在文件夹 mycli_demo 内新建文件 package.json {"name": "mycli_demo","version": "1.0.0","bin": {"mycli": "index.js"},"author": "","l…

【大模型】DeepSeek-V3技术报告总结

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习DeepSeek相关知识的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于DeepSeek官方技术报告进行的&#xff0c;每个知识点的…

只需三步!5分钟本地部署deep seek——MAC环境

MAC本地部署deep seek 第一步:下载Ollama第二步:下载deepseek-r1模型第三步&#xff1a;安装谷歌浏览器插件 第一步:下载Ollama 打开此网址&#xff1a;https://ollama.com/&#xff0c;点击下载即可&#xff0c;如果网络比较慢可使用文末百度网盘链接 注&#xff1a;Ollama是…

力扣hot100刷题第一天

哈希 1. 两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。你可以按任意…

Linux(CentOS)安装 Nginx

CentOS版本&#xff1a;CentOS 7 Nginx版本&#xff1a;1.24.0 两种安装方式&#xff1a; 一、通过 yum 安装&#xff0c;最简单&#xff0c;一键安装&#xff0c;全程无忧。 二、通过编译源码包安装&#xff0c;需具备配置相关操作。 最后附&#xff1a;设置 Nginx 服务开…

项目6:基于大数据校园一卡通数据分析和可视化

1、项目简介 本项目是基于大数据的清华校园卡数据分析系统&#xff0c;通过Hadoop&#xff0c;spark等技术处理校园卡交易、卡号和商户信息数据。系统实现消费类别、男女消费差异、学院消费排行和年级对比等分析&#xff0c;并通过Web后端和可视化前端展示结果。项目运行便捷&…

Django项目中创建app并快速上手(pycharm Windows)

1.打开终端 我选择的是第二个 2.运行命令 python manage.py startapp 名称 例如&#xff1a; python manage.py startapp app01 回车&#xff0c;等待一下&#xff0c;出现app01的文件夹说明创建成功 3.快速上手 1.app注册 增加一行 "app01.apps.App01Config"&#…

使用Docker + Ollama在Ubuntu中部署deepseek

1、安装docker 这里建议用docker来部署&#xff0c;方便简单 安装教程需要自己找详细的&#xff0c;会用到跳过 如果你没有安装 Docker&#xff0c;可以按照以下步骤安装&#xff1a; sudo apt update sudo apt install apt-transport-https ca-certificates curl software-p…

信创领域的PostgreSQL管理员认证

信创产业&#xff0c;全称为信息技术应用创新产业&#xff0c;是中国为应对国际技术竞争、保障信息安全、实现科技自立而重点发展的战略性新兴产业。其核心目标是通过自主研发和生态构建&#xff0c;逐步替代国外信息技术产品&#xff0c;形成自主可控的国产化信息技术体系。 发…

jemalloc的malloc案例来分析GOT表和PLT表有关流程

一、背景 在之前的博客 跟踪jemalloc 5.3.0的第一次malloc的源头原因及jemalloc相关初始化细节拓展-CSDN博客 里&#xff0c;我们分析了在preload jemalloc的库之后&#xff0c;main之前的一次malloc分配&#xff08;分配72704字节&#xff09;的源头原因并做了jemalloc的初始…

Centos Ollama + Deepseek-r1+Chatbox运行环境搭建

Centos Ollama Deepseek-r1Chatbox运行环境搭建 内容介绍下载ollama在Ollama运行DeepSeek-r1模型使用chatbox连接ollama api 内容介绍 你好&#xff01; 这篇文章简单讲述一下如何在linux环境搭建 Ollama Deepseek-r1。并在本地安装的Chatbox中进行远程调用 下载ollama 登…

使用sunshine和moonlight串流时的音频输出问题

设备&#xff1a;电脑和平板串流&#xff0c;把平板当副屏使用 1.如果启用安装steam音频驱动程序&#xff0c;则平板有声&#xff0c;电脑无声&#xff0c;在moonlight端可以设置平板和电脑同时发声&#xff0c;但是有点卡 2.只想电脑发声&#xff0c;平板无声 禁用安装steam…

微信小程序案例2——天气微信小程序(学会绑定数据)

文章目录 一、项目步骤1 创建一个weather项目2 进入index.wxml、index.js、index.wxss文件,清空所有内容,进入App.json,修改导航栏标题为“中国天气网”。3进入index.wxml,进行当天天气情况的界面布局,包括温度、最低温、最高温、天气情况、城市、星期、风行情况,代码如下…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤&#xff0c;无需本地部署模型&#xff0c;直接通过官网连接使用&#xff1a;1. 下载并安装OfficeAI插件 &#xff08;1&#xff09;访问OfficeAI插件下载地址&#xff1a;OfficeAI助手 - 免费办公智能AI助手, AI写作&#xff0c;下载…

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件&#xff0c;它们执行的是基本的逻辑运算。通过这些基本运算&#xff0c;可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门&#xff08;AND&#xff09;、或门&#xff08;OR&#xff09;、非门&#xff08;NOT&#xff09;、异或门…

哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测

哪吒闹海&#xff01;SCI算法分解组合四模型原创对比首发&#xff01;SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海&#xff01;SCI算法分解组合四模型原创对比首发&#xff01;SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…