小朋友学C语言
海天一树
信息学奥赛研究。
展开
-
C语言实现贪食蛇游戏
//2020-6-18#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include <time.h>#include <windows.h>const int height = 20; //地图的高const int length = 20; //地图的长char Map[height][length];原创 2020-06-18 13:51:08 · 618 阅读 · 0 评论 -
小朋友学C语言(32):求圆周率
(一)圆周率简介圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 圆周率是一个无理数,即无限不循环小数。在日常生活中,通常都用3.14代表圆周率去进行近似计算。而用十位小数3.141592654便足以应付一般计算。即使是工程师或物理学家要进行较精密的计算,充其原创 2017-11-10 13:50:24 · 6279 阅读 · 0 评论 -
小朋友学C语言(30):局部变量和全局变量
(一)局部变量在某个函数或块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。下面是使用局部变量的实例。在这里,所有的变量 a、b 和 c 是 main() 函数的局部变量。 例1:#include <stdio.h>int main (){ /* 局部变量声明 */ int a, b; int c; /* 实际初始化 */原创 2017-10-24 20:30:24 · 373 阅读 · 0 评论 -
小朋友学C语言(29):switch case语句
switch case语句与if elseif语句类似,都是从多个选择条件里选取一个来执行。(一)先来看一个if elseif程序#include <stdio.h>int main() { int number; printf("Please input an integer between 1~7: "); scanf("%d", &number); printf原创 2017-10-24 20:30:06 · 591 阅读 · 0 评论 -
小朋友学C语言(28):指针
(一)内存地址#include <stdio.h>int main(){ int var1 = 20; printf("变量var1的值为:%d\n", var1); printf("变量var1的内存地址为:%p\n", &var1); return 0;}运行结果:变量var1的值为:20变量var1的内存地址为:0x7ffd7ed6060c这里20这个值是放原创 2017-10-24 20:29:47 · 339 阅读 · 0 评论 -
小朋友学C语言(27):选择排序
(一)基本原理(由小到大):如果有n个数,需要比较n-1轮: 第1轮,将n个数中最小的数与a[0]对换,当然若a[0]就是最小的数则不用对换。 第2轮,将a[1]到a[n-1]中最小的数与a[1]对换,当然若a[1]就是最小的数则不用对换。 …… 第n-1轮,将最后的两个数,即a[n-2]与a[n-1]比较,若a[n-2] > a[n-1],则对换。至此,排序完毕。(二)例子例1:a[] =原创 2017-10-24 20:29:27 · 309 阅读 · 0 评论 -
小朋友学C语言(26):冒泡排序
(一)基本原理(由小到大):将相邻两个数比较,将大的调到后头。如果有n个数,则要进行n-1趟比较。在第1趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。上图中有5个数,要进行5 - 1 = 4趟比较。 第1趟,要进行n - 1 = 4次两两比较; 第2趟,要进行5 - 2 = 3次两两比较; 第3趟,要进行5 - 3 = 2次两两比较; 第4趟,要进行5 - 4 = 1次两原创 2017-10-24 20:29:10 · 491 阅读 · 0 评论 -
小朋友学C语言(25):两数交换
(一)#include <stdio.h>int main(){ int a = 10; int b = 5; printf("Before swap: a = %d, b = %d\n", a, b); int temp = a; a = b; b = temp; printf("After swap: a = %d, b = %d\n",原创 2017-10-24 20:28:52 · 410 阅读 · 0 评论 -
小朋友学C语言(24):位运算符
位运算符有三个:“与(&)”、“或(|)”、“异或(^)”。在了解位运算符之前,请先复习逻辑运算符: 小朋友学C语言(12):逻辑运算符位运算,就是对应的bit参与运算,结果是整型数。 逻辑运算,是两个逻辑变量(0或1,非0都算做1)参与运行,结果是逻辑值(0或1)。(一)位运算符“与”(&)运算规则: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0例1:原创 2017-10-24 20:28:34 · 390 阅读 · 0 评论 -
小朋友学C语言(33):三目运算符
三目运算符(ternary operator),又称条件运算符、三元运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符。 三目运算符的形式为:<表达式1> ? <表达式2> : <表达式3>这里先对表达式1进行判断,假如表达式1为真,则执行表达式2;假如表达式1假,则执行表达3。例1:输入两个数,求最大的数#include <stdio.h>int main原创 2017-11-10 13:51:02 · 572 阅读 · 0 评论 -
小朋友学C语言(31):递归解决汉诺塔
题目:求1+2+3+……+98+99+100 (1)用数学方法求解 (2)编写C语言程序求解解: (1)数学方法S = 1+2+3+……+98+99+100 = (1+100) + (2+99) + (3+98) + …… + (49+52) + (50+51) = 101 * 50 = 5050(2)C语言编程 #include <stdio.h>int main(){原创 2017-10-26 21:08:44 · 523 阅读 · 0 评论 -
小朋友学C语言(1):安装Codeblocks编程工具
一、编译器编译器是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的工具。一个现代编译器的主要工作流程:源代码(source code) -->预处理器 (preprocessor) -->编译器 (compiler) -->目标代码 (object code) -->链接器 (linker) -->可执行程序 (executables)。高...原创 2019-06-03 12:02:42 · 1562 阅读 · 1 评论 -
小朋友学C语言(44):基本数据类型的大小和取值范围
一、单字节能表示的范围(一)无符号单字节一个字节有8位,取值范围为0000000011111111,化为十进制即为0255。所以无符号的一个字节可以表示的数字范围为0~255,共256个数。##(二)有符号单字节若有符号,则最高位表示符号位,0表示正号,1表示负号。能表示的正数的最大值为01111111,即十进制的127。能表示的负数的最小值不是11111111,而是10000000。10...原创 2019-01-21 21:09:24 · 1273 阅读 · 0 评论 -
小朋友学C语言(43):浮点数的深入分析
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷∞与非数值NaN),以及这些数值的“浮点数运算符”。IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比...原创 2019-01-15 23:39:57 · 1174 阅读 · 1 评论 -
小朋友学C语言(42):gets和fgets
一、gets()函数原型:char *gets(char *str);头文件:stdio.h例1#include <stdio.h>int main(){ char str[10]; gets(str); puts(str); return 0;}(1)在Windows系统中的运行结果hellohello(2)在Linux中...原创 2018-11-22 20:25:56 · 382 阅读 · 0 评论 -
小朋友学C语言(41):二级指针与多级指针
一、二级指针指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:int **p;当一个目标值被一个指针间接指向到另一个指针时...原创 2018-09-16 13:30:19 · 397 阅读 · 0 评论 -
小朋友学C语言(34):main函数的参数
C/C++中的main()函数,可以带形式参数,也可以不带形式参数。这两种形式分别为: 1)int main() 2)int main(int argc, char *argv[]) 或者 int main(int argc, char **argv) 因为main()函数通常是由操作系统调用的,所以平时写程序,基本上不用带参数。但是从学习的角度来看,了解一下参数也是有益处的。第一个参数,ar原创 2017-12-06 12:10:40 · 437 阅读 · 0 评论 -
小朋友学C语言(23):二进制与十进制之间的转换
在学本节之前,请先复习 小朋友学C语言(17):二进制一、二进制转换为十进制的C语言代码#include <stdio.h>#include <string.h>int binary2decimal(char str[]){ int sum = 0; int j = 1; int pos = strlen(str) - 1; for(; pos >= 0; pos原创 2017-10-24 20:28:15 · 19072 阅读 · 3 评论 -
小朋友学C语言(22):循环
C语言有三种循环方式,除了前面讲过的for循环外,还有while和do while两种形式。(一)while循环#include <stdio.h>int main(){ int i = 3; while(i > 0) { i--; printf("Excute loop! After decrementing, i = %d\n", i)原创 2017-10-24 20:27:51 · 438 阅读 · 0 评论 -
小朋友学C语言(21):字符串
在 C 语言中,字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。(一)下面是一个定义字符串的例子。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。char str[ ] = {'H', 'e', 'l', 'l', 'o', '\0'};但是在算字符串的长度时,最后的空字符‘\0’不算在内。验证程序:#include <stdio.h>#i原创 2017-10-24 20:27:23 · 330 阅读 · 0 评论 -
小朋友学C语言(9):a++与++a
(一)a++在C语言或其它语言中,++符号表示“自加”,就是变量在原来的基础上加1。 例1:a = 0;a++;则此时a的值为1。同样的道理,–表示”自减”。 例2:a = 100;a--;则此时a的值为99。注意,程序语言里没有”自乘”和”自除”的概念。验证程序:#include <stdio.h>int main(){ int a = 0; // 给a赋值 a++;原创 2017-10-20 19:00:13 · 627 阅读 · 0 评论 -
小朋友学C语言(8):条件判断
(一)if…else先动手编写一个程序#include <stdio.h>int main(){ int x = -1; if(x > 0) { printf("x is a positive number!\n"); } else { printf("x is not a positive number!\n");原创 2017-10-20 18:59:31 · 409 阅读 · 0 评论 -
小朋友学C语言(7):自定义函数
先动手编写程序:#include <stdio.h>int add(int x, int y){ int z = x + y; return z;}int main(){ int a = 1; int b = 2; int c = add(a, b); printf("c = %d\n", c); return 0;}运行结果:c = 3原创 2017-10-20 18:59:02 · 379 阅读 · 0 评论 -
小朋友学C语言(6):加法
先动手编写程序:#include <stdio.h>int main(){ int a = 1; int b = 2; int c = a + b; printf("sum is %d\n", c); return 0;}运行结果:sum is 3程序分析: 先定义一个整型变量a,把1赋值给a。 再定义一个整型变量b,把2赋值给b。 最后定义一个整型变原创 2017-10-20 18:58:22 · 399 阅读 · 0 评论 -
小朋友学C语言(5):常量和变量
先动手编写程序:#include <stdio.h>int main(){ int a = 1; printf("a = %d\n", a); a = 2; printf("a = %d\n", a); return 0;}运行结果:a = 1a = 2程序分析: int a = 1; 定义了一个整型变量a,把1赋值给a。注意,C语言中的等号表示赋值原创 2017-10-20 18:57:52 · 460 阅读 · 0 评论 -
小朋友学C语言(4):单精度浮点数与双精度浮点数
上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。单精度和双精度精确的范围不一样。计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。 稍大一点的单位是字节(Byte,简写为B)。 再大一级的是千字节(kilo Bytes),用k来表示。 再大一级的单位是兆字节(Mega Bytes),用M来表示。一张照片的大小通常为1~3M。 再大一级的单原创 2017-10-20 18:57:13 · 7261 阅读 · 0 评论 -
小朋友学C语言(3):整数、浮点数、字符
C语言的数据类型有整型、浮点型(就是小数)、字符、字符串、数组、结构体等。刚开始学的时候,不要一下子学太多。先学最基本的整型、浮点型和字符。对于学习程序来说,最重要的是动手操作。先编写程序:#include <stdio.h>int main(){ int a = 1; printf("a = %d\n", a); float b = 2.2; printf("b =原创 2017-10-20 18:56:16 · 869 阅读 · 0 评论 -
小朋友学C语言(10):for循环
先看程序:#include <stdio.h>int main(){ for(int i = 0; i < 5; i++) { printf("i = %d\n", i); } printf("Loop ended!\n"); return 0;}运行结果:i = 0i = 1i = 2i = 3i = 4Loop ended!fo原创 2017-10-20 19:01:34 · 1066 阅读 · 0 评论 -
小朋友学C语言(11):求1到100的和
题目:求1+2+3+……+98+99+100 (1)用数学方法求解 (2)编写C语言程序求解解: (1)数学方法S = 1+2+3+……+98+99+100 = (1+100) + (2+99) + (3+98) + …… + (49+52) + (50+51) = 101 * 50 = 5050(2)C语言编程 #include <stdio.h>int main(){原创 2017-10-22 11:02:43 · 6528 阅读 · 1 评论 -
小朋友学C语言(12):判断
(一)先动手编写一个程序:#include <stdio.h>int main(){ if(1) { printf("The condition is true!\n"); } return 0;}运行结果:The condition is true!再把1依次改为,2,5,100,-10,发现运行结果完全一样。 再改成if(0),此时发现没有运行原创 2017-10-22 11:03:24 · 449 阅读 · 0 评论 -
小朋友学C语言(20):数组
一、数组简介C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。原创 2017-10-22 11:08:01 · 487 阅读 · 0 评论 -
小朋友学C语言(19):字符和整数的关系
程序(一)#include <stdio.h>int main(){ char ch = 'A'; printf("%c\n", ch); printf("%d\n", ch); printf("********************\n"); int num = 66; printf("%c\n", num); printf("%d\n",原创 2017-10-22 11:07:26 · 1113 阅读 · 0 评论 -
小朋友学C语言(18):二进制
一、十进制与二进制我们日常所用到的计数方式,是十进制(数字用0,1,2,3,4,5,6,7,8,9这十个数字来表示)。 十进制的进位规则是”逢十进一”。 比如零、一、二、三、四、五、六、七、八、九都是用一位数来表示。再进一的话,是十。十无法用1位数来表示,所以要”进一”,用两位数来表示,即10。 19进一是二十,无法以1X来表示,所以得用20来表示。 99进一是一百,无法用9X来表示,所以得原创 2017-10-22 11:06:46 · 717 阅读 · 0 评论 -
小朋友学C语言(17):斐波那契数列的递归实现
什么是递归呢?先举个例子: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?”从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?’从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”这个例子里,故事内嵌套着故事,构成了递归。 动手编写程序:#include <stdio.h>int fibonacci(in原创 2017-10-22 11:06:12 · 489 阅读 · 0 评论 -
小朋友学C语言(16):斐波那契数列的非递归实现
一、斐波那契简介斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…….. 这个数列从第3项开始,每一项都等于前两项之和。二、非递归实现动手编写程序:#include <stdio.h>int fibonacci(原创 2017-10-22 11:05:43 · 727 阅读 · 0 评论 -
小朋友学C语言(15):“变量==常量”与“常量==变量”的区别
(一)编写程序#include <stdio.h>int main(){ int x = 10; if(x == 10) { printf("x equals 10\n"); } return 0;}运行结果:x equals 10(二)将x == 10改为10 == x#include <stdio.h>int main(){ i原创 2017-10-22 11:05:10 · 1067 阅读 · 0 评论 -
小朋友学C语言(14):分苹果(小学奥数题)
题目有两堆一样多的苹果,老师将第一堆苹果分给男生,每人4个,最后剩下6个。 老师又将第二堆苹果分给女生,每个5个,最后剩下5个。 已知男生比女生多1人。 求:女生有多少人?男生有多少人?苹果有多少个?解法(一)女生每人分5个苹果,最后剩下5个。假如女生的人数多1个(这样就跟男生数量一样多啦),那么苹果恰巧被分完。 这样问题就等价为: 一堆苹果,分给一组人。假如每个人分4个苹果,剩下6个苹果原创 2017-10-22 11:04:38 · 3322 阅读 · 0 评论 -
小朋友学C语言(13):逻辑运算符
逻辑运算符有三种,“&&”(逻辑与)、“||”(逻辑或)和“!”(逻辑非)(一)逻辑与&&“&&”相当于生活中说的“并且”,就是两个条件都同时成立的情况下“&&”的运算结果才为“真”。只要有一个条件不成立,则结果为“假”。 1 && 1 = 1 1 && 0 = 0 0 && 1 = 0 0 && 0 = 0验证程序:#include <stdio.h>int main(){ in原创 2017-10-22 11:03:56 · 468 阅读 · 0 评论 -
小朋友学C语言(1):Hello World
首先,需要一款C语言的编译器,可以使用在线编译器,也可以在本地安装编译器,比如Mac电脑可以安装Xcode,PC可以安装Dev C++。 若是第一次编写程序,建议使用在线编译器,推荐 菜鸟编译器编写第一个程序:Hello World!#include <stdio.h>int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n");原创 2017-10-20 18:52:31 · 3650 阅读 · 0 评论