亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? calculate.cpp

?? 能計算數學函數的計算器 這個計算器可用 set 命令自定義變量
?? CPP
字號:
#include <stdio.h>
#include <math.h>
#include "stack.h"
#include "calculate.h"
#include "common.h"
#include "math function.h"
#define OVER false


bool checkword (
	char word[]
	)
/*++
函數描述:

功能:
	檢查字符的合法性

參數:
	word	- 待檢查的字符串

返回值:
	字符合法返回 true ,否則返回 false
--*/
{
	int i;

	for (i = 0;word[i] != '\0';i ++) {
		if (word[i] >= 40 && word[i] <= 57 && word[i] != 44
			|| word[i] >= 65 && word[i] <= 90
			|| word[i] == 92 || word[i] == 94
			|| word[i] >= 97 && word[i] <= 122
			|| word[i] == 32 || word[i] == 9 || word[i] == 37
			) {
			continue;
		} else {
			return false;
		}
	}
	return true;
}
void SingelCalc (
	NODE *Operand,
	NODE *Operator
	)
/*++
函數描述:

功能:
	實現一元運算符的運算,并將結果存入到 Operand 中,
	且對小數位是零的浮點數,轉換成整數后再保存

參數:
	Operand		- 操作數
	Operator	- 一元操作符

返回值:
--*/
{
	switch (Operator->Term.Operator.Symbol) {
		case '-':
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Integer = 0 - Operand->Term.Operand.Data.Integer;
			} else {
				Operand->Term.Operand.Data.Real = 0 - Operand->Term.Operand.Data.Real;
			}
			break;
		case '%':
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = Operand->Term.Operand.Data.Integer/100.0; 
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = Operand->Term.Operand.Data.Real/100.0;
			}
			break;
		case 21:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = sin ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = sin (Operand->Term.Operand.Data.Real);
			}
			break;
		case 22:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = cos ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = cos (Operand->Term.Operand.Data.Real);
			}
			break;
		case 23:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = tan ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = tan (Operand->Term.Operand.Data.Real);
			}
			break;
		case 24:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = 1/tan ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = 1/tan (Operand->Term.Operand.Data.Real);
			}
			break;
		case 25:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = asin ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = asin (Operand->Term.Operand.Data.Real);
			}
			break;
		case 26:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = acos ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = acos (Operand->Term.Operand.Data.Real);
			}
			break;
		case 27:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = atan ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = atan (Operand->Term.Operand.Data.Real);
			}
			break;
		case 28:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = atan (1.0/(double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = atan (1.0/Operand->Term.Operand.Data.Real);
			}
			break;
		case 29:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = log ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = log (Operand->Term.Operand.Data.Real);
			}
			break;
		case 30:
			if (Operand->Term.Operand.DataSignal == INTEGER) {
				Operand->Term.Operand.Data.Real = log10 ((double)Operand->Term.Operand.Data.Integer);
				Operand->Term.Operand.DataSignal = FLOAT;
			} else {
				Operand->Term.Operand.Data.Real = log10 (Operand->Term.Operand.Data.Real);
			}
			break;
	}
	if (Operand->Term.Operand.DataSignal == FLOAT
		&& Operand->Term.Operand.Data.Real - (int)Operand->Term.Operand.Data.Real == 0.0) {
			Operand->Term.Operand.Data.Integer = (int)Operand->Term.Operand.Data.Real;
			Operand->Term.Operand.DataSignal = INTEGER;
	}
}


void DoubleCalc (
	NODE *Operand1,
	NODE *Operand2,
	NODE *Operator
	)
/*++
函數描述:

功能:
	實現二元運算符的運算,并將結果存入到 Operand 中,且對小數位是零的數,轉換成整數后再保存

參數:
	Operand1	- 操作數 1 
	Operand2	- 操作數 2
	Operator	- 二元操作符

返回值:
--*/
{
	switch (Operator->Term.Operator.Symbol) {
		case '+':
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Integer = Operand1->Term.Operand.Data.Integer + Operand2->Term.Operand.Data.Integer;
			} else if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == FLOAT) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Integer + Operand2->Term.Operand.Data.Real;
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real + Operand2->Term.Operand.Data.Integer;
			} else {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real + Operand2->Term.Operand.Data.Real;
			}
			break;
		case '-':
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Integer = Operand1->Term.Operand.Data.Integer - Operand2->Term.Operand.Data.Integer;
			} else if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == FLOAT) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Integer - Operand2->Term.Operand.Data.Real;
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real - Operand2->Term.Operand.Data.Integer;
			} else {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real - Operand2->Term.Operand.Data.Real;
			}
			break;
		case '*':
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Integer = Operand1->Term.Operand.Data.Integer * Operand2->Term.Operand.Data.Integer;
			} else if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == FLOAT) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Integer * Operand2->Term.Operand.Data.Real;
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real * Operand2->Term.Operand.Data.Integer;
			} else {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real * Operand2->Term.Operand.Data.Real;
			}
			break;
		case '/':
			if (Operand2->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.Data.Integer == 0 
				|| Operand2->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.Data.Real == 0.0) {
					error = the_divisor_can_not_be_zero;
					return;
			}
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = (double)Operand1->Term.Operand.Data.Integer / (double)Operand2->Term.Operand.Data.Integer;
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == FLOAT) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Integer / Operand2->Term.Operand.Data.Real;
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real / Operand2->Term.Operand.Data.Integer;
			} else {
				Operand1->Term.Operand.Data.Real = Operand1->Term.Operand.Data.Real / Operand2->Term.Operand.Data.Real;
			}
			break;
		case '\\':
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Integer = Operand1->Term.Operand.Data.Integer % Operand2->Term.Operand.Data.Integer;
			} else {
				error = the_mode_operator_only_accept_integral_operands;
				return;
			}
			break;
		case '^':
			if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == INTEGER) {
				if (Operand1->Term.Operand.Data.Integer == 1 || Operand2->Term.Operand.Data.Integer >= 0) {
					Operand1->Term.Operand.Data.Integer = PlusPow (Operand1->Term.Operand.Data.Integer , Operand2->Term.Operand.Data.Integer);
				} else {
					Operand1->Term.Operand.Data.Real = MinusPow (Operand1->Term.Operand.Data.Integer , Operand2->Term.Operand.Data.Integer);
					Operand1->Term.Operand.DataSignal = FLOAT;
				}
			} else if (Operand1->Term.Operand.DataSignal == INTEGER && Operand2->Term.Operand.DataSignal == FLOAT) {
				Operand1->Term.Operand.Data.Real = pow (Operand1->Term.Operand.Data.Integer , Operand2->Term.Operand.Data.Real);
				Operand1->Term.Operand.DataSignal = FLOAT;
			} else if (Operand1->Term.Operand.DataSignal == FLOAT && Operand2->Term.Operand.DataSignal == INTEGER) {
				Operand1->Term.Operand.Data.Real = pow (Operand1->Term.Operand.Data.Real , Operand2->Term.Operand.Data.Integer);
			} else {
				Operand1->Term.Operand.Data.Real = pow (Operand1->Term.Operand.Data.Real , Operand2->Term.Operand.Data.Real);
			}
			break;
	}
	if (Operand1->Term.Operand.DataSignal == FLOAT
		&& Operand1->Term.Operand.Data.Real - (int)Operand1->Term.Operand.Data.Real == 0.0) {
			Operand1->Term.Operand.Data.Integer = (int)Operand1->Term.Operand.Data.Real;
			Operand1->Term.Operand.DataSignal = INTEGER;
	}
}

void FixList (
	NODE *Left,
	NODE *Right,
	NODE *data
	)
{
	DeleteNodes (Left,Right);
	NODEcopyWithoutNext (Left,data);
}


void CalcUnit (
	NODE *expHead,
	NODE *expEnd
	)
/*++
函數描述:

功能:
	實現僅含一對括號的表達式的計算,并,將結果保存到 expHead 中

參數:
	expHead		- 表達式頭節點(也是左括號)
	expEnd		- 表達式尾節點 (也是右括號)

返回值:
--*/
{
	bool FirstTerm = true;
	NODE *ActivedPointer = expHead;
	NODE *Operator = NULL;
	NODE *Operand1 = NULL,*Operand2 = NULL;

	PushOperator (ActivedPointer);
	ActivedPointer = ActivedPointer->Next;

	while (ActivedPointer != expEnd->Next) {
		//識別負號,由于負號只出現在表達式的表頭
		if (ActivedPointer->TermSignal == DUALITY && ActivedPointer->Term.Operator.Symbol == '-' && FirstTerm == true) {
			ActivedPointer->Term.Operator.OperandNumber = 1;
			ActivedPointer->Term.Operator.Priority = 3;
			ActivedPointer->TermSignal = UNITARY;
			PushOperator (ActivedPointer);
			ActivedPointer = ActivedPointer->Next;
		}
		if (FirstTerm == true) {
			FirstTerm = false;
		}

		if (ActivedPointer->TermSignal == ISDATA 
			|| ActivedPointer->TermSignal == ISVARIABLE) {
			PushOperand (ActivedPointer);
			ActivedPointer = ActivedPointer->Next;
		} else {
			if (ActivedPointer->Term.Operator.Priority < OperatorHead->Term.Operator.Priority) {
				PushOperator (ActivedPointer);
				ActivedPointer = ActivedPointer->Next;
			} else if (ActivedPointer->Term.Operator.Priority > OperatorHead->Term.Operator.Priority
				|| ActivedPointer->Term.Operator.Priority == OperatorHead->Term.Operator.Priority 
				&& ActivedPointer->Term.Operator.Symbol != '^'
				&& ActivedPointer->TermSignal != MATH_FUNCTION
				&& ActivedPointer->TermSignal != RIGHT_BRACKET) {					
				Operator = PopOperator ();
				Operand2 = PopOperand ();
				if (Operator->Term.Operator.OperandNumber == 2) {
					Operand1 = PopOperand ();
					DoubleCalc (Operand1,Operand2,Operator);
					PushOperand (Operand1);
				} else {
					SingelCalc (Operand2,Operator);
					PushOperand (Operand2);
				}
			} else {
				PushOperator (ActivedPointer);
				ActivedPointer = ActivedPointer->Next;
			}
		}
	}
	if (OperandHead->Term.Operand.DataSignal == FLOAT
		&& OperandHead->Term.Operand.Data.Real - (int)OperandHead->Term.Operand.Data.Real == 0.0) {
			OperandHead->Term.Operand.Data.Integer = (int)OperandHead->Term.Operand.Data.Real;
			OperandHead->Term.Operand.DataSignal = INTEGER;
	}
	FixList (expHead,expEnd,OperandHead);
	ClearStack ();
}

bool LocateInner (
	NODE *expHead,
	NODE **InnerLeft,
	NODE **InnerRight
	)
{
	NODE *p;
	for (p = expHead;p != NULL; p = p->Next) {
		if (p->TermSignal != ISDATA && p->TermSignal != ISVARIABLE) {
			if (p->Term.Operator.Symbol == '(') {
				*InnerLeft = p;
			} else if (p->Term.Operator.Symbol == ')') {
				*InnerRight = p;
				return true;
			}
		}
	}

	return false;
}


void Calculate (
	NODE *expHead
	)
/*++
函數描述:

功能:
	計算給定的格式化后的表達式,并將結果保存到頭節點 expHead 中

參數:
	expHead    - 格式化后的表達式的頭節點指針

返回值:
	表達式節點指針
--*/
{
	NODE *Left = NULL,*Right = NULL;

	if (error != NULL) {
		return;
	}
	while (LocateInner (expHead,&Left,&Right) != OVER) {
		CalcUnit (Left,Right);	
	}
}

void Calculator (
	void
	)
{
	if (expString[0] == NULL || error != NULL) {
		vision = false;
		return;
	}
	if (!checkword (expString)) {
		error = find_some_illegal_alpha;
		return;
	}
	reformer (expString);
	PrintList ();
	Calculate (ExpressionHead);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久看| 精品少妇一区二区三区在线播放| 欧美午夜一区二区三区| 欧美成人女星排名| 一区二区三区四区在线播放| 国产中文字幕精品| 欧美乱熟臀69xxxxxx| 亚洲婷婷在线视频| 国产九九视频一区二区三区| 欧美日韩精品久久久| 亚洲人成电影网站色mp4| 国产麻豆成人精品| 欧美一区二区三区成人| 一二三四区精品视频| 不卡一区二区中文字幕| 久久午夜羞羞影院免费观看| 日本中文字幕不卡| 欧美吻胸吃奶大尺度电影| 国产精品视频麻豆| 国产成人精品三级麻豆| 精品国产91久久久久久久妲己| 亚洲va国产va欧美va观看| 99久久精品免费| 亚洲欧洲一区二区三区| 不卡的av电影| 国产精品久久久久久久浪潮网站| 国产一区二区三区久久悠悠色av| 精品国产乱码久久久久久浪潮 | 欧美日韩综合在线免费观看| 国产精品国产三级国产aⅴ入口 | 一区二区视频在线看| 91免费看`日韩一区二区| 国产精品人成在线观看免费 | 国产精品视频九色porn| 成人免费福利片| 亚洲人成在线观看一区二区| 97精品久久久久中文字幕| 中文字幕在线一区| 99国产精品久久久久久久久久| 国产精品免费免费| 一本到不卡免费一区二区| 亚洲免费在线看| 欧美日韩久久久| 麻豆国产欧美日韩综合精品二区| 精品久久久网站| 国产成人aaa| 亚洲欧美国产77777| 欧美色窝79yyyycom| 日韩av成人高清| 国产亚洲1区2区3区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲自拍与偷拍| 精品视频999| 久久99这里只有精品| 欧美激情一区二区三区不卡| 99精品在线观看视频| 五月婷婷综合网| 久久久亚洲国产美女国产盗摄| 日韩欧美一二三| 国产精品1区2区| 亚洲另类在线制服丝袜| 欧美电影一区二区| 成人精品小蝌蚪| 日韩和欧美的一区| 综合av第一页| 欧美成人vps| 91色porny蝌蚪| 久久国产精品无码网站| 综合自拍亚洲综合图不卡区| 欧美日韩国产精品自在自线| 国产精品一区在线| 亚洲成av人在线观看| 欧美—级在线免费片| 777a∨成人精品桃花网| 成人免费视频播放| 日本视频一区二区三区| 中文字幕一区二区三区不卡在线 | 欧洲精品一区二区| 国产乱对白刺激视频不卡| 亚洲电影一区二区| 亚洲国产高清在线| 日韩天堂在线观看| 欧美亚洲免费在线一区| 国产成人自拍在线| 日日夜夜一区二区| 亚洲乱码中文字幕综合| 国产亚洲一二三区| 日韩欧美一区中文| 欧美亚洲动漫制服丝袜| 不卡的av中国片| 国产成人亚洲精品狼色在线| 日韩av电影免费观看高清完整版在线观看| 中文字幕免费不卡| 性欧美大战久久久久久久久| 中文字幕欧美国产| 久久久久久毛片| 日韩欧美高清dvd碟片| 欧美日韩你懂的| 在线观看日韩一区| 91麻豆免费在线观看| 国产成人精品aa毛片| 国产在线精品视频| 久久99久久久欧美国产| 日本三级亚洲精品| 五月激情丁香一区二区三区| 亚洲成av人影院| 一区二区三区不卡在线观看| 成人免费小视频| 亚洲伦理在线免费看| 亚洲男人电影天堂| 一区二区三区精品久久久| 国产精品高清亚洲| 国产精品久久久久久亚洲毛片| 国产视频亚洲色图| 国产精品免费丝袜| 亚洲乱码国产乱码精品精的特点 | 欧美婷婷六月丁香综合色| 一本色道久久综合狠狠躁的推荐 | 欧美精品国产精品| 欧美精品自拍偷拍| 日韩一区二区高清| 精品国产乱子伦一区| 久久精品夜色噜噜亚洲a∨| 国产精品拍天天在线| 亚洲欧美国产77777| 午夜精品久久一牛影视| 日本不卡视频在线观看| 国产乱子伦视频一区二区三区 | 蓝色福利精品导航| 国产一区二区中文字幕| 成人精品免费看| 日本久久一区二区三区| 在线不卡一区二区| 久久久午夜电影| 亚洲视频一区在线| 日日夜夜精品免费视频| 六月丁香婷婷色狠狠久久| 国产不卡高清在线观看视频| 99久久综合国产精品| 欧美二区乱c少妇| 国产亚洲综合色| 亚洲乱码国产乱码精品精的特点| 午夜精品成人在线视频| 国产一区二区伦理片| 97aⅴ精品视频一二三区| 欧美欧美午夜aⅴ在线观看| 2021久久国产精品不只是精品| 久久精品二区亚洲w码| 国产999精品久久久久久绿帽| 91丨九色丨国产丨porny| 欧美影院一区二区| 久久精品视频一区二区| 亚洲国产精品一区二区www | 亚洲午夜成aⅴ人片| 韩国三级在线一区| 欧美性高清videossexo| 久久精子c满五个校花| 视频在线在亚洲| 成人h精品动漫一区二区三区| 欧美久久高跟鞋激| 亚洲人成小说网站色在线| 另类人妖一区二区av| 91免费看`日韩一区二区| 久久一区二区视频| 日韩国产高清在线| 99久久精品情趣| 国产视频在线观看一区二区三区 | 一区二区三区在线高清| 国产麻豆一精品一av一免费| 日本精品视频一区二区三区| 久久先锋影音av鲁色资源 | 亚洲精选一二三| 国产91精品久久久久久久网曝门| 欧美日韩一级片在线观看| 亚洲欧美偷拍三级| 国产91精品露脸国语对白| 精品国产电影一区二区| 日韩高清中文字幕一区| 99久久99久久免费精品蜜臀| 久久精品夜色噜噜亚洲a∨| 麻豆精品国产传媒mv男同| 欧美精品一卡二卡| av激情成人网| 国产亚洲综合av| 国产自产v一区二区三区c| 欧美一区午夜精品| 无吗不卡中文字幕| 欧美日韩国产小视频在线观看| 日韩理论在线观看| av电影天堂一区二区在线观看| 欧美精品一区二区三| 久久成人综合网| 日韩欧美一卡二卡| 秋霞午夜鲁丝一区二区老狼| 欧美三级中文字幕在线观看| 亚洲综合图片区| 欧美午夜精品久久久久久超碰| 一区二区三区不卡视频| 欧美少妇xxx| 丝瓜av网站精品一区二区|