![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机科学与技术
文章平均质量分 50
ffsiwei
这个作者很懒,什么都没留下…
展开
-
常用操作符的功能介绍
离学C语言的时间已经过去很久了,所以应用C语言某些操作符的用法有些生疏,为此总结一部分操作符的功能和用法: 操作符有算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符,逗号操作符这样几种。下面我就来分别介绍: 1、算术操作符 C语言中常用的算术操作符: + - * / %原创 2018-04-07 22:09:40 · 756 阅读 · 0 评论 -
循环语句结构
一、while循环 while(表达式) 循环语句; 用while语句实现简单的循环:int main(){ int i = 1; while (i <= 10) { printf("%d ", i); i++; } system("pause"); return 0;}...原创 2018-05-23 19:51:19 · 852 阅读 · 0 评论 -
数组基础知识
一、数组的创建和初始化 1、数组的创建,[]中的内容必须是常量,不能使用变量。 2、数组在创建的时候,如果不指定数组的大小就必须初始化,根据初始化的内容来确定数组的大小;如果数组确定了大小 可以初始化,也可以不初始化。 看下面你的一段代码:int main(){ char arr1[] = "abc"; char arr2[] = "abc"; i...原创 2018-05-23 20:04:07 · 1077 阅读 · 0 评论 -
简单函数
一、函数的概念 函数在维基百科被叫做子程序,它负责的某部分特定功能的代码,相较于其他代码,具备相对的独立性。 函数分为库函数(完成指定的功能)和自定义函数(实现自己想要的逻辑 。 二、函数的参数 实际参数和形式参数: 实际参数:真实传给函数的参数,叫实参。可以为常量、变量、表达式、函数。函数的参数无论是何种类型的量,在进行函数调用时,它们必须要有确定的值,以便于把这些值 传给形参。 ...原创 2018-05-23 20:11:33 · 4703 阅读 · 0 评论 -
根据某些条件,排出名次
问题描述: 1. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 代码:int main(){ int thisman; for (thisman...原创 2018-05-23 20:16:10 · 348 阅读 · 0 评论 -
验证程序里{}是否成对出现
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。 分析:编写这个程序的思路是,当‘{’出现时计数器加1,当‘}’出现时,计数器减1,最后判断,当计数器为0时,{}是成对出现的,但是一定要注意的是当‘}’出现并且计数器为0时,一定是不匹配的。 代码如下:int main(){ int ch =...原创 2018-05-23 20:23:10 · 219 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222int main(){ int n = 0; int num = 0; int sum = 0; int ret = 0; scanf("%d%d", &amp;num,&amp;n);//num表示基数,n表示最高位...原创 2018-05-24 21:38:37 · 868 阅读 · 2 评论 -
链表之双向有头循环链表
双向有头循环链表的结构体只是增加了一个前一个节点typedef struct SListNode{ DataType data; struct SList* pPrev; struct SList* pNext;}SListNode;当链表为空是,还是有一个节点 ,那就是头节点,此时: 当链表不为空时: 双向链表的初始化: 一定要注意,链...原创 2018-06-05 16:22:21 · 625 阅读 · 0 评论 -
求水仙花数
找出水仙花数: 首先我们需要了解水仙花数的概念:在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。 例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数: 153 = 1^3 + 5^3 + 3^3。 370 = 3^3 + 7...原创 2018-05-24 21:41:28 · 518 阅读 · 0 评论 -
程序环境和预处理
一、程序的编译环境和执行环境 (1)、每一个程序的源文件都会通过编译过程转换为相应的目标代码。 (2)、每一个目标代码由链接器捆绑在一起,形成一个单一的可执行程序。 (3)、链接器同时也会引入标准库函数中被程序任意引用的库函数,而且还可以搜索程序员的个人程序库,将需要的函数也链接到程序之中。编译分为几个阶段组成:程序执行的过程: (1)、程序必须载入到内存中。 (2)、函数的执行...原创 2018-05-24 21:55:10 · 131 阅读 · 0 评论 -
链表经典面试题一
题型一:从尾到头打印链表 方法一:递归方式void printtailtohead1(ListNode* ppHead)//从尾到头打印链表{ if (!ppHead) return; printtailtohead1(ppHead-&gt;pNext); printf("%d-&gt;", ppHead-&gt;data);}方法二...原创 2018-06-14 17:08:11 · 616 阅读 · 0 评论 -
链表经典面试题二
题型七:合并两个链表,合并后的链表依旧有序分析:最简单的思路就是遍历两个链表,每次取出其中一个链表的节点,两个链表取出来的节点相比较,取较小值插入到新链表中。就这样一直比较,直到有一个链表为空就结束循环。但是要注意的是,当两个链表第一次比较时,将较小数据作为新的链表的头节点 ,确定之后,再创建一个节点tail指向新链表的最后一个节点,每次取出的数据尾插在tail后面,当遇到其中有一个链表为空的...原创 2018-06-14 17:15:02 · 719 阅读 · 0 评论 -
链表经典面试题三
题型十一:判断单链表是否带环,若带环,求出环的长度,环的入口点,1、判断是否带环:判断一个链表是否带环的带环的条件是,当链表不带环时尾节点指向空,当链表带环时,链表没有尾节点。ListNode* IsCycle(ListNode* pHead)//判断链表是否带环,若带环,返回快慢指针相遇的节点{ ListNode* cur = pHead; ListNode...原创 2018-06-14 17:51:27 · 506 阅读 · 0 评论 -
linux常用指令说明,及linux下常用目录说明
一、权限问题:1、进入目录需要的权限是:x(执行) 2、cd:所需权限x 3、ls:所需权限:rx 4、rm:所需权限wx 5、mv:所需权限wx 6、touch:在一个目录下创建一个文件,在超级用户下,不管目录是否对拥有者开放权限,都可以在目录下创建文件。在普通用户下,要在目录下创建文件,需要对目录拥有着开放写权限和可执行权限,若要读取这个目录下的文件列表,则需要对拥有者开放读权限...原创 2018-06-30 21:03:58 · 142 阅读 · 0 评论 -
初识进程----
一、概念 进程:程序的一次动态执行过程。每个进程都有自己的状态和自己的虚拟地址空间,是操作系统分配资源的基本单位。 程序:为了完成一系列任务的特定指令的有序集合。 进程和程序的区别: 1、进程是动态的,程序的静态的 2、一个程序可以对应多个进程,但一个进程只能对应一个程序 3、程序是代码+数据,进程是:代码+数据+堆栈+PCB。 二、创建 创建一个进程的一般工作: 1、分配一个P...原创 2018-07-09 16:08:46 · 190 阅读 · 0 评论 -
分支结构
一、if语句语法 if (表达式) 语句1; else (表达式2) 语句2;int main(){ int a = 0; int b = 2; if (a == 1) { if (b == 2) { printf("hehe\n"); } ...原创 2018-05-23 19:33:26 · 5136 阅读 · 0 评论 -
链表之单向有头不循环链表
链表是一种链式存储线性表,用一组地址任意的存储单元存放数据表的数据元素,称为存储单元的一个节点 节点的结构体定义为:typedef struct ListNode{ struct ListNode* pNext; TypeDate data;}ListNode;下面就是一些构造链表的一些 函数,包括删除,插入,销毁等:创建一个节点ListNode*...原创 2018-06-04 15:55:42 · 375 阅读 · 0 评论 -
简单小游戏——三子棋
今天分享一个简单的用C语言编写的小游戏:三子棋游戏。这是头文件 sanziqi.h#ifndef _Sanziqi_H#define _Sanziqi_H#include <time.h>#include <stdio.h>#include <stdlib.h>#define row 3#define col 3void Inte_qipan(char arr[row][col], int原创 2018-04-10 17:10:41 · 256 阅读 · 0 评论 -
预处理器详解
C/C++编译系统编译文件的过程称为预处理、编译、链接。预处理器在在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理指令以#号开头标识,末尾不含分号。C/C++提供的预处理功能主要包括文件包含、宏替换、条件编译等。 1、预定义符号 FILE :代表进行编译的源文件名 LINE :文件当前的行号 DATE :文件被编译的日期 TIME :文件被编译的时间 STDC :如原创 2018-04-18 23:39:37 · 4302 阅读 · 0 评论 -
函数运行时堆栈
每个函数在运行时都要使用运行时堆栈(栈帧),用于存储局部变量和返回地址,下面我就以简单的求和函数来分析一下堆栈到底怎样完成的: 下面为函数的代码:#include <stdio.h>#include <stdlib.h>int add(int x, int y){ int r = 0; r = x + y; return r;}int main(){ i原创 2018-04-18 23:50:31 · 1238 阅读 · 0 评论 -
数组与指针——第二弹
1、通过指针引用数组 一个变量有地址,一个数组中有若干个元素,每个元素都占据着一定的内存空间,他们都有相应的地址。所以指针能指向变量,也能指向数组中的元素。数组元素的指针也就是数组元素的地址。 int a[10]={1,2,3,4,5,6,7,8,9,10} int *p; p=&a[0]; 将指针指向数组a的0号元素。在C语言中数组名代表数组首元素的地址,所原创 2018-04-30 14:10:14 · 232 阅读 · 0 评论 -
数组与指针——第三弹
我们已经知道了在我们的代码中,在一个地方定义为指针,那么在声明的时候也要用指针;在一个地方声明定义用了数组,那么在声明的时候也要用数组。1、数组与指针的对比: 指针用来保存数据的地址,任何存入指针变量p的数据都会被当作地址来处理。p本身的地址由编译器另外储存。存储在哪里,我们并不知道,间接访问数据,首先取得指针变量p的内容,把它作为地址,用来写入或者读取数据。用于动态数据结构,通常指向匿名数...原创 2018-04-30 15:56:14 · 238 阅读 · 0 评论 -
结构体小结
这次总结一些关于结构体的一些小知识,从以下几个方面来加以介绍 ,希望能给各位带来一些帮助: 一、结构体类型的声明 结构体是一些值得集合,这些值称为成员变量,结构体的每个成员都可以是不同类型的变量。 eg: 这就是一个结构体变量,用来描述一个 学生的信息,结构体的成员可以是标量数组,指针,甚至可以是其他的结构体。 声明结构体的时候可以是不完全声明,比如: ;st原创 2018-05-06 18:43:45 · 2178 阅读 · 0 评论 -
利用可变参数实现简单的计算器
C语言中可将函数实现为可变参数的形式,可以使函数接收一个以上任意多个参数。下面先就一个简单的例子来分析一下可变参数。#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int avg(int n, ...){ va_list arg; int sum = 0; int i = 0; va_start(原创 2018-05-06 19:17:37 · 486 阅读 · 0 评论 -
简单小程序——求100—200之间的素数
求素数算是入门的C语言编程题了,下面就是我编写的程序,欢迎各位讨论指教。#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int i = 0; int j = 0; for (i = 100; i < 200; i++) { for (j = 2; j < sqr原创 2018-05-06 19:26:03 · 2646 阅读 · 0 评论 -
简单小程序——判断闰年
判断闰年是学习C语言的入门题,下面就是我编写的程序,欢迎各位指点。#include <stdio.h>#include <stdlib.h>int main(){ int year = 0; for (year = 1000; year <= 2000; year++) { if ((year % 4 == 0) && (year % 100) == 0原创 2018-05-06 19:29:53 · 2177 阅读 · 0 评论 -
简单小程序——乘法表
乘法计算很简单,但是输出乘法表那个形式却是我们需要注意的。欢迎各位大佬的指点。#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int j = 0; int k = 0; int l = 0; int m = 0; for (i = 1; i <= 9; i++) {原创 2018-05-06 19:33:55 · 991 阅读 · 0 评论 -
C语言入门程序——交换两个数
编程实现交换两个数很简单,下面我用了两种方法来实现: 1、使用临时变量#include #include int main(){ int a = 9; int b = 5; int tmp = 0; tmp = a; a = b; b = tmp; printf("a=%d,b=%d", a, b); system("原创 2018-05-06 19:41:34 · 1526 阅读 · 0 评论 -
简单小程序——求最大值
在编写去=求最大值程序时需要我们注意一点,需要给max的初值赋为数组中的第一个元素,而不是0,这样考虑到了,数组中全为负数的情况。 欢迎各位大佬的指点。#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int arr[10] = { 11,45,1,78,23,90,7,45,67,4}; int原创 2018-05-06 19:46:48 · 3597 阅读 · 0 评论 -
简单小程序——求两个数的最大公约数
求两个数的最大公约数程序如下:#include <stdio.h>#include <stdlib.h>int main(){ int a; int b; printf("请输入两个数:"); scanf("%d%d", &a, &b); if (a < b) { int tmp = a; a = b;原创 2018-05-06 19:57:31 · 8645 阅读 · 2 评论 -
静态顺序表
顺序表:用一段连续的存储单元依次存储数据元素的线性结构,顺序表分为静态数据表和动态数据表。 顺序表和数组的区别: 顺序表要求数据必须是连续的,而数组的数据元素可以不连续。 下面是实现了顺序表的一些功能,代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#i...原创 2018-05-26 18:51:06 · 594 阅读 · 0 评论 -
第一个c程序
认识第一个C语言程序:#inlcude <stdio.h>#include <stdlib.h>int main(){printf("hehe\n");//printf用于在标准输出下打印信息}一、在写程序的过程中我们通常需要添加注释,有两种注释规则: /* */和// /* */这是c注释风格,可以注释多行代码,但是不支持嵌套。 //...原创 2018-05-23 19:19:29 · 14362 阅读 · 2 评论 -
复杂链表的复制
1、什么是复杂链表? 复杂链表就是,一个链表的每一个节点都有一个指向下一个节点的指针和指向随机节点或者NULL的指针。 2、分析: 要完成复杂链表的复制,首先应该向链表中的每一个元素都复制 下来,复制的位置应该是当前节点的下一个节点,如下图所示: 意思就是要拷贝的节点是当前节点的Next,要拷贝节点的rodom就是 当前节点的rodom的Next;最后再将这个链表拆分。 代码...原创 2018-07-19 16:38:49 · 158 阅读 · 0 评论