C程序设计(第五版)

news2024/9/19 10:35:31

文章目录

  • 前言
  • 第3章 顺序程序设计
  • 第4章 选择结构程序设计c
  • 第5章 循环程序设计
  • 第6章 利用数组处理批量数据
  • 第7章 用函数实现模块化程序设计
  • 第8章 善于利用指针
  • 第9章 用户建立数据类型
    • 结构体
    • 字节对齐
  • 第10章 对文件的输入输出

前言

鉴于写CSDN博客一篇一篇查找比较麻烦,所以特此把这些按照分类别成一个目录,后面把这些问题、知识点写到相关目录的下面,根据目录查找,复习,这个C语言系列就写到这篇上面了。后面如果写得太多,一篇博客写不完就把链接放到下面查找。

第3章 顺序程序设计

  • 输入输出
    • 输入输出语句属于C语言嘛?不是,C语言本身不提供输入输出语句,而我们常见的scanf和printf是计算机属于IO接口这块,与硬件打交道的部分,这些函数由软件公司根据IO接口一系列标准编辑成一些具有功能的文件完成,C语言编辑器直接调用即可。(个人理解)
    • C语言中,即我们编写的源程序是怎么调用这些输入输出函数的?头文件#include<stdio.h>,std:standard标准,io:io接口,h:head files头文件。
    • 调用的两种区别:有#include<stdio.h>和#include"stdio.h"两种方式。第一种是由远到近的标准方式,第二种是有近到远的方式。这里的远指的是C编译系统的目录,就是放这些头文件的目录地方,近就是我们写源头程序的目录,即用户当前目录。
    • 计算机是方便人设计的,而与计算机交互中,最明显的就是视觉方面,在输入时我们希望以我们理解的方式输入,输出时以我们理解的方式输出,当然不能为所欲为,想怎么输出就怎么输出,这就要结合计算机能给你呈现什么?而计算机可以给你呈现的是我可以显示这个数据的大小,和多少进制,这就是输入输出格式。比如%d,这就是我们希望计算机用十进制整数格式输出,如果我们想让数据显示的范围更大一些,就用%f,这个规定显示更大一些,而且也包含小数。比如ASCII码中包含了写英文用到的符号这些,而这些是用二进制存在计算机里面的,如果我们想把这些二进制对应的符号输出来,就可以使用%c,单字符输出,如果字符比较多考虑%s,字符串输出。
    • 试一下%f小数的极限?一般实数的整数部分全部输出,小数部分只输出6位。所以在%m.nf中,精确度n>=6位是没有意义的。
      在这里插入图片描述
    • %f:%附加符,修饰符,起修饰补充声明的意思,f以小数形式输出。%f就是我(计算机)提前你说一下或者声明一下哈,我要用小数输出。
    • 键入问题,在刷题目的时候,有一道题目要求用户键入的正确格式,我选择了"a b c"(a空格b空格c,enter)结果是错误的,它告诉了我正确的答案应该如下输入才对。于是我试了一番,结果。。。。
#include <stdio.h>
int main(int argc, char **argv) {
    double a ,b ,c;
    scanf("%lf,%lf,%lf",&a,&b,&c);
	printf("%f,%f,%f",a,b,c);
}

在这里插入图片描述
后来我发现是我理解错误了,它这句话是在告诉我第一个是a的位置,所以用“a=”表示,第二个是b的位置,所以用“b=”表示,第三个是c的位置,所以用“c=”表示。而中间用“,”逗号隔开,表示第一个数据的结束,第二个数据的开始,用来表示这三个变量的分界点,就与定义的一一对应上了,然后enter键入,代表我确定是这个三个数字。
在这里插入图片描述

    • putchar( c),c可以是字符常量,整型常量,字符变量,或者整型变量。提到字符,这就得从计算机的源头说起,最常见到得就是英语文章,里面涉及英语单词,标点符号,除此之外还有其他方面用到得字符符号,把这些在各个领域常用到得符号集合在一起,存储在计算机里,方便使用计算机调用,这些符合的集合有个专门的名字,叫做ASCII码,它的范围用十进制表示是0~255(参考本书)。而putchar( c)这个字符输出函数就是专门用来显示这些字符的,而把一个整型赋值给c的时候,就是告诉计算机在ASCII码中找到这个整型数值,显示出与它对应的符号,当然,如果这个整型值不在ASCII码中,那就不知道什么了。这里值得注意的是如果我们要写一个字符,那怎么知道它是字符还是变量呢?为了区别,字符就该写成’a’,这个就是表示字母a,但是如果写成a,那就表示具有多大变量
      在这里插入图片描述
    • getchar( c)是字符输入函数。

第4章 选择结构程序设计c

第5章 循环程序设计

#include <stdio.h>
int main(int argc, char **argv) {
    int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
    while(i++ < 7)if(p[i]%2) j+= p[i];
	printf("%d",j);
}
j=//45,这个函数的作用是数组中的奇数之和,因为经过i++判断之后i++忽略掉了第0个元素11,直接从第2个元素13开始了。


第6章 利用数组处理批量数据

char c[3][3]={"a","bc","def"};矩阵 c 存储如下:
a b c
d e f
char c[3][3] = {"a", "bc", "def"},矩阵 c 存储如下:
a  \0 \0
b  c  \0
d  e  f

第7章 用函数实现模块化程序设计

第8章 善于利用指针

第9章 用户建立数据类型

结构体

struct sk{
    int a;
    float b;
}data, *p = &data;1)(*p).data.a ?
(2(*p).a?
(3)p->data.a ?
(4)p.data.a ?

(*p).data.a:这个表达式尝试使用 (*p) 运算符先解引用指针 p,然后再使用成员访问运算符 . 访问 data 字段,最后使用 .a 访问结构体 data 中的成员 a。然而,data 结构体本身并没有名为 data 的字段,因此这个表达式是错误的。

(*p).a:这个表达式也使用 (*p) 运算符先解引用指针 p,然后使用成员访问运算符 . 访问 a 字段。这是正确的方法之一,用于访问结构体 data 中的成员 a。

p->data.a:这个表达式使用箭头运算符 -> 直接从指针 p 中访问结构体 data 中的成员 a。箭头运算符会自动进行指针解引用和成员访问操作。因此,这也是正确的方法之一,用于访问结构体 data 中的成员 a。

p.data.a:这个表达式是错误的。因为 p 是一个指针,使用点运算符 . 来访问结构体成员需要对指针进行解引用。这里应改为 (*p).a 或 p->a 来访问结构体 data 中的成员 a。

正确的两种方法是 (*p).ap->a。这两个表达式都能正确访问结构体 data 中的成员 a。



字节对齐

点击跳转详见博主棉花糖超人【C上分之路】第八篇:结构体声明定义、结构体数组以及字节对齐
1、按一个字节对齐;
2、按编译器默认进行对齐;
3、字节对齐规则:
(1)结构体内部任何K字节的基本对象相对于结构体首地址的偏移,必须是K的整数倍
(2)结构体变量的首地址能够被其最宽基本类型成员的大小所整除
(3)结构体的总大小为结构体最宽基本类型成员大小的整数倍

struct stu{
    union{
        char a[5];
        int b[2];
    }_class;
    
    char c[8];
    float d;
}lk;int2字节,char 1 float 4 ,Find  sizeof(lk)?

根据结构体内存对齐的规则,对于这个结构体的大小 sizeof(struct stu) 的计算如下:

char a[5] 占用 5 个字节。

int b[2] 占用 2 个 int类型大小的字节,因为 int 在题中定义为 2 个字节大小,所以 int b[2] 总共占用 4 个字节。

char c[8] 占用 8 个字节。

float d 占用 4 个字节。

所以,这个结构体的总大小为 5 + 4 + 8 + 4 = 21 个字节,即 sizeof(struct stu) 的值为 21



第10章 对文件的输入输出

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

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

相关文章

day55_springmvc

今日内容 零、 复习昨日 零、 复习昨日 1 maven项目编译后代码在target 2 发现代码都没有错,该写的都有,但是已启动服务器404,查看target,如果编译会后资源不全面,那就删除重新编译 3 重新看一下,如何使用mavne创建javaweb项目 一、参数绑定 【重点】 所谓参数绑定,就是前端发请…

【GPT LLM】跟着论文学习gpt

GPT1开山之作&#xff1a;Improving language understanding by generative pre-training 本文提出了gpt1&#xff0c;即使用无标签的数据对模型先进行训练&#xff0c;让模型学习能够适应各个任务的通用表示&#xff1b;后使用小部分 task-aware的数据对模型进行微调&#xff…

csdn编辑

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【tensorflow】连续输入+离散输入的神经网络模型训练代码

【tensorflow】连续输入离散输入的神经网络模型训练代码 离散输入的转化问题 构造词典 创建离散数据、转化字典索引、创建连续数据 创建离散输入连续输入模型 训练输出 全部代码 - 复制即用 查看本系列三种模型写法&#xff1a;   【tensorflow】连续输入的线性回归模型训…

基于知识图谱的电影推荐系统——Neo4jPython

文章目录 1. 数据解下载与配置2. 将处理好的数据导入数据库中3. 执行项目 1. 数据解下载与配置 选择TMDB电影数据集&#xff0c;Netflix Prize 数据集下载。 也可直接从这里下载&#xff1a;链接: https://pan.baidu.com/s/1l6wjwcUzy5G_dIlVDbCkpw 提取码: pkq6 。 执行prep…

【AI】金融FinGPT模型

金融FinGPT模型开源&#xff0c;对标BloombergGPT&#xff0c;训练参数可从61.7亿减少为367万&#xff0c;可预测股价 继Bloomberg提出了500亿参数的BloombergGPT&#xff0c;GPT在金融领域的应用受到了广泛关注&#xff0c;但BloombergGPT是一个非开源的模型&#xff0c;而且…

【ESP32之旅】U8g2 在线仿真和UI调试

前言 几乎每个玩屏幕的电子DIYer都知道万能的屏幕驱动中间件u8g2库&#xff0c;这个库提供了强大的驱动适配和ui设计能力。但是官方没有一个好用的ui设计和仿真软件&#xff0c;在设计UI布局的时候对单片机频繁的烧录调试浪费了大量的时间。最近在论坛看到有一个第三方维护的在…

nginx映射后,公网通过域名无法访问到静态资源

今天发生一件奇怪的事情&#xff0c;首先是阿里云的数字DV证书中pgj.bw580.com和acc.bw580.com无缘无故的消失了&#xff0c; 接着查看https://pgj.bw580.com/css/chunk-ceb11154.aefc15d8.css&#xff0c;在跳板机中可以访问到该资源&#xff0c;但是通过外网能够访问。 通过防…

MySQL 中各种锁的详细介绍

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

P109认识和改造世界

认识世界的根本目的在于改造世界 认识和改造世界之间的辩证关系 感觉只喜欢考 必然和自由的辩证关系 人类创造历史的两个基本活动 &#xff1a; 认识和改造世界所以认识和改造世界的基础是实践 认识改造和三大界之间的联系 改造客观世界和改造主观世界之间的关系 认识世界…

台电x80HD 安装linux系统,可调电压电源供电,外网访问、3D打印klipper固件

一、系统安装 参照https://blog.csdn.net/gangtieren/article/details/102975027安装 安装过程遇到的问题&#xff1a; 1、试了 linux mint 21 、ubuntu20.04 、ubuntu22.04 都没有直接安装成功&#xff0c;u盘选择安装进入系统后一直黑屏&#xff0c;只有ubuntu18.04 选择后稍…

基于Eclipse+Java+Swing+Mysql实现学生成绩管理系统

基于EclipseJavaSwingMysql实现学生成绩管理系统 一、系统介绍二、功能展示1.登陆2.成绩浏览3.班级添加4.班级维护5.学生添加6、学生维护 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 学生&#xff1a;登陆、成绩浏览 管理员&#xff1a;登陆、班级添加、班级维…

多分支merge忽略文件合并

该文章已同步收录到我的博客网站&#xff0c;欢迎浏览我的博客网站&#xff0c;xhang’s blog 1. .gitattributes 文件的作用 .gitattributes 文件是 Git 版本控制系统中的一个配置文件&#xff0c;它用于指定 Git 如何处理文件的二进制数据&#xff0c;以及如何标识文件的类…

字节月薪23k软件测试工程师:必备的6大技能(建议收藏)

软件测试 随着软件开发行业的日益发展&#xff0c;岗位需求量和行业薪资都不断增长&#xff0c;想要入行的人也是越来越多&#xff0c;但不知道从哪里下手&#xff0c;今天&#xff0c;就给大家分享一下&#xff0c;软件测试行业都有哪些必会的方法和技术知识点&#xff0c;作…

夏天到了,给数据中心泼点“冷水”

气温上升&#xff0c;还有什么能比“工作没了”&#xff0c;更能让人一瞬间心里拔凉拔凉的呢&#xff1f; 这个“薪尽自然凉”的故事&#xff0c;就发生在数据中心。 前不久&#xff0c;某电商平台正在购物高峰期&#xff0c;结果IDC冷冻系统故障&#xff0c;机房设备温度快速升…

智能电动汽车充电桩系统及硬件电路研究 安科瑞 许敏

摘要&#xff1a;随着充电桩技术的发展&#xff0c;以及人们对电动汽车快速充电的需求&#xff0c;很多厂商开始对智能充电桩进行研究。以电动 汽车智能充电桩的发展现状为背景&#xff0c;进行了智能电动汽车充电桩系统硬件电路的研究。 关键词&#xff1a;充电桩&#xff1b…

文件转换工具类—基于jodconverter和pdfbox实现的可以自定义各类文件转换和水印

源码获取&#xff1a;原文地址 概览 需要依赖 <dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.6</version> </dependency> <dependency><groupId>or…

【MyBatis学习】占位符,sql注入问题,like模糊匹配等可能出现一定的问题,赶快与我一同去了解,避免入坑吧 ! ! !

前言: 大家好,我是良辰丫,今天还是我们的mybatis的学习,主要内容有两个占位符,sql注入问题,like模糊匹配,以及多表查询等,不断提升我们的编程能力,加油哈! ! !&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &#x1f4d6;所属专栏&…

MP地面站下载和回放日志

参考 https://ardupilot.org/dev/docs/common-downloading-and-analyzing-data-logs-in-mission-planner.html#common-downloading-and-analyzing-data-logs-in-mission-planner 下载日志 首先连接上飞控 然后在下图页面下载日志&#xff1a; 点击下图下载日志 下载的日志会…

在CentOS 7上安装Python 3.9

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen 在CentOS 7上安装Python 3.9 一. 更新系统软件包二. 安装必要的软件包和依赖项三. 下载Python 3.9四. 解压和编译源代码五. 安装Python 3.9六. 验证安装 一. 更…