
C语言学习
CXYhh121
这个作者很懒,什么都没留下…
展开
-
【游戏】—— 猜数字游戏。
#include<stdio.h>#include<stdlib.h>#include<time.h>void game(){int random_num = rand() % 100 + 1;int num=0;while (1){printf(“请输入所猜的数>:”);scanf("%d", &num);if (num &...原创 2018-10-22 19:30:28 · 147 阅读 · 0 评论 -
【游戏】—— 设计扫雷小游戏的程序代码
头文件game.h#define _CRT_SECURE_NO_WARNINGS#ifndef GAME_H#define GAME_H#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;time.h&amp;amp;gt;#include &amp;amp;lt;string.h&amp;amp;gt;#include &原创 2018-10-22 19:24:57 · 523 阅读 · 0 评论 -
【游戏】—— 设计井字棋的程序完整代码
头文件game.h#define _CRT_SECURE_NO_WARNINGS#ifndef GAME_H#define GAME_H#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;time.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;stdlib.h&amp;原创 2018-10-22 19:21:56 · 2854 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。
#include<stdio.h>#define P 1 //汽水的单价#define N 2 //换一瓶汽水所需的空瓶个数//SodaConvert函数返回用空瓶换来的汽水个数int SodaConvert(int x){int ret = x / N;//空瓶兑换的汽水个数int empty = x / N + x % N;//兑换的汽水和剩下的空瓶个数之和if (...原创 2018-11-07 16:58:00 · 123 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换。
//1. 给定两个整形变量的值,将两个值的内容进行交换。int main(){int a,b,c;scanf("%d %d “,&a,&b);c=a;a=b;b=c;printf(”%d %d “,a,b);return 0;}//2. 不允许创建临时变量,交换两个数的内容(附加题)int main(){int a,b;scanf(”%d %d",&a...原创 2018-10-22 19:37:53 · 135 阅读 · 0 评论 -
将三个数按从大到小输出。
int main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);int t;if(a<b){t=a;a=b;b=t; }if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf("%d %d %d",a,b,c);return 0;}...原创 2018-10-22 19:36:19 · 161 阅读 · 0 评论 -
模拟三次密码输入的场景。
最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。int main(){int i = 0;char psw[10] = “”;while (i <= 3){printf(“please input:”);scanf("%s", psw);if (0 == strcmp(psw, “password”)){...原创 2018-10-22 19:33:09 · 213 阅读 · 0 评论 -
折半查找
在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)int main(){int num=0;int key = 7;int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 };int left = 0;int right = sizeof(arr) / sizeof(arr[0])-1;while (left <= ...原创 2018-10-22 19:32:05 · 117 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
void swap(int arr1[]; int arr2[]; int leng){int i = 0;for (i = 0; i < leng; i++){int t = arr1[i];arr1[i] = arr2[i];arr2[i] = t;}}int main(){int i = 0;int arr1[5] = { 1, 2, 3, 4, 5 };i...原创 2018-10-22 19:29:31 · 108 阅读 · 0 评论 -
求10 个整数中最大值。
int main(){int arr[10]={0};int size=sizeof(arr)/sizeof(arr[0]);for(int i=0;i<size;i++){scanf("%d “,&arr[i]);}int max=arr[0];for(int i=1;i<size;i++){if(arr[i]>max)max=arr[i]; ...原创 2018-10-22 19:37:00 · 144 阅读 · 0 评论 -
【C语言】—— 实现一个通讯录系统
文件型通讯录可创建一个文件保存输入的通讯录信息,重新执行程序时可自动加载通讯录的头文件Contact.h#define _CRT_SECURE_NO_WARNINGS#include<string.h>`#include<assert.h>#include<stdio.h>...原创 2018-11-28 22:14:32 · 465 阅读 · 0 评论 -
【C语言】—— C语言的特点及关键字
一、C语言的一般特点1、简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。2、运算符丰富C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算...原创 2019-02-15 16:27:56 · 4074 阅读 · 0 评论 -
【C语言】—— 《C和指针》学习笔记4
指针一、内存和地址内存中的每个位置由独一无二的地址标识内存中的每个位置都包含一个值变量名字与内存位置的关联并不是硬件提供的,它是由编译器为我们实现的。硬件仍然通过地址访问内存位置二、值和类型 int a = 112,b = -1; float c =3.14; int *d = &a; float *e = &...原创 2019-04-04 09:12:32 · 137 阅读 · 0 评论 -
【C语言】—— 《C和指针》学习笔记3
操作符算数操作符+ , - , * , / , %注:除%之外,其余操作符既适用于浮点类型也适用于整形。位操作符& , | , ^ (AND,OR,XOR)位的操纵将指定的二进制位设置为1value = value | 1 << bit_number; value |= 1 << bit_number;将制定的二进制位清01 ,即求补...原创 2019-03-22 16:28:55 · 159 阅读 · 0 评论 -
【C语言】—— 位段
一、位段的定义位段的声明和结构体是类似的,有两个不同:1、位段的成员类型必须是:int、signed int、unsigned int 或 char。2、位段的成员后面有一个冒号和一个数字(数字表示的是该成员所占比特位的大小)。下面我们举个例子了解一下位段:struct A{ int _a : 2; int _b : 5; int _c : 10; int _d : 30;}...原创 2019-02-24 11:17:34 · 348 阅读 · 0 评论 -
【C语言】—— 计算机存储的大小端问题
一、大小端的定义我们先来看一下什么是大小端:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值...原创 2019-02-25 20:25:34 · 411 阅读 · 0 评论 -
【C语言】—— 指针与数组的理解和相关应用
1.理解数组指针指的是一个指向数组的指针int main(){int* p1[10];//p先与[10]结合说明p是一个数组,再与结合说明p是一个存了10个整形指针的数组int(p2)[10];//p先与结合,说明p是一个指针变量,//然后与[10]结合说明p是一个指向大小为10个整形变量的数组的数组指针int arr[10];int arr2[10];int(p)[10] = ...原创 2018-11-11 22:31:39 · 290 阅读 · 0 评论 -
【C语言】—— 全面深入理解指针(很全)
#define _CRT_SECURE_NO_WARNINGS 1#include&amp;lt;stdio.h&amp;gt;一级指针int main(){//字符型指针的一般使用/*char p = ‘w’;char pc = &amp;amp;p;pc = ‘w’;return 0;///字符型指针的另一种使用const char pstr = “hello bit”;printf(&quot;%s\...原创 2018-11-10 16:00:56 · 476 阅读 · 0 评论 -
不使用库函数实现字符串与数字相互转换
一、数字转换为字符串1.1 解题思路不使用库函数实现数字转换为字符串,此时必须借助ASCII码进行转换,我们知道字符‘0’与数字0直接ASCII码值相差48,要将对应数字转换为字符,只需加上字符‘0’即可,但是此时我们是要将一串数字转换为一个字符串,此时我们就需要借助一个数组来储存转换好的对应数组,之后输出即可。注:因为在转换数字时是从最低位开始转换的,因此存入数组中的字符顺序是颠倒的,因此...原创 2019-03-01 21:54:25 · 4799 阅读 · 1 评论 -
【C语言】—— 柔性数组
一、柔性数组的定义1、柔性数组的定义在c99中提到,在一个结构体中,结构体的最后一个元素可以是一个未知大小的数组,这个就叫做柔性数组成员。2、柔性数组表示 #include&lt;stdio.h&gt; struct S { int a; char arr[];//柔性数组 } //有些编译器支持这样书写柔性...原创 2019-03-05 18:55:32 · 4415 阅读 · 4 评论 -
模拟实现求字符串长度函数strlen
一、strlen函数的介绍1、使用格式size_t strlen ( const char * str );2、使用规则字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。参数指向的字符串必须要以 ‘\0’ 结束。注意函数的返回值为size_t,是无符号的( 易错 )3、使用举例#include <...原创 2019-02-26 20:41:22 · 3104 阅读 · 0 评论 -
模拟实现与字符串相关的函数(较全)
一、字符串拷贝函数strcpy//模拟实现strcpy,会将\0一起拷贝char* my_strcpy(char* dest,char* str){ char* start = dest; while (*str != '\0') { *dest++ = *str++; } *dest = *str; return start;}int main(){ char ...原创 2019-03-06 22:20:56 · 197 阅读 · 0 评论 -
【C语言】—— 《C和指针》学习笔记1
由于自己C语言基础不是很扎实,最近在学习 ==《C与指针》==所以最近可能会定期记录一下自己的学习心得和笔记。编译过程的几个阶段1、预处理器阶段主要工作是用实际值代替==#define指令定义的符号,读入#include==包含的文件内容,处理条件编译,以及去掉注释等。在Linux/Unix下源文件被处理为:main.i sort.i2、编译阶段主要工作是检查程序中存在的语...原创 2019-03-20 18:48:26 · 335 阅读 · 1 评论 -
【C语言】—— 《C和指针》学习笔记2
作用域代码作用域:任何在代码块的开始位置声明的标识符都具有代码作用域。文件作用域:任何在所有代码块之外声明的标识符均有文件作用域,该标识符从声明之处到所在源文件的结尾处均可被访问。原型作用域:只适用于在函数原型中声明的参数名。函数作用域:此类作用域很少被使用,希望大家最好不要使用该类作用域,它只适用于语句标签,语句标签用于goto语句。下面我们看段代码具体来了解一下几个常用到的作用域...原创 2019-03-21 17:12:42 · 169 阅读 · 0 评论 -
C/C++的数据类型范围
转载博客 https://www.cnblogs.com/bingcaihuang/archive/2011/07/14/2105959.html速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 6553...原创 2019-03-25 20:02:04 · 6836 阅读 · 1 评论 -
【C语言】—— 结构体内存对齐
一、存在内存对齐的原因1、平台原因不是所有硬件平台都能够访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因(主要原因)数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。这里我们举个例子说明一下注:内存对齐是以空间换时间的做法二、内存对...原创 2019-02-23 15:48:06 · 1562 阅读 · 0 评论