输出的奇怪事情!
这是我用顺序表实现多项式的输入与输出,输入的数据我确定存好了,并且在代码中输出来确认,但是在最后却是……#include<stdio.h>
#include<malloc.h>
#define INIT_SIZE 50
#define LENGTH 20
typedef struct data{
int *expn;
float *coef;
int length;
}data;
void Init(struct data &P)
{
//P.elem=(data *)malloc(sizeof(struct data));
P.coef=0;
P.expn=0;
P.length=0;
int i=1;
while(i<5)
{
P.coef =(float *)malloc(sizeof(float));
P.expn=(int *)malloc(sizeof(int));
printf("请输入第%d项系数和指数.\n",i);
printf("系数:");
scanf("%f",&P.coef[i-1]);
printf("系数P.coef[%d]%2.2f \n",i-1,P.coef[i-1]);
//printf("\n");
printf("指数:");
scanf("%d",&P.expn[i-1]);
printf("指数P.expn[%d]%2.2d \n",i-1,P.expn[i-1]);
i++;
P.length=i;
}
printf("刚才输入的多项式是:\n");
for(int j=0;j<4;j++)
{
printf("%2.2f x^ %3.3d",P.coef[j],P.expn[j]);
if(j==P.length-2)
printf("\n");
if(j<P.length-2)
printf("+");
}
}
int main()
{
data P;
Init(P);
return 0;
}
大家看看,这代码挺糙的,希望给点意见指点一下,谢谢!
[解决办法]
改成这样就可以了,你上面错的原因在于没有用好结构体。你想用结构体中的指针来操作,可是那样不行的。如果实在想用的话,得好好处理一下。
#include<stdio.h>
#include<malloc.h>
#define INIT_SIZE 50
#define LENGTH 20
typedef struct data{
int expn[4];
float coef[4];
int length;
}data;
void Init(struct data &P)
{
//P.elem=(data *)malloc(sizeof(struct data));
P.length=0;
int i=1;
while(i<5)
{
printf("请输入第%d项系数和指数.\n",i);
printf("系数:");
scanf("%f",&P.coef[i-1]);
printf("系数P.coef[%d]%2.2f \n",i-1,P.coef[i-1]);
//printf("\n");
printf("指数:");
scanf("%d",&P.expn[i-1]);
printf("指数P.expn[%d]%2.2d \n",i-1,P.expn[i-1]);
i++;
P.length=i;
}
printf("刚才输入的多项式是:\n");
for(int j=0;j<4;j++)
{
printf("%2.2f x^ %3.3d",P.coef[j],P.expn[j]);
if(j==P.length-2)
printf("\n");
if(j<P.length-2)
printf("+");
}
}
int main()
{
data P;
Init(P);
return 0;
}
[解决办法]
你的用意应该是这样的。原来错误是因为你每一次用malloc动态申请都会覆盖前面的项,应为你原来的程序运行结果是最后一项真确。兄弟,好好想想就知道是什么原因了。
#include<stdio.h>
#include<malloc.h>
#define INIT_SIZE 50
#define LENGTH 20
typedef struct data{
int *expn;
float *coef;
int length;
}data;
void Init(struct data &P)
{
//P.elem=(data *)malloc(sizeof(struct data));
P.coef=0;
P.expn=0;
P.length=0;
int i=1;
P.coef =(float *)malloc(4*sizeof(float));
P.expn=(int *)malloc(4*sizeof(int));
while(i<5)
{
printf("请输入第%d项系数和指数.\n",i);
printf("指数:");
scanf("%f",&P.coef[i-1]);
printf("系数:");
scanf("%d",&P.expn[i-1]);
printf("系数P.coef[%d]%2.2f \n",i-1,P.coef[i-1]);
//printf("\n");
printf("指数P.expn[%d]%2.2d \n",i-1,P.expn[i-1]);
i++;
P.length=i;
}
printf("刚才输入的多项式是:\n");
for(int j=0;j<4;j++)
{
printf("%2.2f x^ %3.3d",P.coef[j],P.expn[j]);
if(j==P.length-2)
printf("\n");
if(j<P.length-2)
printf("+");
}
}
int main()
{
data P;
Init(P);
return 0;
}