关于动态分配+算法
实现这样一个函数: 输入A-Z其中一个字母,比如你输入A那么就输出A,输入B就输出ABA
INPUT: OUTPUT:
A A
B ABA
C ABACABA
D ABACABADABACABA
E ABACABADABACABAEABACABADABACABA
代码::
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//#include <string.h>
//#define NULL 0
//char p[100]={0};
int main()
{
char letter,*p;
int i,size;
scanf("%c",&letter);
if(letter<65||letter>90)
printf("Error\n");
else
{
for(i=1;i<=letter-64;i++)
{
size=(int)pow(2,i);
p = (char *)malloc(size+1);
if(p!=NULL)
{
if(i==1)
{
p[0]=i+64;
p[1]='\0';
}
else
{
for(int k=0; k<size/2-1; k++)
{
p[k] = p[k];
p[size/2+k] = p[k];
}
p[size/2-1] = i+64;
}
}
}
}
puts(p);
free(p);
return 0;
}
我用固态分配数组空间,可以实现的(算法应该正确),但要p[2^26]这么大的空间,浪费!
用动态分配(代码如上),怎么输出乱码?怎么回事????
求高人!









人呢?