您能告诉我以下代码中的逻辑有什么问题吗?我正在尝试对矩阵进行转置,但是输出却大为错误。例如,我在主函数中启动一个矩阵:
int a[2][2];
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
int *a1;
a1=&a[0][0];
然后做
transpose(a1,2,2);
输出为:[16 , 16]
,[3 , 16]
。但是输出应该是[1 , 3]
,[2 , 4]
。
int* transpose(int *a,int m,int n)
{
int i,j;
int tmp;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
*(a + i*m + j) = tmp;
*(a + i*m + j) = *(a + i + j*m);
*(a + i + j*m) = tmp;
}
}
return a;
}
答案 0 :(得分:2)
您在交换中的第一个分配是错误的方法,因此您正在处理未分配的bool IsValidEmail(string email)
{
try
{
email = email.Trim();
var addr = new System.Net.Mail.MailAddress(email);
return addr.Address == email;
}
catch
{
return false;
}
}
变量中的值。您的交换代码应为
tmp