
C语言学习笔记
小象一只
刚开始学习图像处理知识
展开
-
字符串去除首尾和中间重复空格
题目美团在线模拟笔试题,字符串去除首尾和中间重复空格解析是否是字符串开始位置的空格标志位,start 遇到空格的标志位,flag 代码实现#include <stdio.h>#include <stdlib.h>#include <string.h>char* deleteBlank(char* sourcestring){ char* newstring = sourcestring原创 2015-09-07 16:44:15 · 988 阅读 · 0 评论 -
C语言编程(练习4:字符串与字符串函数)
题目:编写一个函数,其功能是使输入字符串反序。在一个使用循环语句为这个函数提供输入的完整程序中测试代码实现:/**< 编写一个函数,其功能是使输入字符串反序。在一个使用循环语句为这个函数提供输入的完整程序中测试 */#include #include #include #define MAX 100void reverse(char *a);int main(){原创 2015-01-23 20:52:35 · 883 阅读 · 0 评论 -
C语言编程(练习3:字符串与字符串函数)
题目:strncpy(s1,s2,n)函数从s2复制n个字符给s1,并在必要时截断s2或为其填充额外的空字符。如果s2的长度等于或大于n,目标字符串就没有标志结束的空字符。函数返回s1。自己编写这个函数,并在一个使用循环语句为这个函数提供输入的完整程序中进行测试。代码实现:/**< strncpy(s1,s2,n)函数从s2复制n个字符给s1,并在必要时截断s2或为其填充额外的空字符。如原创 2015-01-23 20:45:06 · 991 阅读 · 0 评论 -
C语言编程(练习2:数组和指针)
题目:编写程序,把下面的数据输入一个二维数组中。25 36 78 1312 26 88 9375 18 22 3256 44 36 58然后执行以下操作:①输出矩阵两个对角线上的数;②分别输出各行和各列的和;③交换第一行和第三行的位置;④交换第二列和第四列的位置;⑤输出处理后的数组代码实现:/**<编写程序,把下面的原创 2015-01-23 17:15:55 · 1545 阅读 · 0 评论 -
C语言编程(练习1:函数 )
题目: 定义一个函数,用于将一个字符串反序存放。例如,原串为 ABCDEF,则处理后的字符串为:FEDCBA知识点:字符串的定义问题char *s;上面只是定义一个字符串指针,并未为该指针分配存储空间。char s[100]; //定义一个存储字符串的数组,记得字符串与字符数组的区别。分配空间后,数组名s为字符串地址,s为指向数组的地址常量,不能做变量运算字符原创 2015-01-23 16:19:50 · 1529 阅读 · 0 评论 -
C语言编程(练习4:分支和跳转 )
题目:输入年月日,计算该天是该年的第多少天?(请使用 case)分析:月份天数分为三种31天的有:1、3、5、7、8、10、1230天的有:4、6、9、1128/29天的是2月,需要进行闰年与否的判断/**< 输入年月日,计算该天是该年的第多少天?(请使用 case) *//**< 需要判断是否为闰年:可以被4整除,但不能被100整除;能被400整除 */#include原创 2015-01-06 16:39:01 · 659 阅读 · 0 评论 -
C语言编程(练习5:字符串与字符串函数)
题目:编写一个函数,其参数为一个字符串,函数删除字符串中的空格。在一个可以循环读取的程序中进行测试,直到用户输入空行。对于任何输入字符串,函数都应该使用并可以显示结果代码实现:/**<编写一个函数,其参数为一个字符串,函数删除字符串中的空格。在一个可以循环读取的程序中进行测试,直到用户输入空行。对于任何输入字符串,函数都应该使用并可以显示结果 */#include #include原创 2015-01-23 20:58:30 · 1716 阅读 · 0 评论 -
C语言编程(练习4:数组与指针)
题目:计算字符串中子串出现的次数。要求:用一个子函数 subString()实现,参数为指向字符串和要查找的子串的指针,返回次数代码实现:/**< 计算字符串中子串出现的次数。要求:用一个子函数 subString()实现,参数为指向字符串和要查找的子串的指针,返回次数 */#include #include #define MAX 100int subString(cha原创 2015-01-23 17:30:09 · 1219 阅读 · 1 评论 -
C语言编程(练习5:字符串与字符串函数)
题目:编写一个程序。功能是读取输入,直到遇到EOF,并报告单词数、大写字母数、小写字母数、标点符号数和数字字符数。使用ctype.h系列的函数 代码实现:/**< 编写一个程序。功能是读取输入,直到遇到EOF,并报告单词数、大写字母数、小写字母数、标点符号数和数字字符数。使用ctype.h系列的函数 */#include #include #include #define MAX原创 2015-01-23 21:06:32 · 937 阅读 · 0 评论 -
C语言编程(练习1:字符串和字符串函数)
题目:设计并测试一个函数,其功能是读取输入行里的第一个单词到数组,并丢掉该行中其他的字符。一个单词的定义是一串字符,其中不含空格,制表符和换行符。代码实现:/**<设计并测试一个函数,其功能是读取输入行里的第一个单词到数组,并丢掉该行中其他的字符。一个单词的定义是一串字符,其中不含空格,制表符和换行符 */#include #include #include void word(原创 2015-01-23 19:51:35 · 1300 阅读 · 0 评论 -
C语言编程(练习9:数组与指针)
题目:有 5 个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。代码实现:/**< 有 5 个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针原创 2015-01-23 19:38:56 · 2780 阅读 · 0 评论 -
C编程乐趣
看《深入理解计算机系统》时候看到的方法,觉得很cool不需要第三个位置来临时存储另一个值来实现两个数值的交换#include #include void inplace_swap(int *a, int *b);void main(void){ int a, b; printf("输入a和b的值:\n"); scanf("%d %d", &a, &b); inplace_s原创 2015-03-20 15:29:28 · 566 阅读 · 0 评论 -
6. 重建二叉树
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。解析 根据先序遍历和中序遍历还原二叉树的主要思想: 1、先序遍历序列的第一个元素必定是根节点,可以由此获原创 2015-07-19 12:30:10 · 354 阅读 · 0 评论 -
38. 数字在排序数组中出现的次数
题目描述 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3, 由于3在这个数组中出现了4次,因此输出4.解析 1. 解法一: 该解法是最直观的解法,可以先使用二分查找先找到这个元素,然后分别向左和向右遍历,把左右相同的元素的个数都计算出来。 该方法很直观,当算法的效率太低。 2.解法二: 可以将原创 2015-07-20 16:33:15 · 355 阅读 · 0 评论 -
24. 二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该整数数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。假设输入数组的任意两个数字都互不相同解析 在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树结点的值,它们都比根结点的值小,第二部分是右子树结点的值,它们都比根结点的值大。主要代码实现bool V原创 2015-07-20 16:29:14 · 387 阅读 · 0 评论 -
8. 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 解析 1. 递增数组的旋转,例如,数组{1 2 3 4 5},经过旋转可以是{2 3 4 5 1},{3 4 5 1 2},{1 2 3 4 5},{原创 2015-07-19 15:07:41 · 328 阅读 · 0 评论 -
C/C++产生随机数
C/C++中产生随机数要用到的是rand()函数,srand()函数。1、如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。 #include<stdio.h> #include<stdlib.h> int main原创 2015-08-11 17:30:10 · 1898 阅读 · 0 评论 -
实现两个N*N矩阵的乘法 矩阵用一维数组表示
简介注意下标 和 参数的传递。用一维数组存储二维数组,编程时候注意元素下标。实现代码//N*N矩阵相乘void NmultiplyNmatrix( int *A, int *B, int *C, int N){ for( int i=0; i<N; i++) { for( int j=0; j<N; j++) {原创 2015-07-15 17:46:38 · 1182 阅读 · 0 评论 -
237、Delete Node in a Linked List [Leetcode]
题目 给定单链表的一个节点(不是最后一个节点),请删除它分析 没有表头,如何找到这个节点的前一个节点? 方法:采用“懒删除”,当前节点复制下一个节点的内容,然后删除下一个节点C代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *n原创 2015-07-25 18:45:33 · 355 阅读 · 0 评论 -
206、Reverse Linked List [Leetcode]
题目描述分析 思路:把当前节点作为已经翻转结果的新表头节点C代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* h原创 2015-07-25 18:33:37 · 346 阅读 · 0 评论 -
92、Reverse Linked List II [Leetcode]
Reverse Linked List II 题目描述 在链表原位置上,翻转位置m到n上的结点,指遍历链表一次分析 如何找到第m个元素和第n个元素 如何处理前面和后面 1.保存前面部分最后一个元素 2. 保存后面部分第一个元素 3. 特殊情况都有哪些:是否需要修改头指针C代码/** * Definition for singly-linked list. *原创 2015-07-25 18:18:31 · 350 阅读 · 0 评论 -
C语言编程(练习7:数组与指针)
题目:字符替换。要求用函数 replace 将用户输入的字符串中的字符 t(T)都替换为 e(E),并返回替换字符的个数。代码实现:/**< 字符替换。要求用函数 replace 将用户输入的字符串中的字符 t(T)都替换为 e(E),并返回替换字符的个数 */#include #include #define MAX 100void replace(char *s);i原创 2015-01-23 19:09:18 · 1673 阅读 · 1 评论 -
C语言编程(练习5:数组与指针)
题目: 编程打印直角杨辉三角形前六行/**< 编程打印直角杨辉三角形前六行 */#include #include int c(int x,int y);int main(){ int i,j,n=13; printf("N="); while(n>12) scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图原创 2015-01-23 17:23:20 · 894 阅读 · 0 评论 -
C语言编程(练习4:函数 )
题目: 编写输入数据函数、排序(冒泡法、选择法)函数、输出函数,完成 10 个数据的输入、排序和输出,在主函数中进行测试知识点:多个数据的输入函数选择排序它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序每次交换一对元素,它们原创 2015-01-23 17:01:58 · 894 阅读 · 0 评论 -
C语言编程(练习2:循环,三大循环结构 )
一个正整数与 3 的和是 5 的倍数,与 3 的差是 6 的倍数, 编写一个程序求符合条件的最小数/**< 一个正整数与 3 的和是 5 的倍数,与 3 的差是 6 的倍数, 编写一个程序求符合条件的最小数 */#include #include int main(){ int i = 1; for(;(i+3)%5!=0 || (i-3)%6!=0 ; i原创 2014-12-28 16:43:50 · 870 阅读 · 0 评论 -
C语言编程(练习3:字符输入和输出 )
题目:编写一个统计空格、制表符与换行符个数的程序分析:空格输入就是键盘上的空格键指标符\t换行符\n实行代码:/**< 编写一个统计空格、制表符与换行符个数的程序 */#include #include int main(){ int space_num = 0; //初始化三个保存空格、制表符和换行符的变量 int table_num =原创 2015-01-13 15:41:56 · 985 阅读 · 0 评论 -
C语言编程(练习4:字符输入和输出 )
题目: 编写一个程序,以每行一个单词的形式打印其输入分析:一个单词中不能出现空格,制表符,换行符如何确定两个单词间有多个空白字符的情况空白字符的判断可以用符号分类函数库来判断:ctype.h代码实现(一):#include #include int main(){ int ch = 0; int flag = 0; while((ch =原创 2015-01-13 16:56:19 · 1764 阅读 · 0 评论 -
C语言编程(练习1:字符输入和输出 )
题目: 编写一个程序,统计从输入到文件结尾为止的字符数分析:文件结尾EOF是在stdio.h上定义的#define EOF (-1)检测到文件尾时getchar()返回值是EOF,scanf()函数在检测到文件结尾时也返回EOF。while((ch = getchar()) != EOF)来判断是否到文件结尾。键盘键入EOF字符的方式:大多数Unit系统上原创 2015-01-13 15:05:08 · 1392 阅读 · 0 评论 -
C语言编程(练习2:字符输入和输出 )
题目:编写一个打印 EOF 值的程序实现:/**< 编写一个打印 EOF 值的程序 */#include #include int main(){ printf("EOF = %d\n", EOF); return 0;}运行结果:原创 2015-01-13 15:10:25 · 606 阅读 · 0 评论 -
C语言编程(练习3:分支和跳转 )
题目:编写一个程序。该程序读取整数,直到输入 0。输入终止后,程序应该报告输入的偶数(不包括 0)总个数,偶数的平均值,输入的奇数总个数以及奇数的平均值。/**< 编写一个程序。该程序读取整数,直到输入 0。输入终止后,程序应该报告输入的偶数(不包括 0)总个数,偶数的平均值,输入的奇数总个数以及奇数的平均值 */#include #include int main(){原创 2015-01-06 15:45:35 · 1622 阅读 · 0 评论 -
C语言编程(练习2:分支和跳转 )
题目: 编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。/**< 该程序读取输入直到遇到#字符,然后报告读取的空格数目、 读取的换行符数目以及读取的所有其他字符数目 */#include #include int main(){ int blank = 0; int newline = 0;原创 2015-01-06 15:44:38 · 669 阅读 · 0 评论 -
C语言编程(练习1:分支和跳转 )
题目:输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数/**< 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数 */#include #include int main(){ int letter=0; int blank=0; int number=0; int others=0; char c; w原创 2015-01-06 14:49:28 · 647 阅读 · 0 评论 -
C语言文件用法
文件操作中的mode应用问题。fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen(const char * path,const char* mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读文件,该文件必须存在转载 2014-05-13 21:20:47 · 569 阅读 · 0 评论 -
C语言编程(练习1:循环,三大循环结构 )
实验室编程练习作业题:从键盘输入整数 n,输出 1+3+5+7+……前 n 项的和。(n/** \brief 从键盘输入整数 n,输出 1+3+5+7+……前 n 项的和。(n<=100) */#include #include int main(){ int n; //用于存储输入的整数n int i = 1; //作为中间变量,用于计数 int原创 2014-12-28 16:04:38 · 2026 阅读 · 0 评论 -
C语言编程(练习4:循环,三大循环结构 )
题目:打印以下图案. * *** ************ ***** *** */**< 打印以下图案. 行数:i 星星数:2*i-1 起始处空格数:4-i * 1 1 3原创 2014-12-28 18:15:46 · 1373 阅读 · 0 评论 -
C语言编程(练习3:函数 )
题目:利用递归函数,对一个给定的整数,输出其阶乘知识点:递归函数的使用代码实现:/**< 利用递归函数,对一个给定的整数,输出其阶乘0的阶乘是1 */#include #include int factorial(int i); //函数声明int main(){ int number; printf("整数阶乘计算,输入一个整数:\n");原创 2015-01-23 16:33:20 · 715 阅读 · 0 评论 -
C语言编程(练习2:字符串与字符串数组)
题目:设计并测试一个函数,可以从输入读取n个字符(包括空格、制表符和换行符),把结果存储在一个数组中,这个数组的地址通过参数来传递代码实现:/**< 设计并测试一个函数,可以从输入读取n个字符(包括空格、制表符和换行符),把结果存储在一个数组中,这个数组的地址通过参数来传递 */#include #include #include #define MAX 100void re原创 2015-01-23 19:55:27 · 971 阅读 · 0 评论 -
C语言编程(练习8:数组与指针)
题目:编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。知识点:指针数组的定义与初始化代码实现:/**< 编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。 */#include #include int main(){ char *pt[7] = {"Monday", "Tuesday", "Wednesday", "Thu原创 2015-01-23 19:12:45 · 2461 阅读 · 0 评论 -
C语言编程(练习1:数组和指针)
题目:定义一个二维数组,存入 5 个学生的数学、语文、英语、物理、化学 5 门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩。知识点:二维数组的使用代码实现:/**< 定义一个二维数组,存入 5 个学生的数学、语文、英语、物理、化学 5 门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩 */#include #include原创 2015-01-23 17:11:27 · 2424 阅读 · 1 评论 -
C语言编程(练习2:函数 )
题目:定义一个函数,用于判断三角形的三条边能否构成三角形,如果能,则判断是普通三角形,等腰三角形,还是等边三角形知识点:用子函数来实现熟悉,函数声明,函数定义,函数调用代码实现:/**< 定义一个函数,用于判断三角形的三条边能否构成三角形,如果能,则判断是普通三角形,等腰三角形,还是等边三角形 */#include #include int detection原创 2015-01-23 16:27:27 · 1727 阅读 · 0 评论