#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **a,b,c,i;
printf("請輸入行數:");
scanf("%d",&b);
a=(int **)malloc(sizeof(int **)*b);
if (a==NULL) {
fprintf(stderr,"分配失敗");
exit(1);
}
for (i = 0; i<b; i++) {
printf("請輸入第%d行的元素個數:",i+1);
scanf("%d",&c);
a[i]=(int *)malloc(sizeof(int)*(c+1));/*為第i行分配c+1個int空間,多出來的一個位置用於儲存這一行的長度*/
if (a[i]==NULL) {
a[i][0]=c; /*將第i行的長度儲存到第i行的第一個元素中*/
for (c=1; c<=a[i][0]; c++) {
a[i][c]=1;
printf("%d",a[i][c]);
putchar("\n");
free(a[i]); /*釋放為第i行分配的空間*/
free(a); /*釋放為a分配的空間*/
return 0;
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **a,b,c,i;
printf("請輸入行數:");
scanf("%d",&b);
a=(int **)malloc(sizeof(int **)*b);
if (a==NULL) {
fprintf(stderr,"分配失敗");
exit(1);
}
for (i = 0; i<b; i++) {
printf("請輸入第%d行的元素個數:",i+1);
scanf("%d",&c);
a[i]=(int *)malloc(sizeof(int)*(c+1));/*為第i行分配c+1個int空間,多出來的一個位置用於儲存這一行的長度*/
if (a[i]==NULL) {
fprintf(stderr,"分配失敗");
exit(1);
}
a[i][0]=c; /*將第i行的長度儲存到第i行的第一個元素中*/
for (c=1; c<=a[i][0]; c++) {
a[i][c]=1;
}
}
for (i = 0; i<b; i++) {
for (c=1; c<=a[i][0]; c++) {
printf("%d",a[i][c]);
}
putchar("\n");
free(a[i]); /*釋放為第i行分配的空間*/
}
free(a); /*釋放為a分配的空間*/
return 0;
}