#include<stdio.h>
void main()
{
int n;
int m;
int max;
int i, j;
char *p;
int *q;
printf("输入行数。\n");
scanf("%d",&m);
q = (int *)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{
printf("输入第%d行个数。\n",i+1);
scanf("%d",&(*(q+i)));
}
max = *q;
for(i=1;i<m;i++)
{
max = (max>*(q+i))?max:*(q+i);
}
p = (char *)malloc(m*max*sizeof(char));
for(i=0;i<m;i++)
{
for(j=0;j<max;j++)
{
if(j<*(q+i))
{
*(p+i*max+j) = '1';
}
else
*(p+i*max+j) = ' ';
}
}
for(i=1;i<=(m*max);i++)
{
if(i%max == 0)
{
printf("%c",*(p+i-1));
printf("\n");
}
else
{
printf("%c",*(p+i-1));
}
}
free(p);
free(q);
p = NULL;
q = NULL;
}
本文通过一个C语言程序示例介绍了如何使用动态内存分配来处理不同行数和每行字符数量的数据结构。该程序首先请求用户输入行数及每行的字符数量,然后根据这些信息动态分配内存,并用特定的字符填充二维数组,最后打印出结果。
2万+

被折叠的 条评论
为什么被折叠?



