求下面这个C程序的详细解注,菜鸟跪求大神指点啊
#include<stdio.h>voidmain(){inta[5][5]={0},i,j,(*p)[5]=a;for(i=0,j=0;i<5;i++,j=(j+2)%...
#include<stdio.h>
void main()
{
int a[5][5]={0},i,j,(*p)[5]=a;
for(i=0,j=0;i<5;i++,j=(j+2)%5)*(*(p+i)+j)=1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d\t",*(*(a+i)+j));
printf("\n");
}
} 展开
void main()
{
int a[5][5]={0},i,j,(*p)[5]=a;
for(i=0,j=0;i<5;i++,j=(j+2)%5)*(*(p+i)+j)=1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d\t",*(*(a+i)+j));
printf("\n");
}
} 展开
1个回答
展开全部
大致如下,供参考:
#include<stdio.h>
void main()
{ int a[5][5]={0},i,j,(*p)[5]=a;
// 定义int型二维数组a,第一个值初始化为0,其他位置会自动补成0
// 定义一维指针数组*p,并初始化让指针指向a的首地址,即a[0][0]
for(i=0,j=0;i<5;i++,j=(j+2)%5)
// 循环,i和j都从0开始,结束条件是i<5,循环控制是i++,j=(j+2)%5
// 第一次循环i=0,j=0,*(*(p+i)+j)=1,相当于是a[0][0]=1;
// 第二次循环i=1,j=2%5=2,所以*(*(p+i)+j)=1是a[1][2]=1
// 第三次循环i=2,j=(2+2)%5=4,所以a[2][4]=1
// 第四次循环i=3,j=(4+2)%5=1,所以a[3][1]=1
// 第五次循环i=4,j=(1+2)%5=3,所以a[4][3]=1
*(*(p+i)+j)=1;
for(i=0;i<5;i++) // 数组输出
{ for(j=0;j<5;j++)
printf("%d\t",*(*(a+i)+j)); //*(*(a+i)+j)就是a[i][j]
printf("\n"); // 换行
}
}
#include<stdio.h>
void main()
{ int a[5][5]={0},i,j,(*p)[5]=a;
// 定义int型二维数组a,第一个值初始化为0,其他位置会自动补成0
// 定义一维指针数组*p,并初始化让指针指向a的首地址,即a[0][0]
for(i=0,j=0;i<5;i++,j=(j+2)%5)
// 循环,i和j都从0开始,结束条件是i<5,循环控制是i++,j=(j+2)%5
// 第一次循环i=0,j=0,*(*(p+i)+j)=1,相当于是a[0][0]=1;
// 第二次循环i=1,j=2%5=2,所以*(*(p+i)+j)=1是a[1][2]=1
// 第三次循环i=2,j=(2+2)%5=4,所以a[2][4]=1
// 第四次循环i=3,j=(4+2)%5=1,所以a[3][1]=1
// 第五次循环i=4,j=(1+2)%5=3,所以a[4][3]=1
*(*(p+i)+j)=1;
for(i=0;i<5;i++) // 数组输出
{ for(j=0;j<5;j++)
printf("%d\t",*(*(a+i)+j)); //*(*(a+i)+j)就是a[i][j]
printf("\n"); // 换行
}
}
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询