C语言高精度计算

高精度乘法

#include "pch.h"
#include <iostream>
#include <stdlib.h>

int main()
{
char n1[1500], n2[1500];
int a[1500] = {'\0'};
int b[1500] = {'\0'};
int c[3000] = {0};
int m, n, i, j, o;
printf("请输入被乘数:\n");
scanf_s("%s",&n1,128);
m = strlen(n1);
printf("请输入乘数:\n");
scanf_s("%s",&n2,128);
n = strlen(n2);
if(m>n){o = m;}else{o = n;}
//将char类型的元素转换成int类型
for (i = 0, j = m - 1; i < m; i++, j--) {
a[i] = n1[j] - '0';
}
//将char类型的元素转换成int类型
for (i = 0, j = n - 1; i < n; i++, j--) {
b[i] = n2[j] - '0';
}
//用数组a的每一位跟数组b进行乘法操作
for (i = 0; i < m;i++) {
for (j = 0; j < n; j++) {
c[i + j] = c[i+j]+(a[i] * b[j]);
}
}
//处理进位
for (i = 0; i < m + n; i++) { if (c[i] >= 10) {//若该位大于10则向前进该处元素的十位数
c[i + 1] = c[i+1] + c[i] / 10;//20=>2,10=>1
c[i] = c[i] % 10;//取个位数
}
}
//由于存储c时是逆序存储,所以要再次逆序输出
for (i = o-1; i >=0;i--) {
printf("%d",c[i]);
}
printf("\n");
system("pause");
}


高精度加法

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500], n2[1500];
	int a[1500] = {'\0'};
	int b[1500] = {'\0'};
	int c[3000] = {0};
	int m, n, i, j,o;
	printf("请输入被加数:\n");
	scanf_s("%s",&amp;amp;n1,128);
	m = strlen(n1);
	printf("请输入加数:\n");
	scanf_s("%s",&amp;amp;n2,128);
	n = strlen(n2);
	for (i = 0, j = m - 1; i &amp;lt; m; i++, j--) {
		a[i] = n1[j]-'0' ;
	}
	for (i = 0, j = n - 1; i &amp;lt; n; i++, j--) { b[i] = n2[j]-'0' ; } if (m &amp;gt; n) { o = m; }
	else { o = n; }
	for (i = 0; i &amp;lt; o;i++) {
			c[i] = c[i]+(a[i] + b[i]);
	}
	for (i = 0; i &amp;lt; o; i++) { if (c[i] &amp;gt;= 10) {
			c[i + 1] =c[i+1]+( c[i] / 10);
			c[i] = c[i] % 10;
		}
}
	for (i = o-1; i &amp;gt;=0;i--) {
		printf("%d",c[i]);
	}
	printf("\n");
	system("pause");
}


高精度减法

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500], n2[1500];
	int a[1500] = { '\0' };
	int b[1500] = { '\0' };
	int c[3000] = { 0 };
	int m, n, i, j, o,flag=0;
	printf("请输入被减数:\n");
	scanf_s("%s", &amp;amp;n1, 128);
	m = strlen(n1);
	printf("请输入减数:\n");
	scanf_s("%s", &amp;amp;n2, 128);
	n = strlen(n2);
	for (i = 0, j = m - 1; i &amp;lt; m; i++, j--) {
		a[i] = n1[j] - '0';
	}
	for (i = 0, j = n - 1; i &amp;lt; n; i++, j--) { b[i] = n2[j] - '0'; } if (m &amp;gt; n) { o = m; }
	else { o = n; }
	for (i = 0; i &amp;lt; o; i++) {
		c[i] = c[i] + (a[i] - b[i]);
	}
	for (i = 0; i &amp;lt; o; i++) {
		if (c[i] &amp;lt; 0 &amp;amp;&amp;amp; flag != 1) { flag = 1; }//记录正负号
		if (c[i] &amp;lt; 0 &amp;amp;&amp;amp; a[i] == 0) { c[i + 1] = c[i + 1] - 1; c[i] = 10 - b[i]; } if (b[i] == 0 &amp;amp;&amp;amp; c[i] &amp;gt; 0) {
			c[i] = 10 - a[i];
			if (c[i + 1] &amp;gt; 0) { c[i + 1] = c[i + 1] - 1; }
			else {
				c[i + 1] = c[i + 1] + 1;
			}
		}
		if (c[i] &amp;lt; 0) { c[i] = -1 * c[i]; } } if (flag == 1) { printf("-"); } for (i = o-1; i &amp;gt;=0;i--) {
		printf("%d",c[i]);
	}
	printf("\n");
	system("pause");
}

高精度除低精度

#include "pch.h"
#include <iostream> 
#include <stdlib.h>

int main()
{
	char n1[1500];
	int n2;
	double a[3000] = { '\0' }, b[3000] = { 0 }, c = 0;
	int m, n, i, j, o,flag=0;
	printf("请输入被除数:\n");
	scanf_s("%s", &amp;amp;amp;n1, 128);
	m = strlen(n1);
	printf("请输入除数:\n");
	scanf_s("%d", &amp;amp;amp;n2, 128);
	if (n2 == 0) { printf("除数不可为0\n"); system("pause"); exit(0); }
	for (i = 0, j = m - 1; i &amp;amp;lt; m; i++, j--) {
		a[i] = n1[j] - '0';
	}
	for (i = 0,j=0; i &amp;amp;lt; m;i++,j++) { b[i] = b[i] + (a[i] / n2); for (o=j; o&amp;amp;gt;0; o--) {
			b[i] = b[i] * 10;
		}
	}
	for (i = 0; i&amp;amp;lt;m; i++) {
		c = c + b[i];
	}
	printf("%lf",c);
	printf("\n");
	system("pause");
}

原理:使用被除数的每一位进行除法运算,并将最终结果sum起来

记0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常BUG的解决办法

0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。

原代码:

scanf_s("%s",&a)

出现该报错时,是因为启用了scanf_s时没有填写第三参数


解决该bug的办法:

scanf_s("%s",&a,128)

PS:第三参数指的是最多可读取的字符数

[笔记][Laravel] .ENV文件应用设定-中文注释

APP_NAME=Laravel

|————————————————————————–
| Application Name-应用名称
|————————————————————————–
|
| 这个值是用来命名你的应用的. 这个值可以被框架用作警告时(?)被调用
| 同时这个这个值可以被应用或包应用
|

APP_ENV=local

|————————————————————————–
| Application Environment-应用环境
|————————————————————————–
|
| 这个Envirment用于定义你的引用在何处运行
| 这可能决定你会如何去配置多个应用程序的配置
| 在’.ENV’中可以设定该值
|

APP_KEY=base64:123213453dshkjch

|————————————————————————–
| Encryption Key-加密秘钥
|————————————————————————–
|
| 该秘钥将用于Laravel的加密函数并且该秘钥应是随机且有32位长
| 若不满足上述条件的话,使用加密函数加密的字符串将是不安全的
| 请在部署前先使用Artisan命令生成一个秘钥
|

APP_DEBUG=true

|————————————————————————–
| Application Debug Mode-应用程序调试模式
|————————————————————————–
|
| 当你开启该模式后,每当出现错误时,将会显示详细的错误提示(还有堆栈崩溃的位置)
| 提示(还有堆栈崩溃的位置).若您选择关闭该功能,系统将会使用一个简单的通用页来
| 代替.使用True来开启,使用False来关闭.
|

APP_LOG_LEVEL=debug

|————————————————————————–
| Logging Configuration-日志配置
|————————————————————————–
|
| 在这里你将就可以为你的应用配置日志记录服务,为此Laravel使用了Monolog PHP日志库.
| 使用该日志库将为您提供多样化的日志记录选项,并且你将可以使用强大的日志处理程序,
| 以及强大的日志格式化程序
|
| 可选的选项: “single”, “daily”, “syslog”, “errorlog”
|

APP_URL=http://localhost

|————————————————————————–
| Application URL-应用程序URL
|————————————————————————–
|
| 该URL是被用于在Artisan控制台模式中生成正确的网页链接的
| 在执行Artisan任务前,你应该设定该链接为你的应用程序的根目录地址
|

[笔记]C语言和AJAX开发小结[20181014]

C语言小结:


  • pow(double x) 输出也是float类型的值
  • if(表达式)[C语言的表达式中判断部分的值只能是int型或char型或bool型]*
  • 逗号表达式从左向右求值,输出的结果是最后一位的值
  • abs(int x) 求整型数值的绝对值
  • fabs(double x) 求双精度浮点型的绝对值
  • case (标签): 标签只能是数值/字符/字符串,不能是表达式**
  • sqrt(double x) 输出是double类型的值
  • 单个字符数据只能用(”)单引号来储存,多个字符才可以采用(“”)双引号来存储

*:if(a==2.34){}是不行的,除非把2.34当成字符串来存储,再进行判断才行

**:例:case a>b:是错误的


AJAX技术小结:


如果Console报错出现 CORS 头缺少 ‘Access-Control-Allow-Origin’

主要是因为跨域的锅,目前已知的解决办法有以下两种(maybe):

  1. ajax的url参数只使用php文件,如:data.php,即使服务器是自己的,强烈警告不要使用全链接来请求,如:www.boost.com/index.php这样来请求很容易报错
  2. 在请求页面的头部使用如下代码来解决:
    <meta http-equiv="Access-Control-Allow-Origin" content="*">

Umarket开源Steam饰品市场

本项目是基于之前的steambot的代码库开发的饰品市场。

一套具备商城系统与机器人系统的一体化方案

Github地址:https://github.com/7gugu/umarket

功能:
1.查询玩家的库存
2.对玩家的库存进行自动化托管与交易
3.支持支付宝与Uwallet双支付系统
4.商城可部分自定义
5.饰品交易系统
6.支持Windows平台

下面是预览图:

可根据用户背包按需缓存物品图像,节省系统资源占用
支持Alipay与Uwallet
自研机器人系统,可网页管理
自由启用出售的栏目

不忘初心,最终还是选择把项目开源出来让大家使用.自我承认我的代码真的很烂,但我也在慢慢进步,希望有朝一日能得到dalao的认可,项目将于11.11推送至Github,届时会在此放出链接地址.owo

URP突破500次安装!!!

wooooo,感谢大家的支持,不知不觉URP就达成500次安装,我也升入大学开始新的征程啦!就让我们继续前行下去吧!Umarket我可能不会开源,而是转成商业项目了,帮自己挣点外快owo,但机器人部分的API我会继续维护下去的.

还有在学校要进组织开始学习了,还是有点紧张呀Orz,不过我会继续努力做出更好的项目的

PEACE

[笔记]谷歌浏览器不兼容select的option里onclick事件的解决方案

代码里在option 里加了onclick事件属性,平时多在firefox浏览器下开发,测试时发现以谷歌为内核的浏览器onclick事件无作用,查了下资料,在select里面用onchange就好了,如下:

<select onchange="update_show(this.options[this.selectedIndex].value)"></select>

[笔记]Linux基础入门

目录操作


创建目录

使用 mkdir 命令创建目录
mkdir $HOME/testFolder

(home是用户地主目录,登录后缺省进入的目录,比方说有个用户叫wang,那他的地主目录就是/home/wang,也能够用~wang表示。其实如果在安装Linux时选择中文版,桌面的目录就在$home目录下的“桌面目录”。)


切换目录

使用 cd 命令切换目录
cd $HOME/testFolder
使用 cd ../ 命令切换到上一级目录
cd ../

移动目录

使用 mv 命令移动目录
mv $HOME/testFolder /var/tmp

删除目录

使用 rm -rf 命令删除目录
rm -rf /var/tmp/testFolder

查看目录下的文件

使用 ls 命令查看/etc目录下所有文件和文件夹
ls /etc

(/etc 目录默认是 *nix 系统的软件配置文件存放位置)


文件操作


创建文件

使用 touch 命令创建文件
touch ~/testFile
执行 ls 命令, 可以看到刚才新建的 testFile 文件
ls ~

复制文件

使用 cp 命令复制文件
cp ~/testFile ~/testNewFile

删除文件

使用 rm 命令删除文件, 输入 y 后回车确认删除
rm ~/testFile

查看文件内容

使用 cat 命令查看 .bash_history 文件内容
cat ~/.bash_history

过滤,管道与重定向


过滤

过滤出 /etc/passwd 文件中包含 root 的记录
grep 'root' /etc/passwd
递归地过滤出 /var/log/ 目录中包含 linux 的记录
grep -r 'linux' /var/log/

管道

简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |
比如, 我们可以将 cat 和 grep 两个命令用管道组合在一起
cat /etc/passwd | grep 'root'
过滤出 /etc 目录中名字包含 ssh 的目录(不包括子目录)
ls /etc | grep 'ssh'

重定向

可以使用 > 或 < 将命令的输出重定向到一个文件中
echo 'Hello World' &gt; ~/test.txt

常用运维指令


Ping指令

对 cloud.tencent.com 发送 4 个 ping 包, 检查与其是否联通
ping -c 4 cloud.tencent.com

Netstat指令

netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等
列出所有处于监听状态的tcp端口
netstat -lt
查看所有的端口信息, 包括 PID 和进程名称
netstat -tulpn

Ps指令

过滤得到当前系统中的 ssh 进程信息
ps -aux | grep 'ssh'

资料来源:

腾讯云

Umarket开源饰品商城

未完待续……

2018/08/31更新:

  • 支持对背包进行存取操作
  • 支持上架下架修改价格操作
  • 支持浏览商店,并加入购物车的流程
  • 支持管理栏目组件及名称

Todo:

  • 支持查看订单详情
  • 支持支付提现及管理钱包功能
  • 支持站内公告
  • 支持管理机器人
  • 支持管理用户
  • 支持管理UI样式
  • 支持购物流程的自定义

[笔记]JQuery的选择器使用笔记

jQuery 元素选择器

jQuery 使用 CSS 选择器来选取 HTML 元素。

$(“p”) 选取 <p> 元素。

$(“p.intro”) 选取所有 class=”intro” 的 <p> 元素。

$(“p#demo”) 选取所有 id=”demo” 的 <p> 元素


jQuery 属性选择器

jQuery 使用 XPath 表达式来选择带有给定属性的元素。

$(“[href]”) 选取所有带有 href 属性的元素。

$(“[href=’#’]”) 选取所有带有 href 值等于 “#” 的元素。

$(“[href!=’#’]”) 选取所有带有 href 值不等于 “#” 的元素。

$(“[href$=’.jpg’]”) 选取所有 href 值以 “.jpg” 结尾的元素。


jQuery CSS 选择器

jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。


jQuery 数据的输入

$(“xxxx”) 对该页面进行选择

$(“xxxx”,data) 对变量data进行选择