帮忙编一下这个,用C++,谢谢啦!

帮忙编一下这个,用C++,谢谢啦!,第1张

一。完整有图版。这是教程。较简单的界面设计:贺历http://hi.baidu.com/phpskycn/blog/item/bb3a3fc6ec4c71d4d0006014.html

首先,先启动Visual Studio,这里以2005版做演示。

接着新建立一个MFC项目, 并命名为Calculator。

由于这个计算器的功能很简单,只需要使用“对话框”类型,并且允许使用最大化、最小化按钮。

下面两个页面的内容无须修改,使用默认设置就可以了。所以单击“完成”按钮关闭向导就可以了。

然后程序会完成整个工程的初始化工作,如果你的电脑内存在512MB以下,或是CPU主频在1.6GHZ以下,会卡上一镇,请稍等。

完成后到“资源视图”中找到如图所示的项目,打开红可以看到一个对话框。

这个默认的对话框里面,有一个静态文本控件和两个按钮,其中文本和“确定”按钮不是我们所需要的,可以删掉。然后到左边的“工具箱”里面,拖几个静态文本控件(Static Text)、编辑框(Edit)和按钮(Button)过来,到“属性”中把它们的Caption改好,结果如图所示。

然后给每一个编辑框添加变量,右键单击编辑框后选择添加变量,然后把类型改成Value,变量类型改成double(双精度浮点数)。

最后是为每一个按钮(“取消”除外)添加消息处理函数,否则就不能计算了。

双击后会自动跳转到编译器。

代码我帮你写好了,Copy就行了。

void CcaculatorDlg::OnBnClickedButton1()//“+”按钮消息处理函数

{

UpdateData(1)//将控件中用陆拍颤户输入的值传递给变量

m_result = m_data1 + m_data2 //加法计算

UpdateData(0)//将变量的值传给控件,程序会自动重画控件

}

void CcaculatorDlg::OnBnClickedButton2()//“-”按钮消息处理函数

{

UpdateData(1)//将控件中用户输入的值传递给变量

m_result = m_data1 + m_data2 //减法计算

UpdateData(0)//将变量的值传给控件,程序会自动重画控件

}

void CcaculatorDlg::OnBnClickedButton3()//“*”按钮消息处理函数

{

UpdateData(1)//将控件中用户输入的值传递给变量

m_result = m_data1 * m_data2 //乘法计算

UpdateData(0)//将早败变量的值传给控件,程序会自动重画控件

}

void CcaculatorDlg::OnBnClickedButton4()//“/”按钮消息处理函数

{

UpdateData(1)//将控件中用户输入的值传递给变量

if( m_data2 == 0 )//判断除数是否为零

{

MessageBeep(-1)//响铃,因为除数不能为零

}

else

{

m_result = m_data1 / m_data2 //除法计算

}

UpdateData(0)//将变量的值传给控件,程序会自动重画控件

}

最后按下F5…………OK,我们的计算器写成了!

二、简易的计算器,四则运算计算器C++原代码

,希望对你有帮助

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

/************/

#define STRING_LENGTH 1000

#define NUMBER_LENGTH 40

/*结构体定义*/

struct symbol

{

char c

struct symbol *next

}*symbol_head=NULL,*temp=NULL

struct number

{

double n

struct number *next

}*number_head=NULL,*temp_2=NULL

char result[NUMBER_LENGTH]

/**********/

/*函数声明*/

double ji_shuan(double a,char t,double b)/*两个double数据计算*/

void string_scan(char *str)/*字符串算式扫描*/

void operate(void)/*链表 *** 作*/

void operate(void)/*链表 *** 作*/

{

temp=symbol_head->next

symbol_head->next=symbol_head->next->next

number_head->n=ji_shuan(number_head->next->n,temp->c,number_head->n)

temp_2=number_head->next

number_head->next=number_head->next->next

free(temp)

free(temp_2)

}

double ji_shuan(double a,char t,double b)/*两个double数据计算*/

{

switch(t)

{

case '+':return a+bbreak

case '-':return a-bbreak

case '*':return a*bbreak

case '/':return a/bbreak

default:

printf("ji_shuan方法调用有误!任意键退出...")

getchar()

exit(0)//用于调试程序时出错指示

}

}

void string_scan(char *str)/*字符串算式扫描*/

{

int i=0

char temp_str[NUMBER_LENGTH]

struct symbol *t

/*ecvt函数用到的变量*/

char *string//存放字符串

int ndig//字符串长度

int dec//小数点位置

int sign//正负标记

/********************/

t=(struct symbol *)malloc(sizeof(struct symbol))

t->next=symbol_head

symbol_head=t

symbol_head->c='#'

for(i=0i<strlen(str)i++)

{

if((str[i]>='0'&&str[i]<='9')||(str[i]=='-'&&(str[i-1]<'0'||str[i-1]>'9')&&str[i-1]!=')'))//检测到数字,(出现"-"号,并且检测到前一个是除")"外的符号,则此为负号(不是减号),此数为负数)

{

struct number *t

int j=0

while((str[i]>='0'&&str[i]<='9')||str[i]=='.')

{

temp_str[j]=str[i]

i++

j++

}

temp_str[j]='\0'

t=(struct number *)malloc(sizeof(struct number))

t->next=number_head

number_head=t

number_head->n=atof(temp_str)//double atof(*char)为字符串转double函数

}

if(str[i]=='('||str[i]==')'||str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'||str[i]=='=')

{

struct symbol *t

t=(struct symbol *)malloc(sizeof(struct symbol))

t->next=symbol_head

symbol_head=t

symbol_head->c=str[i]

if((str[i]=='+'||str[i]=='-')&&symbol_head->next->c!='#'&&symbol_head->next->c!='(')

{

operate()

if(symbol_head->next->c!='#'&&symbol_head->next->c!='(')

{

operate()

}

}

else if((str[i]=='*'||str[i]=='/')&&(symbol_head->next->c=='*'||symbol_head->next->c=='/'))

{

operate()

}

else if(str[i]=='=')

{

while(symbol_head->next->c!='#')

{

operate()

}

temp=symbol_head

symbol_head=symbol_head->next->next

free(temp)

}

else if(str[i]==')')

{

while(symbol_head->next->c!='(')

{

operate()

}

temp=symbol_head

symbol_head=symbol_head->next->next

free(temp)

}

}

}

/*用于调试*/

/*while(number_head!=NULL||symbol_head!=NULL)

{

if(number_head!=NULL)

{

printf("%f",number_head->n)

number_head=number_head->next

}

if(symbol_head!=NULL)

{

printf("%c",symbol_head->c)

symbol_head=symbol_head->next

}

}*/

printf("以double型输出的结果:\n%f\n",number_head->n)

gcvt(number_head->n,NUMBER_LENGTH,result)//调用double转字符串函数

if(result[strlen(result)-1]=='.')//如果最后位是小数点,则去掉

{

result[strlen(result)-1]=result[strlen(result)]

}

printf("调用浮点型转字符串函数gctv的输出结果:\n%s\n",result)

ndig=20//设置小数点后显示10位

string = ecvt(number_head->n, ndig, &dec, &sign)

printf("调用浮点型转字符串函数ectv的输出结果:\n字符串:%s 小数点在第%d位后 ",string,dec)

if(sign==0)

{

printf("此数为正数\n")

}

else

{

printf("此数为负数\n")

}

}

void main(void)/*入口函数*/

{

char str[STRING_LENGTH]/*最大算式长*/

int i=0,select=0

int bracket_flag=0/*括号对称性标记*/

while(1)

{

root: bracket_flag=0

printf("请输入算式,允许带括号的加减乘除四则运算,以\"=\"号结束\n")

scanf("%s",str)

/*******算式查错*********/

if((str[0]<'0'||str[0]>'9')&&str[0]!='-'&&str[0]!='(')

{

printf("算式错误!请重新输入...\n")

goto root

}

for(i=0i<strlen(str)-1i++)

{

if((str[i]<'0'||str[i]>'9')&&(str[i]!='+'&&str[i]!='-'&&str[i]!='*'&&str[i]!='/'&&str[i]!='('&&str[i]!=')'&&str[i]!='.'&&str[i]!='='))

{

printf("算式中含有非法字符!请重新输入...\n")

goto root

}

else if(str[i]=='(')

{

bracket_flag++

}

else if(str[i]==')')

{

bracket_flag--

if(bracket_flag==-1)/* 出现先有")"的情况 */

{

printf("括号不匹配!请重新输入...\n")

goto root

}

}

else if(str[i]=='=')

{

printf("算式中间不允许出现\"=\"号!请重新输入...\n")

goto root

}

if((str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')&&(str[i+1]=='+'||str[i+1]=='-'||str[i+1]=='*'||str[i+1]=='/'||str[i+1]==')'))

{

printf("运算符输入有误!请重新输入...\n")

goto root

}

else if(str[i]=='('&&str[i+1]==')')

{

printf("括号内不可无数值!请重新输入...\n")

goto root

}

else if(str[i]==')'&&(str[i+1]!='+'&&str[i+1]!='-'&&str[i+1]!='*'&&str[i+1]!='/'))

{

printf("括号后不可无运算符!请重新输入...\n")

goto root

}

}

if(bracket_flag!=0)

{

printf("括号不匹配!请重新输入...\n")

goto root

}

if(str[strlen(str)-1]!='=')//自动添加"="

{

printf("未输入\"=\"号,自动添加...\n")

str[strlen(str)+1]=str[strlen(str)]

str[strlen(str)]='='

puts(str)

}

string_scan(str)

printf("\n计算完成!请选择:\n1.继续计算.\n2.退出.\n\n")

loop_2: scanf("%d",&select)

switch(select)

{

case 1: break

case 2: exit(0)

default :printf("选择错误!请重新选择...\n")goto loop_2break

}

}

}

三:实现功能:

1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。

依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,然后输出结果。

结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘X’退出。

例如:输入:2

+

5

输出:7

2)实现单运算符表达式计算的功能。

输入的 *** 作数可以包含整数或浮点数。如果遇到错误的表达式,应输出错误提示信息。

输入表达式如下:

例如:输入:2+5

输出:7

表达式要求要可以有括号,并且+-*/要分优先级的

//文件名:caculate.cpp

#include <iostream.h>

#include <stdlib.h> //包含清屏函数的头文件

void first() //定义界面函数

{

cout<<"---------------------------------------------------------------"<<endl

cout<<" 欢迎使用计算器 "<<endl

cout<<"---------------------------------------------------------------"<<endl

cout<<"请选择以下功能:"<<endl

cout<<endl

cout<<"1、按C键清屏 2、按R键返回主界面"<<endl

cout<<endl

}

void function(char)//申明功能函数

void caculate (double X,char op,double Y) //申明计算函数

void main()

{

first()

int n=0

char op // op定义为某个运算符号

double X,Y

cout<<"输入运算:"

cin>>X>>op>>Y

caculate(X,op,Y) // 调用计算函数

}

void function(char iteam) //定义功能函数

{

char op

double X,Y

if(iteam=='C')

{

system("cls") //如果是C,则清屏,调用清屏函数

cout<<"继续 *** 作请输入X,op,Y"<<endl //实现二次 *** 作的语句

cin>>X>>op>>Y

caculate(X,op,Y)

}

if(iteam=='R')

{

first()//如果是R,则返回主界面

cout<<"继续 *** 作请输入X,op,Y"<<endl

cin>>X>>op>>Y

caculate(X,op,Y)

}

}

void caculate (double X,char op,double Y) //定义计算函数

{

char opp

cout<<"输出结果:"

switch(op) //用switch语句定义加减乘除

{

case'+':X=X+Y

cout<<X<<endl

break

case'-':X=X-Y

cout<<X<<endl

break

case'*':X=X*Y

cout<<X<<endl

break

case'/':

if(Y!=0)

{

X=X/Y

cout<<X<<endl

}

else

cout<<"error!"<<endl

break

default:cout<<"error!"<<endl

}

cin>>opp

function(opp) //调用function语句判断是否是输入菜单中的命令

if(opp=='+'||opp=='-'||opp=='*'||opp=='/') //判断第一个输入的字符是不是+、-、*、/

{ //如果是运算符,那么再次输入一个运算数字,递规调用caculate函数,实现再次运算

cin>>Y

caculate(X,opp,Y)

}

else if(sizeof(double (opp))==8)

{

X=double(opp)-48 //强制类型转换,将字符型的op转换为double型

cin>>opp>>Y //如果不是运算符,那么再次输入运算符号,以及运算数字,递规调用caculate函数,实现再次运算

caculate(X,opp,Y)

}

}

三个单独都可实现,但是要求完美请三个一起用

1.125*3+125*5+25*3+25

2.9999*3+101*11*(101-92)

3.(23/4-3/4)*(3*6+2)

4. 3/7 × 49/9 - 4/3

5. 8/9 × 15/36 + 1/27

6. 12× 5/6 – 2/9 ×3

7. 8× 5/4 + 1/4

8. 6÷ 3/8 – 3/8 ÷6

9. 4/7 × 5/9 + 3/7 × 5/9

10. 5/2 -( 3/2 + 4/5 )

11. 7/8 + ( 1/8 + 1/9 )

12. 9 × 5/6 + 5/6

13. 3/4 × 8/9 - 1/3

14. 7 × 5/49 + 3/14

15. 6 ×( 1/2 + 2/3 )

16. 8 × 4/5 + 8 × 11/5

17. 31 × 5/6 – 5/6

18. 9/7 - ( 2/7 – 10/21 )

19. 5/9 × 18 – 14 × 2/7

20. 4/5 × 25/16 + 2/3 × 3/4

21. 14 × 8/7 – 5/6 × 12/15

22. 17/32 –游枣 3/4 × 9/24

23. 3 × 2/9 + 1/3

24. 5/7 × 3/25 + 3/7

25. 3/14 ×× 2/3 + 1/6

26. 1/5 × 2/3 + 5/6

27. 9/神桐拆22 + 1/11 ÷ 1/2

28. 5/3 × 11/5 + 4/3

29. 45 × 2/3 + 1/3 × 15

30. 7/19 + 12/19 × 5/6

31. 1/4 + 3/4 ÷ 2/3

32. 8/7 × 21/16 + 1/2

33. 101 × 1/5 – 1/5 × 21

34.50+160÷40

35.120-144÷18+35

36.347+45×2-4160÷52

37(58+37)÷(64-9×5)

38.95÷(64-45)

39.178-145÷5×6+42

40.812-700÷(9+31×11)

41.85+14×(轮枯14+208÷26)

42.77+27÷(99-96)-3

43.120-36×4÷18+35

44.(58+37)÷(64-9×5)

45.(6.8-6.8×0.55)÷8.5

46.0.12× 4.8÷0.12×4.8

47.(3.2×1.5+2.5)÷1.6

48.6-1.6÷4= 5.38+7.85-5.37=

49.7.2÷0.8-1.2×5= 6-1.19×3-0.43=

50.6.5×(4.8-1.2×4)=

51.5.8×(3.87-0.13)+4.2×3.74

52.32.52-(6+9.728÷3.2)×2.5

53.[(7.1-5.6)×0.9-1.15] ÷2.5

54.5.4÷[2.6×(3.7-2.9)+0.62]

55.12×6÷(12-7.2)-6

56.12×6÷7.2-6

57.0.68×1.9+0.32×1.9

58.58+370)÷(64-45)

59.420+580-64×21÷28

60.136+6×(65-345÷23)

15-10.75×0.4-5.7

62.18.1+(3-0.299÷0.23)×1

63.(6.8-6.8×0.55)÷8.5

64.0.12× 4.8÷0.12×4.8

65.(3.2×1.5+2.5)÷1.6

66.3.2×6+(1.5+2.5)÷1.6

67.0.68×1.9+0.32×1.9

68.10.15-10.75×0.4-5.7

69.5.8×(3.87-0.13)+4.2×3.74

70.32.52-(6+9.728÷3.2)×2.5

71.[(7.1-5.6)×0.9-1.15] ÷2.5

72.5.4÷[2.6×(3.7-2.9)+0.62]

73.12×6÷(12-7.2)-6

74.12×6÷7.2-6

75.33.02-(148.4-90.85)÷2.5

1) 86+49+114= 2) 240+(39-40)=

3) 255+(352+145+48)= 4) (345+377)+(55+23)=

5) 9+(80+191)= 6) (268+314+132)+86=

7) 5190÷15= 8) 495+(278+5)+222=

9) 174×36×25= 10) 399-199=

11) 48+(164+152)+36= 12) 133-(28+29)-43=

13) 1650÷25= 14) 260×8-8-8×59=

15) 996+500= 16) 6975÷25=

17) 196-95= 18) 328-(163-72)=

19) 199+(84-99)= 20) 885-1-201-298=

21) 460-35-3-262= 22) (98+59+2)+41=

23) 736×12-12-12×335= 24) 116+(112+184)=

25) 150×258+142×150= 26) 31×24×25=

27) 9000÷25= 28) 502-287-54-159=

29) 307+(92+93)= 30) 80×125=

31) 102×15= 32) 30+(63+70)+37=

33) 27+(73+73)+27= 34) 86+(98+14+2)=

35) 544-272-28= 36) 18000÷150÷4=

37) 103×69= 38) 25×64×125=

39) 343-188-12= 40) 509×11-11-11×8=

41) 79×24×25= 42) (145+25)+(155+275)=

43) (447+423)+(53+77)= 44) 46+15+54=

45) 589-109-(6+185)= 46) 8×125=

47) 20×25= 48) 89×245+155×89=

49) 92+(79+8+21)= 50) 222+15+78=

51) 96×125= 52) 30600÷25÷4=

53) 5996+3004= 54) 6015-(518+699)-2783=

55) 4003×2426= 56) 2467×70-70-70×466=

57) 84×25= 58) 4001-2002=

59) 1616×506+2494×1616= 60) 4×17+4+1982×4=

61) 799×660+340×799= 62) 3991×36×25=

63) 6076-875-(805+3320)= 64) 6056-679-40-4281=

65) 4134+(2819+866)+2181= 66) 5898-(2065-102)=

67) 3297×1273+2727×3297= 68) 1312+(153+688+1847)=

69) 2315-793-114-1093= 70) 3940+(1739-1940)=

71) 1455+(1768+1545)+1232= 72) 975+(1007+2025)=

73) 24×1951+24+48×24= 74) 30425÷25=

75) 1376+(1961+624+39)= 76) (686+1872+2314)+1128=

77) 2922+(260-922)= 78) 113600÷100÷4=

79) 2002×658= 80) 1428+(958+2572)=

81) 2001×786= 82) 190×760+190+3239×190=

83) 2976×1145+2855×2976= 84) 88×25=

85) 8122-(3084-1878)= 86) 879+(1295+2121)=

87) 3998+2001= 38) 2595×178-178-178×594=

89) 4467-2024-976= 90) 1319×1339+1661×1319=

91) 997×885= 92) 453×8×125=

93) 4928-(871+1928)= 94) 997×917=

95) 1526+(938-526)= 96) 803×12×25=

97) 114000÷1200= 98) 6933×332-332-332×2932=

99) 16×25= 100) 25×224×125=

101)9/22 + 1/11 ÷ 1/2

102)5/3 × 11/5 + 4/3

103)45 × 2/3 + 1/3 × 15

104) 7/19 + 12/19 × 5/6

106) 8/7 × 21/16 + 1/2

107) 101 × 1/5 – 1/5 × 21

108)50+160÷40 (58+370)÷(64-45)

109)120-144÷18+35

110)347+45×2-4160÷52

111)(58+37)÷(64-9×5)

112)95÷(64-45)

113)178-145÷5×6+42 420+580-64×21÷28

114)812-700÷(9+31×11) (136+64)×(65-345÷23)

115)85+14×(14+208÷26)

116)(284+16)×(512-8208÷18)

117)120-36×4÷18+35

118)(58+37)÷(64-9×5)

119)(6.8-6.8×0.55)÷8.5

120)0.12× 4.8÷0.12×4.8

121)(3.2×1.5+2.5)÷1.6 (2)3.2×(1.5+2.5)÷1.6

121)6-1.6÷4= 5.38+7.85-5.37=

122)7.2÷0.8-1.2×5= 6-1.19×3-0.43=

123)6.5×(4.8-1.2×4)= 0.68×1.9+0.32×1.9

124)10.15-10.75×0.4-5.7

125)5.8×(3.87-0.13)+4.2×3.74

126)32.52-(6+9.728÷3.2)×2.5

127)[(7.1-5.6)×0.9-1.15] ÷2.5

128)5.4÷[2.6×(3.7-2.9)+0.62]

129)0.9+0.1÷0.1 0.3×0.3×0.3

130)0.5÷0.5÷0.5 0.8-0.8×0.5

131)0.8÷0.8×0.5 2.7+2.3÷0.2

132)5.4÷1.8-1.8 11.2-1.93+0.8

133)0.38×2.9+0.38 0.5-0.5×0.5

134)0.8÷0.8×0.5 2.7+2.3÷0.2

135)5.4÷1.8-0.8 11.2-1.93+8.07

136)1-1÷4 0.65×102

137)9.87-(5.87+2.9)

138)(0.25+0.45)×0.4

139)(0.36+1.29)÷3 0.008+0.992×2.5×40

140)4.84+0.3×15÷0.2+77.5 0.15×(3.79-1.9)+1.11×0.15

141)0.05×[30-(18.4+27.83÷4.6)] (6.8-6.8×0.55)÷8.5

142)0.12× 4.8÷0.12×4.8 1.6-1.6÷4

143)5.38+7.85-5.37 7.2÷0.8-1.2×5

144)6-1.19×3-0.43 6.5×(4.8-1.2×4)

145)0.68×1.9+0.32×1.9 10.15-10.75×0.4-5.7

147)146)5.8×(3.87-0.13)+4.2×3.74 32.52-(6+9.728÷3.2)×2.5

148)[(7.1-5.6)×0.9-1.15] ÷2.5 5.4÷[2.6×(3.7-2.9)+0.62]

149)5.47+12.81+3.53+7.19 0.83×12.5×8

2.9×102 3.8×6.9+3.8×2.1+3.8

150)109+(72+91)-93×24×125=

一、设计的流程:

1. 主界面设计,选择练习或测试,按ESC结束程序。

2. 题型选择界面设计,选择加、减、乘、除或混合运算,按ESC返回主界面。

3. 系统随机出题,运算数及结果均在100以内,乘、除法应能整除,显示算式。

4. 练习时脊樱,系统随机出题,键入结果,正确和错误均有提示,出错时允许再输入,最多三次机会,若还不正确,给出答案。继续出题,按ESC,显示总题数,正确数和正确率。

5. 测试时,系统自动出10道题,每题只给一次机会,每题10分,统计得分。结束后,给出总分,显示各题的对错信息,错误的给出答案。中间按ESC键结束。显示已作题的对错信息,错误的给出答案,不显示得分,按任意键返回题型选择界面。

相关知识:按键 *** 作、数组、指针、结构体等

二、例程:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<time.h>

void main()

{

  int a[10],b[10],d[10],c[10],num=0,result,add=0

  float val

  char fa[5]={'+','-','*','/'}

  

  /* 出10道题 */

  while(1)

  {

   srand((unsigned)time(NULL))

   d[num]=abs(rand())%4/* 保证出题算法的随机性 */

   while(1)   /* 保证出题成功 */

   {

   c[num]=-1

   a[num]=abs(rand())%100

   b[num]=abs(rand())%100

   if(d[num]==0) c[num]=a[num]+b[num]

   else if(d[num]==1) c[num]=a[num]-b[num]

   else if(d[num]==2) c[num]=a[num]*b[num]

   else if(d[num]==3) 

     {

       if(b[num]>0)val=1.0*a[num]/b[num]

       else val=-1

     }

   if(d[num]<=2)

      { 

       if(c[num]>=0 && c[num]<=100) break

  纤野旅     }

   else

      { 

    if(a[num]==int(val)*b[num] && val>=0)

       {c[num]=val break}

   毁凳    }

   }

   num++

   if(num==10) break

  }

  /* 回答 */

  num=0

  while(1)

  {

   printf("%d %c %d= ",a[num],fa[d[num]],b[num])

   scanf("%d",&result)

   if(result==c[num])

   {

    printf("回答正确!\n")

    add+=10

   }

   else

    printf("错误,正确答案: %d\n",c[num])

      num++

      if(num==10) break

    }

  printf("\n得分:%d\n",add)

  getch()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12541731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存