| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1270 人关注过本帖
标题:稀疏矩阵的实现,出现很多奇怪的错误。求助
只看楼主 加入收藏
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
收藏
 问题点数:0 回复次数:1 
稀疏矩阵的实现,出现很多奇怪的错误。求助
//matrix.h
#ifndef MATRIX_H_
#define MATRIX_H_
#include <iostream>
#include <iomanip>
using namespace std;
const int MaxTerm=10000;
template <class Type>
class SparseMatrix <Type>;//稀疏矩阵的类声明
template <class Type>
class Trtupel //矩阵的三元组声明(矩阵中非零元素的存储方法)
{
friend class SparseMatrix<Type>;
int row,col;
Type value;
};
class SparseMatrix
{
private:
int Rows,Cols,Terms;//指出稀疏矩阵的行数,列数以及非零元素的个数
Trtupel<Type> smArray[MaxTerm];
public:
SparseMatrix(int maxRow,int maxCol,int m=0); //构造函数 建立一个maxRow行,maxCol列的矩阵
void PrintMatrix(); //按矩阵形式输出矩阵的内容
void PrintTrtupel(); //按三元组格式输出矩阵
SparseMatrix<Type> Transpose(); //将矩阵转置(一般方法)
SparseMatrix<Type> FastTranspose(); //快速转置
SparseMatrix<Type> Add(SparseMatrix<Type> b);
//当矩阵a与矩阵b的行,列数相同时,将这两个矩阵的对应项相加
SparseMatrix<Type> Multiply(SparseMatrix<Type> b);
//将矩阵a与矩阵b相乘
};
template <class Type>
SparseMatrix<Type>::SparseMatrix(int maxRow,int maxCol,int m=0)
{
if(maxRow<=0||maxCol<=0)
cout<<"矩阵的行数和列数不能为负数\n";
else
{
Rows=maxRow;
Cols=maxCol;
Terms=m;
}
}
template <class Type>
void SparseMatrix<Type>::InitMatrix()
{
for(int i=0;i<Terms;i++)
{
cout<<"请输入非零元素所在的行,列,和值";
int m_row,m_col;
Type m_val;
cin>>m_row>>m_col;
cin>>m_val;
if(m_row<=0||m_col<=0||m_row>Rows||m_col>Cols)
cout<<"输入错误\n";
else
{
smArray[i].row=m_row;
smArray[i].col=m_col;
smArray[i].value=m_val;
}
}
}
template <class Type>
void SparseMatrix<Type>::PrintMatrix()
{
Type Matrix[Rows][Cols];
int i=0;
int j=0;
int q=0;
while (i<Rows)
{
while(j<Cols)
{
if(i==smArray[q].row&&j==smArray[q].col)//将矩阵三元组中的项设置到对应的矩阵元素
{ //其余项设置为0
Matrix[i][j]=smArray[q].value;
i++;
j++;
q++;
}
else
{
Matrix[i][j]=0;
i++;
j++;
q++;
}
}
}
//按格式输出矩阵的元素
for(i=0;i<Rows;i++)
for(j=0;j<Cols;j++)
{
cout<<setw(5) <<Matrix[i][j];
}
cout<<endl;
}
template <class Type>
void SparseMatrix<Type>::PrintTrtupel()
{
cout<<"矩阵的三元组形式为\n";
cout<<setw(5)<<"row"<<setw(5)<<"col"<<setw(5)<<"value"<<endl;
for(int i=0;i<Terms;i++)
{
cout<<setw(4)<<smArray[i].row
<<setw(4)<<smArray[i].col
<<setw(4)<<smArray[i].value<<endl;
}
}
template <class Type>
SparseMatrix<Type> SparseMatrix<Type>::Transpose()
{
SparseMatrix<Type> b(Cols,Rows,Terms);
b.Rows=Cols;
b.Cols=Rows;
b.Terms=Terms;
if(Terms>0)
{
int status=0; //存放位置指针
for(int j=0;j<Cols;j++) //按列号扫描(也可以按行号,稍作修改)
for(int i=0;i<Terms;i++) //在数组中寻找列号为k的三元组
{
if(smArray[i].col==j)
{
b.smArray[status].row=j;
b.smArray[status].col=smArray[i].row;
b.smArray[status].value=smArray[i].value;
status++;
}
}
}
return b;
}
template <class Type>
SparseMatrix<Type> SparseMatrix<Type>::FastTranspose()
{
int *rowsize=new int[Cols]; //辅助数组,统计各列中非零元素的个数
int *rowstart=new int[Cols]; //辅助数组,预存转置后各行存放位置
SparseMatrix<Type> b(Cols,Rows,Terms); //存放转置的结果
int i;
if(Terms>0)
{
for(i=0;i<Cols;i++)
rowsize[i]=0; //先将数组清零
for (i=0;i<Terms;i++)
rowsize[smArray[i].col]++; //扫描三元组 ,逐个取出三元组的列号col,
//把以此列号为下标的数组元素的值加1
rowstart[0]=0;
for(i=1;i<Cols;i++) //计算矩阵b中第i行的开始存放位置
rowstart[i]=rowstart[i-1]+rowsize[i-1];
for(i=0;i<Terms;i++)
{
int j=rowstart[smArray[i].col];
b.smArray[j].row=smArray[i].col;
b.smArray[j].col=smArray[i].row;
b.smArray[j].value=smArray[i].value;
rowstart[smArray[i].col]++;
}
}
delete []rowstart;
delete []rowsize;
return b;
}
template <class Type>
SparseMatrix<Type> SparseMatrix<Type>:: Add(SparseMatrix<Type> b)
{
if(Cols!=b.Cols||Rows!=b.Rows)
cout<<"两矩阵的行数或者列数不相等,无法相加\n";
else
{
int i=0;
int j=0;
int count=0;
SparseMatrix<Type> c;
while(i<Terms)
{
while(j<b.Terms)
{
if(smArray[i].row<b.smArray[j].row)//查看两矩阵的三元组数组,先判断矩阵的
{ // 对应项的行数,列数是否相等,如果相等
c.smArray[count].row=smArray[i].row; //则直接将值相加。不等则复制三元组到
c.smArray[count].col=smArray[i].col; //结果数组中
c.smArray[count].value=smArray[i].value;
count++;
i++;
}
else if (smArray[i].row>b.smArray[j].row)
{
c.smArray[count].row=b.smArray[j].row;
c.smArray[count].col=b.smArray[j].col;
c.smArray[count].value=b.smArray[j].value;
count++;
j++;
}
else if (smArray[i].col>b.smArray[j].col)
{
c.smArray[count].row=smArray[i].row;
c.smArray[count].col=b.smArray[j].col;
c.smArray[count].value=b.smArray[j].value;
count++;
j++;
}
else if (smArray[i].col<b.smArray[j].col)
{
c.smArray[count].row=smArray[i].row;
c.smArray[count].col=smArray[i].col;
c.smArray[count].value=smArray[i].value;
count++;
i++;
}
else
{
c.smArray[count].row=smArray[i].row;
c.smArray[count].col=smArray[i].col;
c.smArray[count].value=smArray[i].value+b.smArray[j].value;
count++;
j++;
i++;
}
}
}
return c;
}
}
template <class Type>
SparseMatrix<Type> SparseMatrix<Type>::Multiply(SparseMatrix<Type> b)
{
if(Cols!=b.Rows)
{
cout<<" A矩阵列数和B矩阵的行数不相等,无法相乘\n";
}
if (Terms==MaxTerm||b.Terms==MaxTerm)
{
cout<<"有一个矩阵的项数达到最大,空间不足,无法运算\n";
}
int *rowSize=new int[b.Rows]; //辅助数组,矩阵B各行非零元素的个数
int rowStart=new int[b.Rows+1]; //辅助数组,矩阵B各行在三元组开始的位置
Type *temp = new Type[b.Cols]; //临时数组,暂时存放每一行计算结果
SparseMatrix<Type> result(Rows,Cols); //结果矩阵的三元组表result
for(int i=0;i<b.Rows;i++)
rowSize[i]=0;
for(i=0;i<b.Rows;i++)
rowSize[smArray[i].row]++;
rowStart[0]=0;
for(i=1;i<=b.Rows;i++)
rowStart[i]=rowStart[i-1]+rowSize[i-1];
int Current=0,lastInResult=-1; //a.smArray扫描指针及result存放指针
while (Current<Terms)
{
int RowA=smArray[Current].row;
for (i=0;i<b.Cols;i++)
temp[i]=0;
while(Current<Terms&&smArray[Current].row==RowA)
{
int ColA=smArray[Current].col; //矩阵A当前扫描到元素的列号
for(i=rowStart[ColA];i<rowStart[ColA+1];i++)
{
int ColB=b.smArray[i].col; //矩阵B中相乘元素的列号
temp[ColB]=temp[ColB]+smArray[Current].value*b.smArray[i].value;
} //A的RowA行与B的ColB列相乘
Current++;
}
for(i=0;i<b.Cols;i++)
{
if(temp[i]!=0) //将temp中的非零元素压缩到result中去
{
lastInResult++;
result.smArray[lastInResult].row=RowA;
result.smArray[lastInResult].col=i;
result.smArray[lastInResult].value=temp[i];
}
}
}
result.Rows=Rows;
result.Cols=b.Cols;
result.Terms=lastInResult+1;
delete []rowSize;
delete []rowStart;
delete []temp;
return result;
}
#endif
//Testmatrix.cpp
#include "matrix.h"
int main()
{
cout<<"请确定您要输入的矩阵元素的格式\n";
cout<<setw(5)<<"i:整数\n";
cout<<setw(5)<<"f:小数\n";
cout<<setw(5)<<"q:退出\n";
char choice1;
cin>>choice1;
while(choice1!='q'&&choice1!='Q')
{
switch(choice1)
{
case 1:
cout<<"请选择你需要进行的操作:\n";
cout<<"1:按矩阵形式输出矩阵\n";
cout<<"2:按三元组形式输出矩阵\n";
cout<<"3:一般转置\n";
cout<<"4:快速转置\n";
cout<<"5:将两矩阵相加\n";
cout<<"6:将两矩阵相乘\n";
cout<<"0:退出\n";
int choice;
cin>>choice;
while(choice!=0)
{
switch(choice)
{
case 1:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
A.InitMatrix();
A.PrintMatrix();
break;
case 2:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
A.InitMatrix();
A.PrintTrtupel();
break;
case 3:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
A.InitMatrix();
A.Transpose();
break;
case 4:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
A.InitMatrix();
A.FastTranspose();
break;
case 5:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
cout<<"初始化第一个矩阵\n";
A.InitMatrix();
cout<<"初始化第一个矩阵\n";
SparseMatrix<int> B(m_row,m_col);
B.InitMatrix();
SparseMatrix<int> C(m_row,m_col)=A.Add(B);
cout<<"按矩阵形式输出相加后的矩阵\n";
C.PrintMatrix();
cout<<"按三元组形式输出相加后的矩阵\n";
C.PrintTrtupel();
break;
case 6:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<int> A(m_row,m_col);
cout<<"初始化第一个矩阵\n";
A.InitMatrix();
cout<<"初始化第一个矩阵\n";
SparseMatrix<int> B(m_row,m_col);
B.InitMatrix();
SparseMatrix<int> C(m_row,m_col)=A.Multiply(B);
cout<<"按矩阵形式输出相乘后的矩阵\n";
C.PrintMatrix();
cout<<"按三元组形式输出相乘后的矩阵\n";
C.PrintTrtupel();
break;
default:
cout<<"请按要求作出选择:\n";
break;
}
cout<<"请选择你需要进行的操作:\n";
cout<<"1:按矩阵形式输出矩阵\n";
cout<<"2:按三元组形式输出矩阵\n";
cout<<"3:一般转置\n";
cout<<"4:快速转置\n";
cout<<"5:将两矩阵相加\n";
cout<<"6:将两矩阵相乘\n";
cout<<"0:退出\n";
int choice;
cin>>choice;
}
break;
case 2:
cout<<"请选择你需要进行的操作:\n";
cout<<"1:按矩阵形式输出矩阵\n";
cout<<"2:按三元组形式输出矩阵\n";
cout<<"3:一般转置\n";
cout<<"4:快速转置\n";
cout<<"5:将两矩阵相加\n";
cout<<"6:将两矩阵相乘\n";
cout<<"0:退出\n";
int choice;
cin>>choice;
while(choice!=0)
{
switch(choice)
{
case 1:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
A.InitMatrix();
A.PrintMatrix();
break;
case 2:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
A.InitMatrix();
A.PrintTrtupel();
break;
case 3:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
A.InitMatrix();
A.Transpose();
break;
case 4:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
A.InitMatrix();
A.FastTranspose();
break;
case 5:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
cout<<"初始化第一个矩阵\n";
A.InitMatrix();
cout<<"初始化第一个矩阵\n";
SparseMatrix<float> B(m_row,m_col);
B.InitMatrix();
SparseMatrix<float> C(m_row,m_col)=A.Add(B);
cout<<"按矩阵形式输出相加后的矩阵\n";
C.PrintMatrix();
cout<<"按三元组形式输出相加后的矩阵\n";
C.PrintTrtupel();
break;
case 6:
cout<<"请输入矩阵的行数和列数\n";
int m_row,m_col;
cin>>m_row>>m_col;
SparseMatrix<float> A(m_row,m_col);
cout<<"初始化第一个矩阵\n";
A.InitMatrix();
cout<<"初始化第一个矩阵\n";
SparseMatrix<float> B(m_row,m_col);
B.InitMatrix();
SparseMatrix<float> C(m_row,m_col)=A.Multiply(B);
cout<<"按矩阵形式输出相乘后的矩阵\n";
C.PrintMatrix();
cout<<"按三元组形式输出相乘后的矩阵\n";
C.PrintTrtupel();
break;
default:
cout<<"请按要求作出选择:\n";
break;
}
cout<<"请选择你需要进行的操作:\n";
cout<<"1:按矩阵形式输出矩阵\n";
cout<<"2:按三元组形式输出矩阵\n";
cout<<"3:一般转置\n";
cout<<"4:快速转置\n";
cout<<"5:将两矩阵相加\n";
cout<<"6:将两矩阵相乘\n";
cout<<"0:退出\n";
int choice;
cin>>choice;
}
break;
default:
cout<<"对不起,本工具暂时不支持其他格式,请重新输入\n";
}
cout<<"请确定您要输入的矩阵元素的格式\n";
cout<<setw(5)<<"i:整数\n";
cout<<setw(5)<<"f:小数\n";
cout<<setw(5)<<"q:退出\n";
char choice1;
cin>>choice1;
}
return 0;
}
编译的出现的错误
------ 已启动生成: 项目: 稀疏矩阵, 配置: Debug Win32 ------
正在编译...
Testmatrix.cpp
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : error C2143: syntax error : missing ';' before '<'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : error C2059: syntax error : '<'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(17) : error C2990: 'SparseMatrix' : non-class template has already been declared as a class template
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : error C2039: '{ctor}' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : error C2904: 'SparseMatrix' : name already used for a template in the current scope
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(45) : error C2039: 'InitMatrix' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(65) : error C2039: 'PrintMatrix' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(100) : error C2039: 'PrintTrtupel' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(112) : error C2909: 'SparseMatrix': explicit instantiation of function template requires return type
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(112) : error C2039: 'Transpose' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(112) : error C2146: syntax error : missing ';' before identifier 'Transpose'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(112) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(112) : error C2373: 'SparseMatrix' : redefinition; different type modifiers
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(136) : error C2909: 'SparseMatrix': explicit instantiation of function template requires return type
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(136) : error C2039: 'FastTranspose' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(136) : error C2146: syntax error : missing ';' before identifier 'FastTranspose'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(136) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(136) : error C2373: 'SparseMatrix' : redefinition; different type modifiers
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2909: 'SparseMatrix': explicit instantiation of function template requires return type
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2039: 'Add' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2146: syntax error : missing ';' before identifier 'Add'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2373: 'SparseMatrix' : redefinition; different type modifiers
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(33) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2065: 'Type' : undeclared identifier
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2146: syntax error : missing ')' before identifier 'b'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(166) : error C2059: syntax error : ')'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(227) : error C2039: 'Multiply' : is not a member of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(8) : see declaration of 'SparseMatrix'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(228) : error C2143: syntax error : missing ';' before '{'
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\matrix.h(228) : error C2447: '{' : missing function header (old-style formal list?)
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\testmatrix.cpp(9) : error C2065: 'choice1' : undeclared identifier
e:\c++程序\数据结构练习\稀疏矩阵\稀疏矩阵\testmatrix.cpp(10) : fatal error C1903: unable to recover from previous error(s); stopping compilation
生成日志保存在“file://e:\C++程序\数据结构练习\稀疏矩阵\稀疏矩阵\Debug\BuildLog.htm”
稀疏矩阵 - 33 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

搜索更多相关主题的帖子: 矩阵 
2007-10-14 20:58
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
都是些很明显的错误,错误提示都说的很明白

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-15 08:17
快速回复:稀疏矩阵的实现,出现很多奇怪的错误。求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014603 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved