为什么我的代码没有输出值
#include<stdio.h>int main()
{
int str,i,j,t;
int (*p)=str;
printf("请输入矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&str);
}
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)//将值进行交换,如str与str交换
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",*(*(p+i)+j));
}
printf("\n");
}
return 0;
}
最后没有输出值 如果输入的矩阵是
1 2 3
4 5 6
7 8 9
要输出
1 4 7
2 5 8
3 6 9 你难道没有发现以下代码FOR循环没有括号吗
for(j=i;j<3;j++)//将值进行交换,如str与str交换
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
应该为
for(j=i;j<3;j++)//将值进行交换,如str与str交换
{
t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=t;
} 干嘛要把简单事情复杂化,始终用 str 不好吗,干嘛要引入指针 int (*p)
#include<stdio.h>
int main(void)
{
int str , i , j , t ;
printf("请输入矩阵:\n") ;
for(i = 0 ; i < 3 ; i ++) for(j = 0 ; j < 3 ; j ++) scanf("%d" , & str) ;
for(i = 0 ; i < 3 ; i ++) {
for(j = i ; j < 3 ; j ++) {
t = str ;
str = str ;
str = t ;
}
}
for(i = 0 ; i < 3 ; i ++) {
for(j = 0 ; j < 3 ; j ++) {
if(! (j % 3)) {
if(j) printf("\n") ;
printf("\t\t") ;
} else {
printf(" ") ;
}
printf("%d ", str) ;
}
printf("\n") ;
}
} jackz007 发表于 2019-9-29 17:45
干嘛要把简单事情复杂化,始终用 str 不好吗,干嘛要引入指针 int (*p)
抱歉,题目要求用指针{:5_96:} lmnbvcxz1 发表于 2019-9-29 17:41
你难道没有发现以下代码FOR循环没有括号吗
for(j=i;j
嗯,改了我运行正确了
页:
[1]