主题:[原创]这个程序能通过编译,却得不到正确结果。????
xuexiziji
[专家分:90] 发布于 2006-03-27 20:45:00
#include<stdio.h>
#include<conio.h>
#define maxsize 10
typedef struct
{ int data[maxsize];
int length;
}sqlist;
sqlist *p;
main()
{ int i,j,k;
printf("please input yuanshu\n");
for(i=0;i<maxsize-1;i++)
scanf("%d\n",&p->data[i]);
for(i=0,j=maxsize-1;i<j;i++,j--)
{k=p->data[i];
p->data[i]=p->data[j];
p-data[j]=k;
}
for(i=0;i<maxsize-1;i++)
printf("%d\n",p->data[i]);
getch();
}
回复列表 (共5个回复)
沙发
guohailiang [专家分:0] 发布于 2006-03-27 23:36:00
我认为你的程序有一个错误就 是for(i=0;i<maxsize-1;i++)
scanf("%d\n",&p->data[i]);
应该为for(i=0;i<=maxsize-1;i++)
scanf("%d\n",&p->data[i]);才和后面的一致
板凳
eagleking0000 [专家分:3330] 发布于 2006-03-27 23:42:00
#include<stdio.h>
#include<conio.h>
#define maxsize 10
typedef struct
{ int data[maxsize];
int length;
}sqlist;
sqlist *p;
main()
{ int i,j,k;
printf("please input yuanshu\n");
for(i=0;i<=maxsize-1;i++)
scanf("%d",&p->data[i]);
for(i=0;i<=maxsize-1;i++)
for(j=maxsize-1;i<=j;j--)
{if(p->data[i]>p->data[j]){k=p->data[i];
p->data[i]=p->data[j];
p->data[j]=k;
}
}
for(i=0;i<=maxsize-1;i++)
printf("%d\n",p->data[i]);
getch();
}
原以为是=的问题,实际算法也有问题,已改
3 楼
ljqy [专家分:0] 发布于 2006-03-28 09:43:00
关注
4 楼
lijianqy [专家分:90] 发布于 2006-03-28 09:45:00
#include<stdio.h>
#include<conio.h>
#define maxsize 10
typedef struct
{ int data[maxsize];
int length;
}sqlist;
sqlist *p;
main()
{
int i,j,k;
//分配空间
p = (sqlist*)malloc( sizeof(sqlist) ); //(1)
if(NULL==p)
return;
printf("please input yuanshu\n");
for(i=0;i<maxsize;i++) //(2)
{
scanf("%d\n",&p->data[i]);
}
for(i=0,j=maxsize-1;i<j;i++,j--)
{
k=p->data[i];
p->data[i]=p->data[j];
p-data[j]=k;
}
for(i=0;i<maxsize;i++)
printf("%d\n",p->data[i]);//(3)
getch();
}//endmain
三个地方可能有问题:
(1)p是指针应当分配空间
(2)scanf中应为maxsize 而非maxsize-1;
(3)printf中应为maxsize 而非maxsize-1;
5 楼
lijianqy [专家分:90] 发布于 2006-03-29 09:10:00
关注
我来回复