【C语言】unsigned无符号类型运用的两个实例
@[toc] 前排提醒😂本篇博客是对下一篇博客《char类型在内存中的存放》的拓展 并非对unsigned类型的详解! 示例1123456789#include <stdio.h>int main(){ int i=-20; unsigned int j=10; printf("%d\n",i+j); return 0; } 当有符号类型和无符号类型相加的时候,编译器是怎么处理的呢? 12310000000 00000000 00000000 00010100 -20的原码11111111 11111111 11111111 11 ...
【C语言】整型数据在内存中的存储(详解)
[toc] 数据类型我们知道,C语言中有很多不同的数据类型 在cppreference.com网站上可以找到C语言中的不同类型【链接】 先来认识一个不那么常见的类型 布尔类型C99中引入了布尔类型 _Bool实质:把1和0变成ture和false 1234567891011#include<stdbool.h>int main(){ _Bool flag = true; if(flag) { printf("hehe\n"); } return 0;} 代码的效果如下: 因为布尔类型和以1-0来判断正误的作用是相 ...
【C语言】整型提升和算术转换
[toc] 整型提升要想知道什么是整型提升,那就要从表达式求值说起 表达式求值 表 达 式 求 值 的 顺 序 一 部 分 是 由 操 作 符 的 优 先 级 和 结 合 性 决 定 同 样,有 些 表 达 式 的 操 作 数 在 求 值 的 过 程 中 可 能 需 要 转 换 为 其 他 类 型 什么是表达式? 举个最简单的例子 12345678int main(){ int a=3; int b=5; int c = a + b * 7; //c的式子即为表达式 return 0;} 而C的整个式子就是一个表达式求值 在这之中,参与计算的两个变量以及结果变量都是i ...
【C语言】剔除最大最小值后,计算数组元素的平均值
双11也不能阻挡我学习的心! [TOC] 问题引入 题目内容: 定义一个含10个整型元素的一维数组,从键盘上输入10个元素值,求去掉最大值和最小值之后的元素平均值. 输入格式: 用循环控制依次输入10个元素值,scanf语句中的格式控制串为: “%d” 输出格式: 输出平均值, printf中的格式控制串为 “%lf\n” 输入样例: 12 3 4 5 6 2 4 6 4 3 输出样例: 13.833333 理解1一般人看到这种题目,下意识会认为是去掉一个最大值一个最小值,再计算数组其他元素的最大值 毕竟很多体育赛事都是这么计算选手的得分的 实际上这道题并不是这么要求的,这点我们后 ...
【C语言】如何将输入的数字逆序打印
这个问题是我在做学校的作业时候看到的。只隐约有印象讲过,但是忘记了怎么操作。听同学的点通才回想起来,特此写个博客留记 [toc] 逆序打印目的:输入“789”,打印“987” 注:本博客的数字逆序只涉及 十进制 代码实现有两种方式:1.利用if语句进行大小判断,直到选出从大到小的数字排序这个方法十分复杂,稍不留意就会弄错,所以在实际应用中不推荐这样操作这里就不赘述具体代码了。(才不是懒,压根没试过)2.使用%10的方法直接打印代码如下: 123456789101112#include <stdio.h>int main(){ int a = 0; scanf(& ...
【C语言】童年经典游戏-三字棋
@toc 问题引入 - 什么是三子棋?想必大家儿时都玩过:#字棋 如图,即一个3x3的格子,玩家需要在横、竖、斜三条线上布下自己的棋子 先连成一条线上3个棋子的玩家获胜 如果格子填满后还未有胜者,即为平局 今天就让我们用c语言代码来完成一个基础的三子棋小游戏 涉及知识点: 二维数组、循环语句、自定义函数、自定义头文件 关联博客:扫雷游戏 自定义头文件本次三子棋代码实现中,我们需要使用到自定义头文件 使用自定义函数前,需要先对函数进行声明 头文件就是一堆声明的集合 问:为什么不把函数声明直接main函数前面? 答:因为这样更方便团队进行同一个项目的分工制作 如何创建自定义头文件? ...
【C语言】用递归和非递归,求第n个斐波那契数
[toc] 问题引入 - 什么是斐波那契数列?斐波那契数列中,第n项为n-1和n-2项之和 1,1,2,3,5,8,13,21,34,55…… 这个数列非常经典,经常用于编程语言初学者的练习 接下来让我们用非递归和递归两种方式来实现这个数列 并了解两种方法的优缺点! 1.非递归方法(迭代)什么是迭代? 迭代其实和循环的意义差不多(个人理解) 我们计算斐波那契数列的时候,需要从第一项和第二项1、1开始计算 没后一项数字都是前两项数字之和 这样我们就可以利用循环,从第一项开始不断相加,再使其中一个加数等于得到的和 以此迭代,就能得到我们需要的第n个数字 代码实现1234567891011 ...
【leetcode】001.两数之和(C语言,超详细)
这是初学C时候写的题解,可能有思维漏洞,后面重新刷题的时候会更改! PS:已重新更正并添加了C++的哈希解法 [toc] 1 题目来源两数之和 leetcode-001 如下图所示 右侧给出了题目的基本模板 1234567/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){} 2 题目要求做题之前,我们需要梳理出题目的各项要 ...
【C语言】如何判断素数
如何判断素数 题目要求:输出100-200的素数 首先我们要知道什么是素数(质数),以防有人忘记(比如刚学开始学c的我就忘记了) 素数(质数)只能被1和它自己整除 7只能被1和7整除,是素数 9能被3整除,不是素数 方法1—试除法12345678910111213141516171819202122232425#include<stdio.h>int main(){ int i=0; int count=0; for(i=100;i<=200;i++) { int j=0; for(j=2;j& ...
【C语言】验证哥德巴赫猜想
问题来源这是学校的一个作业,原题如下 题目先给出了哥德巴赫猜想的背景知识(我还真不知道) 2000以内的正偶数都能分解成两个质数(素数)之和 题目要求下面来梳理一下题目的要求: 输出样式为a=b+c,使用%4d=%4d+%4d输出 每行输出4个,每行最后一个输出无空格 每个偶数只需要一个结果即可(后续较大的偶数有很多种解) 弄懂了题目要求,下面就来一步一步写代码 如何判断素数?在上篇博客里面提到了如何判断素数==>【链接】,这里不再赘述 我们需要搞定的是判断是那两个素数b、c相加等于我们需要的那个数a 因为需要多次判断,这里我们使用自定义 ...