冒泡排序 C语言实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# include <stdio.h>
int main(void)
{
//待排序的数字
int a[] = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500};
int n; //存放数组a中元素的个数
int i; //比较的轮数
int j; //每轮比较的次数
int buf; //交换数据时用于存放中间数据
//计算数组个数
n = sizeof(a) / sizeof(a[0]); /*a[0]是int型, 占4字节, 所以总的字节数除以4等于数组中元素的个数*/
for (i=0; i<n-1; i++) //比较n-1轮
{
for (j=0; j<n-1-i; j++) //每轮比较n-1-i次,
{
//比较如果后面的数大
if (a[j] < a[j+1])
{
//交换
buf = a[j]; //把小的先缓存
a[j] = a[j+1]; //把大的放到前面
a[j+1] = buf; //把小的放后面
}
}
}
for (i=0; i<n; ++i)
{
printf("%d\x20", a[i]);
}
printf("\n");
return 0;
}

运行结果:

1
2500 900 543 532 76 56 43 35 34 32 3 2 -58 -70 -234

冒泡排序 JavaScript实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
var array = [3, 4, 1, 2];
document.writeln("排序前:" + array + "<br>");
function bubbleSort(array) {
var temp = 0;
for (var i = 0; i < array.length - 1; i++) {
for (var j = 0; j < array.length - 1 - i; j++) {
// 如果后面的比前面的大
if (array[j] < array[j + 1]) {
// 将小的数缓存
temp = array[j];
// 将 大的 数放到前面
array[j] = array[j + 1];
// 将 小的 数放到后面
array[j + 1] = temp;
}
}
}
return array;
}
var sortarray = bubbleSort(array);
document.writeln("排序后:" + sortarray + "<br>");
</script>

运行效果:

1
2
排序前:3,4,1,2
排序后:4,3,2,1

参考资料

https://blog.csdn.net/fe_dev/article/details/79600448

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FILE* movieFile=fopen("movie.txt","r");
//如果文件打开失败
if(movieFile==0)
{
printf("文件打开失败!\n");
system("pause");
exit(0);
}
//判断是否是空文件
if(fgetc(movieFile)==EOF)
{
printf(" 文件 movie.txt 为空 请先录入\n");
}
else
{
rewind(movieFile);//文件指针移动会首部
}
//其他操作...

fclose(movieFile);//关闭文件

参考链接

C语言怎么判断文件是否为空

C语言创建文件

只写方式打开文件,如果没有改文件的话则会创建该文件

1
2
3
4
FILE* trainFILETemp=getFILE("trainTemp.txt","w");
fprintf(trainFILETemp,"使用C语言创建文件");
//关闭文件
fclose(trainFILETemp);

C语言重命名文件

1
2
3
4
5
6
7
8
int result;
char oldname[] ="trainTemp.txt";
char newname[] ="trainRename.txt";
result= rename( oldname , newname );
if ( result == 0 )
printf( "File successfully renamed" );
else
perror( "Error renaming file" );

C语言删除文件

在C语言中,有专门的删除文件函数remove。
1、头文件:stdio.h
2、声明:int remove(const char* filename);
3、功能:删除文件名为filename的文件。
4、返回值:删除成功,返回0.否则返回-1.

实例

1
2
3
4
5
6
7
int ret;
char deleteFile[]="trainRename.txt";
ret = remove(deleteFile);//删除文件
if(ret==0)
printf("删除文件成功\n");
else
printf("删除文件失败\n");

参考链接

详解C语言中的rename()函数和remove()函数的使用方法
如何用C语言创建和删除文件
c 重命名文件

分析原因

这是因为头文件重复导入了,我在头文件userBuyMenu.h中导入了#include "findMethod.h"

然后又在主方法中同时导入了这个两个头文件:

1
2
#include "userBuyMenu.h"
#include "findMethod.h"


这样就findMethod.h被导入了两次,重复了,所以报这个错。

解决方案

注释掉userBuyMenu.h中导入的findMethod.h的语句:

1
//#include "findMethod.h"

总结

以后不要在头文件中导入头文件,再主方法中导入即可。

我的问题

我在任务管理器中的资源监视器中不小心关掉了文件资源管理器explorer.exe,然后就炸了,整个屏幕直接变蓝了,而其按下Win+R也无法调出运行窗口。

解决方案

不过还好任务管理器还可以使用,所以:进入任务管理器,点击文件>运行新任务

然后输入explorer,按下回车即可启动文件资源管理器了,这样电脑就恢复正常了。

启动其他程序也类似。

前言

我这里是在git-bash中运行的,因为懒得打开虚拟机了,在Linux终端上运行效果也一样。

文件目录相关命令

创建一个空白文件命令touch

命令格式

1
touch 新文件名

例如,在当前目录下创建一个test.txt的空白文件:

1
2
3
4
5
6
7
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
$ ls -l
total 8
-rw-r--r-- 1 lan 197609 3622 11月 11 17:06 'Linux 常用指令.md'
-rw-r--r-- 1 lan 197609 1537 11月 5 17:17 linux下删除目录及其子目录下某种类型文件.md
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
$ touch text.txt

运行结果:

1
2
3
4
5
6
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
$ ls -l
total 8
-rw-r--r-- 1 lan 197609 3622 11月 11 17:06 'Linux 常用指令.md'
-rw-r--r-- 1 lan 197609 1537 11月 5 17:17 linux下删除目录及其子目录下某种类型文件.md
-rw-r--r-- 1 lan 197609 0 11月 11 17:06 text.txt

文件复制命令cp

命令格式

1
cp [option] source1 source2 source3 ... directory

参数说明

  • -a:是指archive的意思,也说是指复制所有的目录
  • -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
  • -f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
  • -i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
  • -l:建立硬连接(hard link)的连接文件,而非复制文件本身
  • -p:与文件的属性一起复制,而非使用默认属性
  • -r:递归复制,用于目录的复制操作
  • -s:复制成符号连接文件(symbolic link),即“快捷方式”文件
  • -u:若目标文件比源文件旧,更新目标文件

例如将当前博客站点目录bolg5复制一份到到同级目录blog5copy:

1
2
3
4
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5
$ cd ..
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog
$ cp -r bolg5 blog5copy

运行结束后,就复制了一份站点目录文件到同级目录(Blog)下的blog5copy目录了。这个blog5copy相当于一个博客站点目录的备份。

文件移动命令mv

命令格式

1
mv [-fiv] source destination

参数说明

  • -f:force,强制直接移动而不询问
  • -i:若目标文件(destination)已经存在,就会询问是否覆盖
  • -u:若目标文件已经存在,且源文件比较新,才会更新

    实例 移动文件到其他目录

    1
    2
    lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5dug/source/_posts/Linux
    $ mv 'Linux 常用指令.md' ../../../../*5/source/_posts/Linux
    这个命令会把/e/Blog/bolg5dug/source/_posts/Linux目录下的'Linux 常用指令.md'文件移动到,/e/Blog/bolg5/source/_posts/Linux目录下。

    使用移动命令重命名文件

    在当前目录下使用移动命令可以达到给文件重命名的效果:
    为了不误删我之前写的文章,先来创建一个测试文件:
    1
    2
    3
    4
    5
    6
    7
    8
    lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
    $ touch test.txt
    lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
    $ ls -l
    total 8
    -rw-r--r-- 1 lan 197609 2447 11月 11 16:58 'Linux 常用指令.md'
    -rw-r--r-- 1 lan 197609 1537 11月 5 17:17 linux下删除目录及其子目录下某种类型文件.md
    -rw-r--r-- 1 lan 197609 0 11月 11 16:59 test.txt
    使用mv命令重命名:
    1
    2
    $ mv test.txt rename.txt
    lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux
    重命名结果:
    1
    2
    3
    4
    5
    6
    $ ls -l
    total 8
    -rw-r--r-- 1 lan 197609 2447 11月 11 16:58 'Linux 常用指令.md'
    -rw-r--r-- 1 lan 197609 1537 11月 5 17:17 linux下删除目录及其子目录下某种类型文件.md
    -rw-r--r-- 1 lan 197609 0 11月 11 16:59 rename.txt
    lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/bolg5/source/_posts/Linux

    文件删除命令rm

命令格式

1
rm [fir] 文件或目录

参数说明

  • -f:强制删除
  • -i:交互模式,在删除前询问用户是否操作
  • -r:递归删除,常用在目录的删除

无法删除的情况

1
2
$ rm -rf latex/
rm: cannot remove 'latex/': Device or resource busy

这是因为有程序在使用当前的目录,打开资源监视器,输入句柄(目录绝对路径)找到该程序,关闭该程序。然后就可以删除了。

参考链接

https://www.cnblogs.com/liaojie970/p/6746230.html

下载百度翻译英文读音

链接如下,把你要查的单词替换成你要查找的单词,然后用浏览器打开,即可下载该该单词的读音。

1
https://fanyi.baidu.com/gettts?lan=en&text=YouWord&spd=5&source=web

使用html5 audio控件播放

当然也可以添加audio标签,这样就可以放在网页中,点击即可播放:

1
<audio src="https://fanyi.baidu.com/gettts?lan=en&text=focus&spd=5&source=web"></audio>

显示效果:

单词和读音放在一行

为了把单词和读音放在一行,我又套了一个表格在外面,这样比较美观。

1
2
3
4
5
6
7
8
<table style="width: 30%;">
<tr>
<td>focus</td>
<td>
<audio src="https://fanyi.baidu.com/gettts?lan=en&text=focus&spd=5&source=web" controls="controls">focus</audio>
</td>
</tr>
</table>

不过在Markdown中插入表格的话,要把所有的html代码写在一行。不然表格和表格上的文本会出现很多空白行,所以最终的代码为:

1
<table style="width: 30%;"><tr><td >focus</td><td><audio src="https://fanyi.baidu.com/gettts?lan=en&text=focus&spd=5&source=web" controls="controls">focus</audio></td></tr></table>

显示效果:

focus

百度翻译读音链接说明

1
2
https://fanyi.baidu.com/gettts?lan=en&text=focus&spd=5&source=web
https://fanyi.baidu.com/gettts?lan=zh&text=focus&spd=5&source=web
  • lan 表示读音的方法
    • en 表示英式读音
    • zh 表示中式读音
  • text 表示需要朗读的文本
  • spd 表示朗读的速度
  • source 这一项我不知道是什么意思

实例 中文和朗读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table style="width: 30%;">
<tr>
<td>focus(en)</td>
<td>
<audio src="https://fanyi.baidu.com/gettts?lan=en&text=focus&spd=5&source=web" controls="controls">focus</audio>
</td>
</tr>
<tr>
<td>小明(zh)</td>
<td>
<audio src="https://fanyi.baidu.com/gettts?lan=zh&text=小明&spd=5&source=web" controls="controls">小明</audio>
</td>
</tr>
</table

效果如下:

focus(en)
小明(zh)

参考链接

https://www.v2ex.com/amp/t/393846
http://www.w3school.com.cn/tags/tag_audio.asp

问题描述

今天部署到coding的时候,我又无法部署了,说我超出了容量(512M),我不可能写了那么多东西,我很奇怪。

1
2
3
4
5
6
7
8
9
10
Coding 提示: Repo size exceeded quota: 512M (100.02%).
仓库容量超限: 512M (100.02%), 查看您的会员计划: https://coding.net/vip
......
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Error: Coding 提示: Repo size exceeded quota: 512M (100.02%).
仓库容量超限: 512M (100.02%), 查看您的会员计划: https://coding.net/vip
......

解决方案

登录coding 清空仓库

登录到coding.net,打开你的仓库,点击设置->仓库设置->清空仓库

重新部署

站点目录下,打开git-bash 输入命令hexo clean&&hexo g&&hexo d重新部署,部署后,点开设置->项目预览,可以看到我这次推送占用的容量为:

这个Git仓库你每部署(推送)一次,就会占用一些容量。推送多了就会超出容量限制(512M)了,所以还是不要频繁部署

重新开启pages服务

清空仓库后,pages服务默认关掉了,需要重新开启,点击代码->Pages服务。然后开启Pages服务:

重新绑定域名

开启服务后,就可以使用Coding默认的域名(https://用户名.coding.me)来访问了。如果使用coding的默认域名的话到这里就可以了。
如果之前绑定了自己买的域名的话,清空仓库后,之前绑定的域名也失效了,需要重新绑定。但是奇怪的是,我在coding上一直绑定不上。也不知道为什么,我猜是域名解析的问题,所以我到万网上,先删除coding和github的解析,然后在重新添加Coding的解析。然后回到Coding.net上绑定域名,神奇的是,这样就可以绑定上了,最后在重新添加github的解析就行了。

问题描述

最近写完文章后部署后,在手机端查看的时候,我发现英文显示不正确了,其他栏目特别大,英文行压缩成小小的一列,看起来很别扭.

修改next主题样式文件

修改样式文件,打开next主题样式文件E:\Blog\bolg5\themes\next\source\css\_custom\custom.styl,在其中添加下面的CSS代码:

1
2
3
td{
word-break: normal;
}

然后hexo clean&&hexo g&&hexo d部署,在手机端打开就可以正常显示了。

写表格时用空格分隔每个单词

在表格太长的英文单词不要写成一串,中间用空格分隔开,这样手机端就能更好的从空格处换行。例如对于函数:fontcolor(colorValue)这种写法所有的单词写成一串,浏览器会把它当成一个单词,这样移动端显示的时候,无法拆分这个几个单词,这样就会显示在一行,从而让这一列特别大,挤占其他列的空间。
应该用空格把单词分开写成fontcolor( colorValue ),这样就可以正确的换行了。

实例 错误写法

1
2
3
4
5
6
|方法|描述|结果|
|:--|:--|
|`fontcolor(colorValue)`|字符串设置颜色|在字符串首尾加上 HTML的&lt;font color="colorValue"&gt;&lt;/font&gt; 标记对, 设置 color属性的值为参数colorValuer, color属性可以是颜色的十六进制值,也可以是颜色的预定义名|
|`fontsize(sizeValue)`|字符串设置大小|在字符串首尾加上 HTML的&lt;font size="sizeValue"&gt;&lt;/font&gt; 标记对,并设置size属性的值为参数sizeValue|
|`anchor(name)`|创建 HTML 锚|在字符串首尾加上 HTML的 &lt;a name="name"&gt;&lt;/a&gt; 标记对|
|`link(url)`|创建HTML超链接|在字符串首尾加上 HTML的 &lt;a href="url"&gt;&lt;/a&gt; 标记对|

显示效果(注意用手机打开这篇文章):

|方法|描述|结果|
|:–|:–|
|fontcolor(colorValue)|字符串设置颜色|在字符串首尾加上 HTML的<font color=”colorValue”></font> 标记对, 设置 color属性的值为参数colorValuer, color属性可以是颜色的十六进制值,也可以是颜色的预定义名|
|fontsize(sizeValue)|字符串设置大小|在字符串首尾加上 HTML的<font size=”sizeValue”></font> 标记对,并设置size属性的值为参数sizeValue|
|anchor(name)|创建HTML锚|在字符串首尾加上 HTML的 <a name=”name”></a> 标记对|
|link(url)|创建HTML超链接|在字符串首尾加上 HTML的 <a href=”url”></a> 标记对|

实例 正确写法

1
2
3
4
5
6
|方法|描述|结果|
|:--|:--|
|`fontcolor( colorValue )`|字符串设置颜色|在字符串首尾加上 HTML的&lt;font color="colorValue"&gt;&lt;/font&gt; 标记对, 设置 color属性的值为参数colorValuer, color属性可以是颜色的十六进制值,也可以是颜色的预定义名|
|`fontsize( sizeValue )`|字符串设置大小|在字符串首尾加上 HTML的&lt;font size="sizeValue"&gt;&lt;/font&gt; 标记对,并设置size属性的值为参数sizeValue|
|`anchor( name )`|创建 HTML 锚|在字符串首尾加上 HTML的 &lt;a name="name"&gt;&lt;/a&gt; 标记对|
|`link( url )`|创建HTML超链接|在字符串首尾加上 HTML的 &lt;a href="url"&gt;&lt;/a&gt; 标记对|

显示效果:

|方法|描述|结果|
|:–|:–|
|fontcolor( colorValue )|字符串设置颜色|在字符串首尾加上 HTML的 <font color=”colorValue”></font> 标记对, 设置 color属性的值为参数colorValuer, color属性可以是颜色的十六进制值,也可以是颜色的预定义名|
|fontsize( sizeValue )|字符串设置大小|在字符串首尾加上 HTML的<font size=”sizeValue”></font> 标记对,并设置size属性的值为参数sizeValue|
|anchor( name )|创建HTML锚|在字符串首尾加上 HTML的 <a name=”name”></a> 标记对|
|link(url)|创建HTML超链接|在字符串首尾加上 HTML的 <a href=”url”></a> 标记对|

css word-break属性

word-break属性用来规定自动换行的处理方式,它不仅可以让浏览器在半角空格或连字符的后面换行,也可以实现在任意位置换行,可选值有 normal | keep-all | break-all,默认值为 normal。

  • normal 表示根据语言自身的换行规则,确定换行方式,中文将容器边界处的汉字换到下一行,西方文字则将整个单词换到下一行
  • keep-all 表示不允许把单词截断,只能在半角空格或连字符处换行
  • break-all 允许把单词截断,在单词内换行

white-space、word-wrap、word-break的区别

  • white-space: nowrap 让一段文本不换行,在一行内显示。
  • word-wrap: normal 使一个单词或URL不折行,在一行内显示。
  • word-wrap: break-word 在容器边界自动换行,会把整个长单词看成一个整体放到下一行,而不会把单词截断。
  • word-break: break-all 在行末宽度不够显示整个单词时,会把单词截断。

参考链接

td自动换行时不切断英文单词
CSS 单词换行 word-break属性

百度主动推送的作用

作用:某些主机,比如Github,禁止百度爬虫访问博客,导致博客无法被百度收录。多亏百度提供了主动提交的接口,这才有了个补救的方法。除此之外, 使用主动推送还会达到如下功效:

  • 及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录
  • 保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现

在hexo中添加百度主动推送功能

安装hexo-baidu-url-submit插件

首先,在Hexo站点根目录下,打开git-bash,输入下面命令安装插件:

1
npm install hexo-baidu-url-submit --save

在站点配置文件中添加baidu-url-submit的配置项

把以下内容配置到站点配置文件_config.yml中。

1
2
3
4
5
6
#设置百度主动推送
baidu_url_submit:
count: 200 #比如200,代表提交最新的200个链接
host: www.lansheng.net.cn # 在百度站长平台中注册的域名,这个改为你自己的域名
token: your_token # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里,这个默认

这个秘钥可以从百度站长平台的自动推送接口那里获取到,如下图所示:

在站点配置文件中加入新的deploy配置项

同样在站点配置文件中找到deploy项,添加新的推送项,如下所示:

1
2
3
4
5
6
7
deploy:
- type: git
repo:
coding: git@git.coding.net:你的coding用户名/你的coding用户名.coding.me.git #coding地址
github: git@github.com:你的github用户名/你的github用户名.github.io.git # Github地址
branch: master
- type: baidu_url_submitter

验证配置是否成功

最后输入命令hexo s看看能不能启动本地服务器,如果就没问题了。可以输入命令hexo d部署即可。
成功不是可以在git-bash中看到如下的信息:

1
2
3
4
5
INFO  Deploying: baidu_url_submitter
INFO Submitting urls
......
{"remain":4999900,"success":100}
INFO Deploy done: baidu_url_submitter

就说明主动推送成功了。

卸载

最近我新建一个站点xuexi,我自己个人看看就行了,不需要百度百度主动推送,和熊掌号的功能,使用这个插件还会占用时间所以,卸载:npm uninstall hexo-baidu-url-submit

1
2
3
4
5
6
7
lan@DESKTOP-8ISAT6B MINGW64 /E/Blog/xuexi
$ npm uninstall hexo-baidu-url-submit
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
removed 2 packages and audited 7436 packages in 11.162s
found 2 vulnerabilities (1 low, 1 moderate)
run `npm audit fix` to fix them, or `npm audit` for details

然后在站点配置文件中,删除上面的配置项,即可。

参考链接

参考文章:https://www.jianshu.com/p/f37452d4978e
插件GitHub地址:https://github.com/huiwang/hexo-baidu-url-submit
官方说明文档:https://hui-wang.info/2016/10/23/Hexo%E6%8F%92%E4%BB%B6%E4%B9%8B%E7%99%BE%E5%BA%A6%E4%B8%BB%E5%8A%A8%E6%8F%90%E4%BA%A4%E9%93%BE%E6%8E%A5/