我想问一个C语言关于指针的题!小题!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:14:40
include <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p=a;
for(;p<a[0]+12;p++)
{ printf("%4d",*p);
if((P-a[0])%4==0)
printf("\n");

}
printf("\n");
}
请问这哪里有问题??

运行了一下,除了 if((P-a[0])%4==0) 这里的 P应该为p之外,没出错。

指针运算好像没有错误。

调试过了,出现三个问题
1. int*p=a;错了,应该是int*p=*a;
2 .这里if((P-a[0])%4==0) ,P是大写,应改成小写的p.你定义的是小写的p,
c语言区别大小写的
3. 判断何时回车应该放在输出之前,因为这样不会出现第一行只有1的情况.
#include <stdio.h>

void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p=*a;
for(;p<a[0]+12;p++)
{
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
printf("\n");
}

1、include 前面加#
2、P改为小写;
3、如果你为了输出好的格式,请将printf("%4d",*p); 放在if((P-a[0])%4==0) printf("\n"); 之后。

这样就没有问题了:
#include <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p=a;
for(;p<a[0]+12;p++)
{
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
printf("\n");