有人帮忙吗,我是用指针做的
查看原帖
有人帮忙吗,我是用指针做的
804938
l763447370楼主2022/11/5 20:40

问题:这样做出来,第一行是没问题的,但从第二行开始就输出了乱码。 二维数组不是相当于一行连续的一维数组吗。那按道理指针加1再赋值就能让所有数都赋值了吗。 求大佬指教,可能是我指针的知识不扎实

//P1319 压缩技术
//题意
//输入第一个数 表示矩阵大小
//接下来每一个数表示连续的 0 1 0 1的多少
//思路
//二维数组为连续的地址,则每加入一个 指针加一
//死循环输入每次输入且循环后都要判断一下相加是不是等于n*n了 等于就停止
//输入的为循环的次数,区分单双数 单数时添加0  双数添加1
#include<stdio.h>
int main()
{
	int n, m = 0,s=1,x=0,multiplication=0; scanf("%d",&n) ;
	int arr[200][200];
	int* p = arr;//表示首元素地址
	multiplication = n * n;
	while (multiplication -=m)
	{

		scanf("%d",&m);
		for (int i = 0; i < m; i++)
		{
			if (s % 2 == 1)
			{
				*(p + x) = 0; //在指针中 无视二维数组
			}
			else if (s % 2 == 0)
			{
				*(p + x) = 1;
			}
			x++;
		}
		s++; //表示第几个输入,要输入0还是1
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			printf("%d", arr[i][j]);
			if (j == (n - 1))
			{
				printf("\n");
			}
		}
	}
	return 0;
}

2022/11/5 20:40
加载中...