关于动态分配+算法
实现这样一个函数: 输入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]这么大的空间,浪费!
用动态分配(代码如上),怎么输出乱码?怎么回事????
求高人!