C语言
考试可能用到的知识
细水长流者
讨厌我所讨厌的,喜欢我所喜欢的东西~
展开
-
力扣 最大子序和
题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000提示:1 &l原创 2021-04-13 20:29:13 · 138 阅读 · 0 评论 -
力扣20. 有效的括号---利用栈击败了 100.00% 的用户
力扣20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true提示:1 <原创 2021-04-12 21:08:58 · 184 阅读 · 0 评论 -
快速幂
快速幂:快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为O(log₂N),与朴素的O(N)相比效率有了极大的提高。求a的n次方,普通情况是这样的:int ans=1;for(i=1;i<=n;i++)ans*=a;可以知道时间复杂度为O(n)。而快速幂,举一个例子吧,不多半页或一页的定义,直接给出例子,应该更好理解一点。比如:求a的11次方:(快速幂)11可以写...原创 2020-03-04 12:05:37 · 1357 阅读 · 0 评论 -
快速排序
快速排序使用分治法策略来把一个序列(list)分为两个子序列。快速排序的基本思想:①从数列中挑出一个元素,称为“基准”(pivot)②通过一趟排序将待排数据分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小。③然后分别对着两个部分递归继续进行排序。排序过程如下图所示:代码如下:输入n个数据,进行从小到大排序#include <stdlib.h>#incl...原创 2020-02-23 18:05:58 · 156 阅读 · 0 评论 -
八皇后问题 回溯法
问题描述:八皇后问题是数学家高斯于1850年提出的,这是一个典型的回溯算法的问题。八皇后问题的大意如下:国际象棋的棋盘有8行8列共64个单元格,在棋盘上摆放8个皇后,使其不能互相攻击,也就是说任意两个皇后都不能处于同一行、同一列或同一斜线上。问总共共有多少种摆放方法,每一种摆放方式是怎样的。目前,数学上可以证明八皇后问题总共有92种解。思路:保证8个皇后不能互相攻击,即保证每一横行、每一竖...原创 2020-02-05 20:28:51 · 711 阅读 · 0 评论 -
关于strcpy(函数)的使用问题
下面先展示一段错误的代码#include <stdlib.h>#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>using namespace std;int main(){ char str[]="ABC",*p=st...原创 2019-03-19 11:19:35 · 835 阅读 · 0 评论 -
C语言删除字符串中指定的字符
删除字符串中指定的字符:因比较简单,不多说#include <stdlib.h>#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>using namespace std;void deletechar(char a[],char...原创 2019-03-15 10:40:45 · 28391 阅读 · 13 评论 -
C语言冒泡排序+选择排序
一,冒泡排序:假如给n个数从小到大排序思想:总共跑n趟,每一趟都把无序数组中相邻的数(不符合顺序,即前者>后者,a[j]>a[j+1])交换,两两交换,n个数最多交换n-1次。note:交换可以定义一个temp来交换,也可以直接调用库函数swap。#include <stdlib.h>#include <stdio.h>#include <iostre...原创 2019-03-12 14:55:12 · 1264 阅读 · 0 评论 -
C语言中统计字符串中单词的个数
统计字符串中单词的个数:下面附上代码:#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;iostream&gt;#include &lt;string.h&gt;#include &lt;math.h&gt;using namespace std;原创 2019-03-12 12:31:24 · 4512 阅读 · 0 评论 -
c语言:字符串复制,插入和连接(指针和数组)
关于字符串,首先输入的时候注意scanf和gets的区别:gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入,而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束。现在进入正题:一,字符串的复制,其实可以直接用库函数strcpy()。但初学者建议自己写,有助于理解和进一步的学习。下面附上代码:一个是指针一个是数组(不会指针的可...原创 2019-03-08 14:45:07 · 4111 阅读 · 0 评论 -
C语言将字符串逆序输出
将字符串逆序输出:我先说一个我的错误代码,一开始真的不知道哪里错了,但是当时的想法是自以为是可以的,大家可以先看看我的错误代码这个代码是错误的,正确的在最下方,不要急,我只是展示一下自己的错误,哈哈#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>...原创 2019-03-15 23:26:47 · 8264 阅读 · 0 评论 -
C语言求定积分
这里以函数f=sinx为例子,首先思路:求定积分用的是元素法,把面积分为一个个的小矩形,分的越密集,则结果越正确。那现在就用这种方法,利用C语言求定积分。下面附上代码:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;iostream&gt;#include &lt;string.h&gt原创 2019-03-13 16:49:42 · 5224 阅读 · 1 评论 -
int *p(int); 和int (*p)(int); 的区别
int (*p)(int)是函数指针,p指向一个函数的起始地址,它相当于一个函数的别名;int* p(int x);是声明一个返回值为int型指针的函数,要使用这个函数需要先定义,然后使用;不同之处:int (p)(int)是一个别名,如果给它指定了一个函数,可以直接使用,它的返回值是int型int p(int x);是一个声明,本身不能直接用,必须先定义才能使用,它的返回值是int *型...原创 2019-03-11 22:55:06 · 6596 阅读 · 3 评论 -
int *p[10] 和 int (*p)[10]用法上有什么不同?
首先int *p[10] :它的属性是指针数组,顾名思义,分为p[0],—,p[9]这十个数都是指针,他们是地址,十个地址,十个针。int (*p)[10]表示行指针,指向一行有10个元素的指针,其类型与二维数组名相同。如,可以这样使用。int a[2][10];int (*p)[10]=a; //p指向数组a的首行。...原创 2019-03-11 22:49:28 · 4784 阅读 · 2 评论 -
设有如下定义:char *aa[ ]={"abcd","ABCD" };则以下说法正确的是 A aa 数组成元素的值分别是"abcd"和"ABCD" B aa是指针变量,它指向含有两个数组元
设有如下定义:char *aa[ ]={“abcd”,“ABCD” };则以下说法正确的是A aa 数组成元素的值分别是"abcd"和"ABCD"B aa是指针变量,它指向含有两个数组元素的字符型一维数组C aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D aa 数组的两个元素中各自存放了字符‘a’和“A”的地址这道题一开始有点晕 ,被指针变量这几个字整晕的。...原创 2019-03-09 14:59:18 · 5520 阅读 · 6 评论 -
C语言结构体error: invalid use of incomplet type ‘ struct people’
invalid use of incomplet type ‘ struct people’相信不少同学遇到这种问题了吧 我也是巨头疼 刚开始的时候其实答案很简单就是将结构体的声明放在函数之前就可以。...原创 2019-03-08 22:46:22 · 1501 阅读 · 0 评论 -
main(){intx=3;do{printf("%d\n",x-=2);}while(!(--x));}上面的程序输出是:
main(){intx=3;do{printf("%d\n",x-=2);}while(!(–x));}上面的程序输出是:输出:1-2原因:第一次循环:x-=2=3-2=1,所以打印出1,判断条件:!(–x),–x使得x=0,!(0)条件为true,继续循环第二次循环:x-=2=0-2=-2,所以打印出-2,判断条件:!(–x),–x使得x=-3,!(-3)条件为false,退出循环...原创 2019-03-10 15:47:28 · 9482 阅读 · 6 评论 -
数字全排列(Full Permutation)
输出数的全排列代码如下:#include<cstdio>#include<iostream>using namespace std;int n;int count=1;int book[15],out[15];void dfs(int step){ if(step>=n) { for(int i=0;i<n;i++) { co...原创 2019-09-23 16:06:33 · 367 阅读 · 0 评论 -
汉诺塔问题(C语言)
对于汉诺塔问题:先举个例子假如把三个珠子从a到c:可得到移动3个盘子的步骤为A-C, A→B,, C→B,A→C,B→A,B→C,A→C。由上面的分析可知:将n个盘子从A座移到C座可以分解为以下3个步骤:(1)将A上n一1个盘借助C座先移到B座上。(2)把A座_上剩下的一一个 盘移到C座上。(3)将n-这个盘从B座借助于A座移到C座上。以下附上代码以及运行结果:#include...原创 2019-03-06 23:03:58 · 800 阅读 · 0 评论 -
C语言弦截法代码
弦截法是求非线性方程近似根的一种线性近似方法。它是以与曲线弧AB对应的弦AB与x轴的交点横坐标作为曲线弧AB与x轴的交点横坐标的近似值μ来求出方程的近似解。该方法一般通过计算机编程来实现。弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。原理:以上便是弦截法的原理,它是一个一直接近正确的跟的求根方法,...原创 2019-03-13 22:47:36 · 8775 阅读 · 3 评论 -
C语言二分法求方程根
对于二分法求根,其实和弦截法思想很像,甚至更简单。原理:先看如下的图A,B两个点为跟的一个边界,通过一直缩小跟的边界,从而获取跟的值。(1)知道函数(即方程的式子),这个好说,题上都有(2)循环的输入A,B的横坐标的值,即x1,x2的初值,直到f(x1)与f(x2)的乘积为负数才停止。(必须保证方程的跟在(x1,x2)区间)这样的x1,x2的初值才有意义。(3)令xx=(x1+x2)/2...原创 2019-03-14 10:44:55 · 47358 阅读 · 10 评论 -
C语言牛顿迭代法
牛顿迭代法:这和二分法,弦截法都挺相似的,都可以用来求取方程跟,只是原理有所不同罢了。原理:x0为初值。设:f(x) = ax3+bx2+cx+d1. 对任意选择的x0,求出对应的方程值f(x0)和曲线上该点的切线的斜率(一阶导数)f’(x0)。 f(x)的一阶导数方程为: f’(x) = 3ax2+2bx+c2. 根据f(x0)和f’(x0),求x1:x1=X0-f(x0)/f’(x0...原创 2019-03-14 11:39:47 · 5723 阅读 · 0 评论 -
C语言同构数
#include <stdlib.h>#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>using namespace std;int istonggou(int n,int k){ if((n*n-n)%k==0) ...原创 2019-03-17 20:57:53 · 7722 阅读 · 0 评论 -
C语言问题:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
可以使用getch()函数读取字符。函数用途:从控制台读取一个字符,但不显示在屏幕上 .例如:char ch;ch=getch();用ch=getch();会等待用户按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。不过路过的朋友看到最后回答我一个问题,百思不得其解,能不能帮我解决一下呢#include <conio.h>#include <...原创 2019-03-14 20:49:51 · 4623 阅读 · 3 评论 -
C语言哥德巴猜想
史上和质数有关的数学猜想中,最著名的当然就是“哥德巴赫猜想”了。1742年6月7日,德国数学家哥德巴赫在写给著名数学家欧拉的一封信中,提出了两个大胆的猜想:一、任何不小于6的偶数,都是两个奇质数之和; 二、任何不小于9的奇数,都是三个奇质数之和。这就是数学史上著名的“哥德巴赫猜想”。 下面两个都用代码展示:#include <stdlib.h>#include <...原创 2019-03-15 16:35:07 · 679 阅读 · 0 评论