while(data!=-1) { scanf("%d",&data); a=data; i++; num++; } 你这个循环有问题,因为你是当data!=-1时执行循环体,也就是先执行输入数据,然后不管这个数据是否为-1就放到了数组中,因此数组最后一个元素-1也输出了。应改为:scanf("%d",&data);while(data!=-1) { a=data; scanf("%d",&data);i++; num++; }#include #define maxsize 1024int a[maxsize];main(){int num=0,i=0;int data;printf("输入一组数,以-1结束:\n");while(data!=-1){scanf("%d",&data);a=data;i++;num++;}//这里加一行,--num;--m;//OKfor(i=0;ilength=0;printf("输入一组数,以-1结束:\n");scanf("%d",&data);while(data!=-1){ m->a=data; m->length++; i++; scanf("%d",&data);}n=i;return n; } 怎么会多了一个-1楼上都讲的很多了,是因为你记录了最后输入的-1后才判断的,建议你改成如下:#include#define maxsize 1024 int a[maxsize]; main() { int num=0,i=0; int data; printf("输入一组数,以-1结束:\n"); while(1) { scanf("%d",&data); if(data == -1) break;a=data; i++; num++; } for(i=0;i<num;i++) printf("%d\t",a); }
|