求C++高手帮我看下我的 程序的 错误。并帮我改正一下。谢谢~~~

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-07
C 程序请高手看下,为什么出现如下错误……感谢!

P1M0,P1M1,P3M0,P3M1 是STC单片机专用的特殊功能寄存器,必须在编译器内增加STC单片机的相关文件。单片机什么型号?我发给你。
你的邮箱?

while(j/n!=0) /*调试时设置断点*/
j=j+m;
这里就出问题了,因为要让j/n == 0; 那么j必须等于0,但是while循环中j += m;注定j不会等于0;所以这里会造成死循环。 错误就在循环条件中,你自己找一下,应该是你粗心造成的,如果找不出来,再问我,我再告诉你。
}while(m<0||n<0); 这里最好把条件改成 m<=0||n<=0 对0做公约数公倍数没什么意义。

传入数组参数的时候,使用的是int a[m][m],其中的m不能为变量
楼主程序中m值没有改变过
可以把
int m=10;
改为
#define m 10
就行了

数组作为函数参数只是相当与一个指针,你形参这个时候只是一个指向二位数组的指针 而不是数组
可以这样改下 我只是大致写下 对不对 你再编译下
bool isself(int **a, int m){
for(i=0;i<m;i++){
if(a[i][i]!=1)return false;}
return true;}

#include<iostream>
using namespace std;
int m=10;
int n,i,j,k,x;
bool isself(int a[10][10]){
for(i=0;i<10;i++){
if(a[i][i]!=1)return false;}
return true;}
bool issym(int a[10][10]){
for(i=0;i<10;i++)
for(j=0;j<10;j++){
if(a[i][j]!=a[j][i])return false;}
return true;}
bool istran(int t[10][10],int a[10][10]){
for(i=0;i<10;i++)
for(j=0;j<10;j++){
if(t[i][j]!=0&&a[i][j]==0)
return false;}
return true;}
int main()
{
int X[10]={1,2,3,4,5,6,7,8,9,10};
int a[10][10];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
cin>>a[i][j];
int t[10][10]={0};
for(i=0;i<10;i++)
for(j=0;j<10;j++){
for(k=0;k<10;k++)
t[i][j]=t[i][j]+a[i][k]*a[k][j];}
if(isself(a)&&issym(a)&&istran(t,a))
{cout<<"R是等价关系"<<endl;
int X1[10][10]={0};
for(i=0;i<10;i++){
x=0;
for(j=0;j<10;j++){
if(a[i][j]==1){
X1[i][x++]=X[j];}}}
cout<<"等价类是:"<<endl;
for(i=0;i<10;i++){
cout<<X1[i][0];
for(j=1;j<x;j++)
cout<<" "<<X1[i][j];
cout<<endl;}}
else cout<<"R不是等价关系"<<endl;
return 0;
}

//改好了
#include<iostream>
using namespace std;
const int m=10;//不能动态定义数组长度,这里必须是常量
int n,i,j,k,x;
bool isself(int a[m][m]){
for(i=0;i<m;i++){
if(a[i][i]!=1)return false;}
return true;}
bool issym(int a[m][m]){
for(i=0;i<m;i++)
for(j=0;j<m;j++){
if(a[i][j]!=a[j][i])return false;}
return true;}
bool istran(int t[m][m],int a[m][m]){
for(i=0;i<m;i++)
for(j=0;j<m;j++){
if(t[i][j]!=0&&a[i][j]==0)
return false;}
return true;}
int main()
{
int X[10]={1,2,3,4,5,6,7,8,9,10};
int a[10][10];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
cin>>a[i][j];
int t[10][10]={0};
for(i=0;i<10;i++)
for(j=0;j<10;j++){
for(k=0;k<10;k++)
t[i][j]=t[i][j]+a[i][k]*a[k][j];}
if(isself(a)&&issym(a)&&istran(t,a))
{cout<<"R是等价关系"<<endl;
int X1[10][10]={0};
for(i=0;i<10;i++){
x=0;
for(j=0;j<10;j++){
if(a[i][j]==1){
X1[i][x++]=X[j];}}}
cout<<"等价类是:"<<endl;
for(i=0;i<10;i++){
cout<<X1[i][0];
for(j=1;j<x;j++)
cout<<" "<<X1[i][j];
cout<<endl;}}
else cout<<"R不是等价关系"<<endl;
return 0;
}