C语言编程问题.请高手进(附源码)!!!!!!!!!HELP
//三个地方, 不过最后那个函数递归的时候最好先关闭文件。
#include "stdioh"
#include "stdlibh"
void fcxxwh(void);
void fcxxcx(void);
void dc(void);
void zz(void);
void sr(void);
void main()
{
int a;
printf("\t饭店信息维护系统\n");
printf("1饭菜信息维护\t");
printf("2饭菜信息查询\n");
printf("3点菜\t\t");
printf("4结帐\n");
printf("请输入所需要的功能:");
scanf("%d",&a);
switch(a)
{
case 1:fcxxwh();break;
case 2:;break;
case 3:;break;
case 4:;break;
default:printf("输入错误,请重新打开程序输入!");
}
}
void fcxxwh(void)
{int a,b,c;
printf("1录入\t");
printf("2修改\t");
printf("3删除\t");
printf("\n请输入所需要的功能:");
scanf("%d",&a);
switch(a)
{case 1:
printf("请输入录入次数:");
scanf("%d",&b);//---------------&b
for(c=0;c!=b;c++)
sr();break;
case 2:;break;
case 3:;break;
default:printf("输入错误,请重新打开程序输入!");
}
}
void sr(void)
{
int b=0,d=0,f=0;
float e=00;
char A[20],c[20];
FILE g;
g=fopen("fdsjdat","a+");//----------a方式好,是追加
printf("请输入菜的类别:(数字)\n");
printf("1主食\t2热菜\t3凉菜\t4汤\t");
scanf("%d",&b);
printf("请输入菜名,按回车键结束\n");
scanf("%s",A);
printf("\n请输入拼音码(菜名首字母)&编码&价格{回车确定}\n");
scanf("%s%d%f",c,&d,&e);
printf("此款菜:类别为%d,编码为%d,拼音吗为%s,菜名为%s,价格为%f\n是否正确(正确请输入1,否则按任意键退出):",b,d,c,A,e);
scanf("%d",&f); //------------&f
if (f==1)
fprintf(g,"此款菜:类别为%d,编码为%d,拼音吗为%s,菜名为%s,价格为%f",b,d,c,A,e);//------------fprintf
else
sr();
}
如果是“cpp”文件并且有VC++的环境,可直接双击文件打开或者先打开编译环境,在新建一个控制台下的源文件,然后,选择file菜单下的open找到你的文件导入,然后编译运行;如果是其他格式的,如txt文件,也可先打开编译环境,新建一个控制台下的源文件,然后直接复制粘贴进去,然后编译运行;
便已运行的操作如图:
Linux下的glic库的源码链接:
http://ftpgnuorg/gnu/glibc/,你可以下载最新版本的glibc-224targz这个压缩文件,在Windows系统下直接用WinRAR解压即可,如果在Linux系统下用命令行解压的话,命令如下:tar -xzvf glibc-224targz。
#include <string>
#include <iostream>
#include <timeh>
#include <vector>
using namespace std;
class Employee //定义雇员类
{
public:
Employee(); //构造函数
virtual VEmployee();
virtual void Display()=0;
int GetAge(); //获取年龄
string GetName(); //获取姓名
protected:
int Id; //职工ID号
string Name; //职工姓名
char Sex[5]; //性别
int Wage; //工资
string BirthDay; //出身年月
string WorkTime; //参加工作时间
int Age; //年龄
};
class Worker : public Employee //定义工人类
{
public:
Worker();
virtual VWorker();
void Display();
};
class Teacher : public Employee //定义教师类
{
public:
Teacher();
virtual VTeacher();
void Display();
string GetAcademy();
private:
string Academy;
};
Employee::Employee()
{
}
Employee::VEmployee()
{
}
int Employee::GetAge()
{
return Age;
}
string Employee::GetName()
{
return Name;
}
Teacher::Teacher() //添加教师信息
{
cout<<"请输入该教师的信息:"<<endl;
cout<<"职工编号 : "<<endl;
cin>>Id;
cout<<"姓名 : "<<endl;
cin>>Name;
cout<<"性别 : "<<endl;
cin>>Sex;
cout<<"工资 : "<<endl;
cin>>Wage;
cout<<"出生时间 : (格式xxxx/xx/xx)"<<endl;
cin>>BirthDay;
cout<<"参加工作时间 : (格式xxxx/xx/xx)"<<endl;
cin>>WorkTime;
cout<<"所属院系 : "<<endl;
cin>>Academy;
//从生日里提取出生的年份
int Pos = BirthDayfind_first_of('/');
string BirthYear;
BirthYearassign(BirthDay,0,Pos);
char chBirthYear[6];
strcpy(chBirthYear,BirthDayc_str());
//获取当前系统的年份
char NowYear[5];
time_t tnow = time(0);
strftime(NowYear , 5 , "%Y" , localtime(&tnow));
Age = atoi(NowYear)-atoi(chBirthYear); //计算年龄
}
Teacher::VTeacher()
{
}
void Teacher::Display(){ //display()同名函数,输出教师信息
cout<<"职工编号 : "<<Id<<endl;
cout<<"姓名 : "<<Name<<endl;
cout<<"性别 : "<<Sex<<endl;
cout<<"工资 : "<<Wage<<endl;
cout<<"出生时间 : "<<BirthDay<<endl;
cout<<"参加工作时间 : "<<WorkTime<<endl;
cout<<"年龄 : "<<Age<<endl;
}
string Teacher::GetAcademy(){
return Academy;
}
Worker::Worker() //添加工人信息
{
cout<<"请输入该工人的信息:"<<endl;
cout<<"职工编号 : "<<endl;
cin>>Id;
cout<<"姓名 : "<<endl;
cin>>Name;
cout<<"性别 : "<<endl;
cin>>Sex;
cout<<"工资 : "<<endl;
cin>>Wage;
cout<<"出生时间 : (格式xxxx/xx/xx)"<<endl;
cin>>BirthDay;
cout<<"参加工作时间 : (格式xxxx/xx/xx)"<<endl;
cin>>WorkTime;
//从生日里提取出生的年份
int Pos = BirthDayfind_first_of('/');
string BirthYear;
BirthYearassign(BirthDay,0,Pos);
char chBirthYear[6];
strcpy(chBirthYear,BirthDayc_str());
//获取当前系统的年份
char NowYear[5];
time_t tnow = time(0);
strftime(NowYear , 5 , "%Y" , localtime(&tnow));
Age = atoi(NowYear)-atoi(chBirthYear); //计算年龄
}
Worker::VWorker()
{
}
void Worker::Display(){//display()同名函数,输出工人信息
cout<<"职工编号 : "<<Id<<endl;
cout<<"姓名 : "<<Name<<endl;
cout<<"性别 : "<<Sex<<endl;
cout<<"工资 : "<<Wage<<endl;
cout<<"出生时间 : "<<BirthDay<<endl;
cout<<"参加工作时间 : "<<WorkTime<<endl;
cout<<"年龄 : "<<Age<<endl;
}
void AddTeacher(vector <Teacher> TeaInfo) //新增老师对象
{
system("color 05A"); //设置当前窗口的背景色和前景色
Teacher TeaTemp;
(TeaInfo)push_back(TeaTemp);
}
void AddWoker(vector <Worker> WorkerInfo) //新增工人对象
{
system("color 05A");
Worker Wokertmp;
(WorkerInfo)push_back(Wokertmp);
}
void DisplayAll(vector <Teacher> TeaInfo,vector <Worker> WokerInfo){ //显示全部职工记录
system("color 05A");
cout<<"所有教师的信息:"<<endl;
vector <Teacher>::iterator pTeaInfo;
for (pTeaInfo=(TeaInfo)begin();(TeaInfo)empty()!=1&&pTeaInfo!=(TeaInfo)end();pTeaInfo++) //如果到达vector末尾,则退出
{
(pTeaInfo)Display();
cout<<endl;
}
cout<<"所有工人的信息:"<<endl;
vector <Worker>::iterator pWorkerInfo;
for (pWorkerInfo=(WokerInfo)begin();(WokerInfo)empty()!=1&&pWorkerInfo!=(WokerInfo)end();pWorkerInfo++) //如果到达vector末尾,则退出
{
(pWorkerInfo)Display();
cout<<endl;
}
cout<<"按Enter返回"<<endl;
getchar(); getchar();
}
void DisAvgTeacherAge(vector <Teacher> TeaInfo){ //查询老师平均年龄
system("color 05A");
int SumAge = 0;
vector <Teacher>::iterator pTeaInfo;
for (pTeaInfo=(TeaInfo)begin();(TeaInfo)empty()!=1&&pTeaInfo!=(TeaInfo)end();pTeaInfo++)//遍历老师容器
{ //如果到达vector末尾,则退出
SumAge+= (pTeaInfo)GetAge();
cout<<endl;
}
if((TeaInfo)size()!=0)
cout<<"教师的平均年龄为"<<SumAge/((TeaInfo)size())<<endl;
else cout<<"没有记录"<<endl;
cout<<"按Enter返回"<<endl;
getchar(); getchar();
}
void DisAvgWorkerAge(vector <Worker> WokerInfo){
system("color 05A");
int SumAge = 0;
vector <Worker>::iterator pWorkerInfo;
for (pWorkerInfo=(WokerInfo)begin();(WokerInfo)empty()!=1&&pWorkerInfo!=(WokerInfo)end();pWorkerInfo++) //如果到达vector末尾,则退出
{
SumAge+= (pWorkerInfo)GetAge();
cout<<endl;
}
if((WokerInfo)size()!=0)
cout<<"职工的平均年龄为"<<SumAge/((WokerInfo)size())<<endl;
else cout<<"没有记录"<<endl;
cout<<"按Enter键返回"<<endl;
getchar(); getchar();
}
void DelTeacher(vector <Teacher> TeaInfo){ //用于删除老师信息
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
cout<<"请输入您要删除的老师的姓名:"<<endl;
cout<<"姓名: ";
cin>>SearchName;
for(pTeaInfo=(TeaInfo)begin();(TeaInfo)empty() != 1&&pTeaInfo!=(TeaInfo)end();pTeaInfo++) //如果到达vector末尾,则退出
{
if (0==SearchNamecompare((pTeaInfo)GetName())) //如果找到要删除老师的姓名,则执行
{
Hflag=true; //找到老师
(TeaInfo)erase(pTeaInfo); //删除vector中指定的老师
continue;
}
}
if (false==Hflag) //如果没有该老师,则执行
{
cout<<"没有该老师!"<<endl;
}
cout<<"按Enter返回"<<endl;
getchar(); getchar();
}
void DelWorker(vector <Worker> WokerInfo) //用于删除工人信息
{
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Worker>::iterator pWorkerInfo;
cout<<"请输入您要删除的工人的姓名:"<<endl;
cout<<"姓名: ";
cin>>SearchName;
for(pWorkerInfo=(WokerInfo)begin();(WokerInfo)empty() != 1&&pWorkerInfo!=(WokerInfo)end();pWorkerInfo++) //如果到达vector末尾,则退出
{
if (0==SearchNamecompare((pWorkerInfo)GetName())) //如果找到要删除工人的姓名,则执行
{
Hflag=true; //找到工人
(WokerInfo)erase(pWorkerInfo); //删除vector中指定的工人
continue;
}
}
if (false==Hflag) //如果没有该工人,则执行
{
cout<<"没有该老师!"<<endl;
}
cout<<"按Enter返回"<<endl;
getchar();getchar();
}
void SearchByName(vector <Teacher> TeaInfo,vector <Worker> WokerInfo){ //按名字查找职工信息
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
cout<<"请输入您要查找的职工的姓名:"<<endl;
cout<<"姓名: ";
cin>>SearchName;
for(pTeaInfo=(TeaInfo)begin();pTeaInfo!=(TeaInfo)end();pTeaInfo++)
{
if (0==SearchNamecompare((pTeaInfo)GetName())) //如果找到输入的职工,则执行
{
Hflag=true; //找到职工
cout<<"这个人是老师,他的信息为:"<<endl;
(pTeaInfo)Display(); //显示职工信息
continue;
}
}
vector <Worker>::iterator pWorkerInfo;
for(pWorkerInfo=(WokerInfo)begin();pWorkerInfo!=(WokerInfo)end();pWorkerInfo++)
{
if (0==SearchNamecompare((pWorkerInfo)GetName())) //如果找到输入的职工,则执行
{
Hflag=true; //找到职工
cout<<"这个人是老师,个人信息为:"<<endl;
(pWorkerInfo)Display(); //显示职工信息
continue;
}
}
if (false==Hflag)
{
cout<<"没有这个职工!"<<endl; //没有找到信息
}
cout<<"按Enter返回"<<endl; //返回
getchar(); getchar();
}
void DisTeacherByAcademy(vector <Teacher> TeaInfo){ //按系输出教师信息
system("color 05A");
bool Hflag=false;
string SearchName;
vector <Teacher>::iterator pTeaInfo;
while((TeaInfo)empty()!=1) { //输出所有指定系的老师
pTeaInfo=(TeaInfo)begin();
string Academy = (pTeaInfo)GetAcademy();
cout<<"系:"<<Academy<<","<<"该系的老师有:"<<endl;
for(pTeaInfo=(TeaInfo)begin();(TeaInfo)empty()!=1&&pTeaInfo!=(TeaInfo)end();){
if (0==Academycompare((pTeaInfo)GetAcademy()))
{
(pTeaInfo)Display();
cout<<endl;
(TeaInfo)erase(pTeaInfo);
pTeaInfo=(TeaInfo)begin();
}
else pTeaInfo++;
}
cout<<endl;
}
cout<<"按Enter返回"<<endl;
getchar(); getchar();
}
void WriteFile(vector <Teacher> TeaInfo,vector <Worker> WokerInfo) //生成新文件
{
FILE fp;
if (NULL==(fp=fopen("Employeetxt","w+")))
{
cout<<"打开文件错误"<<endl;
exit(-1);
}
vector <Worker>::iterator pWorkerInfo;
vector <Teacher>::iterator pTeaInfo;
for(pTeaInfo=(TeaInfo)begin();pTeaInfo!=(TeaInfo)end();pTeaInfo++) //写入vector中所有老师的信息
{
fputs("教师信息:\n",fp);
fprintf(fp,"姓名:%s\n",(pTeaInfo)GetName()c_str());
fprintf(fp,"年龄:%d\n",(pTeaInfo)GetAge());
fputs("\n",fp);
}
fputs("教师信息结束\n",fp);
for(pWorkerInfo=(WokerInfo)begin();pWorkerInfo!=(WokerInfo)end();pWorkerInfo++) //写入vector中所有老师的信息
{
fputs("职工信息:\n",fp);
fprintf(fp,"姓名:%s\n",(pWorkerInfo)GetName()c_str());
fprintf(fp,"年龄:%d\n",(pWorkerInfo)GetAge());
fputs("\n",fp);
}
fputs("职工信息结束\n",fp);
fclose(fp);
}
void Mainmenu(){//菜单界面
system("color 05A"); //设置当前窗口的背景色和前景色
cout<<" ╭――――――――――《教职工管理系统》―――――――――╮"<<endl;
cout<<" ∣ 请选择功能 ∣"<<endl;
cout<<" ├――――――――――――――――――――――――――――┤"<<endl;
cout<<" ∣ 1新建并输入职工数据 ∣"<<endl;
cout<<" ∣ 2按条件输出职工数据 ∣"<<endl;
cout<<" ∣ 3删除职工数据 ∣"<<endl;
cout<<" ∣ 0退出 ∣"<<endl;
cout<<" ╰――――――――――――――――――――――――――――╯"<<endl;
cout<<" ――――――――――――――――――――――――――――――"<<endl;
cout<<" 请选择您要服务的类别: " ;
}
void Insert(vector <Teacher> TeaInfo,vector <Worker> WorkerInfo) //增加职工数据菜单界面
{
system("color 05A"); //设置当前窗口的背景色和前景色
int select = -1;
while(select!=0)
{
cout<<" ╭――――――――――《增加职工数据》――――――――――╮"<<endl;
cout<<" ∣ 请选择操作: ∣"<<endl;
cout<<" ├――――――――――――――――――――――――――――┤"<<endl;
cout<<" ∣ 1增加一位教师记录 ∣"<<endl;
cout<<" ∣ 2增加一位工人记录 ∣"<<endl;
cout<<" ∣ 0返回主菜单 ∣"<<endl;
cout<<" ╰――――――――――――――――――――――――――――╯"<<endl;
cin>>select;
switch(select){
case 1:AddTeacher(TeaInfo);break;
case 2:AddWoker(WorkerInfo);break;
case 3:Mainmenu();break;
default:
cout<<"回到主菜单!"<<endl;
}
}
}
void Search(vector <Teacher> TeaInfo,vector <Worker> WorkerInfo) //查询职工数据菜单界面
{
system("color 05A"); //设置当前窗口的背景色和前景色
int select = -1;
while(select!=0)
{
cout<<" ╭――――――――――《查询职工数据》――――――――――╮"<<endl;
cout<<" ∣ 请选择操作: ∣"<<endl;
cout<<" ├――――――――――――――――――――――――――――┤"<<endl;
cout<<" ∣ 1显示全部职工记录 ∣"<<endl;
cout<<" ∣ 2按系输出教师信息 ∣"<<endl;
cout<<" ∣ 3按姓名检索所有信息 ∣"<<endl;
cout<<" ∣ 4计算教师平均年龄 ∣"<<endl;
cout<<" ∣ 5计算工人平均年龄 ∣"<<endl;
cout<<" ∣ 0返回主菜单 ∣"<<endl;
cout<<" ╰――――――――――――――――――――――――――――╯"<<endl;
cin>>select;
switch(select){
case 1:DisplayAll(TeaInfo,WorkerInfo);break;
case 2:DisTeacherByAcademy(TeaInfo);break;
case 3:SearchByName(TeaInfo,WorkerInfo);break;
case 4:DisAvgTeacherAge(TeaInfo);break;
case 5:DisAvgWorkerAge(WorkerInfo);break;
case 6:Mainmenu();break;
default:
cout<<"回到主菜单!"<<endl;
}
}
}
void Delete(vector <Teacher> TeaInfo,vector <Worker> WorkerInfo) //删除职工数据
{
system("color 05A"); //设置当前窗口的背景色和前景色
int select = -1;
while(select!=0)
{
cout<<" ╭――――――――――《删除职工数据》――――――――――╮"<<endl;
cout<<" ∣ 请选择操作: ∣"<<endl;
cout<<" ├――――――――――――――――――――――――――――┤"<<endl;
cout<<" ∣ 1删除一位教师记录 ∣"<<endl;
cout<<" ∣ 2删除一位工人记录 ∣"<<endl;
cout<<" ∣ 0返回主菜单 ∣"<<endl;
cout<<" ╰――――――――――――――――――――――――――――╯"<<endl;
cin>>select;
switch(select){
case 1:DelTeacher(TeaInfo);break;
case 2:DelWorker(WorkerInfo);break;
case 3:Mainmenu();break;
default:
cout<<"回到主菜单!"<<endl;
}
}
}
void MainCho(vector <Teacher> TeaInfo,vector <Worker> WorkerInfo)
{ //主菜单操作
int choice = -1;
while(choice!=0){
Mainmenu();
cin>>choice;
switch(choice){
case 1:Insert(TeaInfo,WorkerInfo);break;
case 2:Search(TeaInfo,WorkerInfo);break;
case 3:Delete(TeaInfo,WorkerInfo);break;
case 0:break;
default:
cout<<"操作错误!"<<endl;
}
}
}
void main() //主函数
{
vector <Teacher> TeaInfo; //
vector <Worker> WorkerInfo; //
vector <Teacher>::iterator pTeacher; //
vector <Worker>::iterator pWoker; //
pTeacher = TeaInfobegin(); //
pWoker = WorkerInfobegin(); //
MainCho(&TeaInfo,&WorkerInfo); //调用主要处理程序
WriteFile(&TeaInfo,&WorkerInfo); //存入文件操作
}
c语言源程序文件经过编译后生成文件的扩展名obj。
当C语言源代码被编译后,通常会生成一个“o”(object file)文件。这个文件包含了编译器所产生的机器代码,但是它还没有被链接到其他模块或库中。相应地,在不同的操作系统上可能会有不同的后缀名和二进制格式。例如,Windows上的Visual C++编译器使用“obj”作为目标文件的扩展名。
在大多数情况下,C语言经过编译后生成的文件后缀名是“o”,也可以是“obj”或其他操作系统特定的格式。这些文件包含了编译器所产生的机器代码,并且通常需要链接到一起才能生成可执行文件。
C语言简介
C语言是一门面向过程的计算机编程语言,与C++、C#、Java面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%—20%,因此C语言可以编写系统软件。
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写,是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
1)原码表示
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
例如,X1=
+1010110
X2=
一1001010
其原码记作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
在原码表示法中,对0有两种表示形式:
[+0]原=00000000
[-0]
原=10000000
2)补码表示
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。
例如,[X1]=+1010110
[X2]=
一1001010
[X1]原=01010110
[X1]补=01010110
即
[X1]原=[X1]补=01010110
[X2]
原=
11001010
[X2]
补=10110101+1=10110110
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。
例如,[X1]=+1010110
[X2]=
一1001010
[X1]原=01010110
[X1]补=01010110
即
[X1]原=[X1]补=01010110
[X2]
原=
11001010
[X2]
补=10110101+1=10110110
(3)反码表示法
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。
例如:X1=
+1010110
X2=
一1001010
[X1]原=01010110
[X1]反=[X1]原=01010110
[X2]原=11001010
[X2]反=10110101
反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。
例1
已知[X]原=10011010,求[X]补。
分析如下:
由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即
[X]原=10011010
[X]反=11100101+1
[X]补=11100110
例2
已知[X]补=11100110,求[X]原。
分析如下:
对于机器数为正数,则[X]原=[X]补
对于机器数为负数,则有[X]原=[[X]补]补
现给定的为负数,故有:
[X]补=11100110
[[X]补]反=10011001+1
[[X]补]补=10011010=[X]原+1
[[X]补]补=10011010=[X]原
总结一下,原码(为负时,正时都不变)全部取反即得到反码,反码加
"1"就得到补码了,就是这么简单。
很遗憾,标准库中的函数结合了系统,硬件等的综合能力,是比较近机器的功能实现,所以大部分是用汇编完成的,而且已经导入到了lib和dll里了,就是说,他们已经被编译好了,似乎没有代码的存在了
能看到的也只有dll中有多少函数被共享
第三方可能都是dll,因为上面也说了,dll是编译好的,只能看到成品,就可以隐藏代码,保护自己的知识产权,同时也是病毒的归宿 当然,除了DLL的确还存在一种东西,插件程序~~~
C语言编程问题.请高手进(附源码)!!!!!!!!!HELP
本文2023-10-19 23:47:47发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/294318.html