救命啊!在线等,数组的输出????

[复制链接]
查看11 | 回复5 | 2008-3-6 16:28:21 | 显示全部楼层 |阅读模式
#include#define maxsize 1024 int a[maxsize]; main() { int num=0,i=0; int data; printf("输入一组数,以-1结束:\n"); while(data!=-1) { scanf("%d",&data); //这里你取得-1后还是把-1放入了数组,可以加判断if(data!=-1) {a=data; i++; num++; }} for(i=0;i #define maxsize 1024 typedef struct { int a[maxsize]; int length; }sequenlist; int create(sequenlist *m); main() { int num,i; sequenlist A; num=create(&A);
//传地址for(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; }
回复

使用道具 举报

千问 | 2008-3-6 16:28:21 | 显示全部楼层
你这里之所以输出了-1是因为在while判断之前,你已经把-1赋给了数组,且你把num也自加了,而num在输出时,又作为界限判定,即i #define maxsize 1024 typedef struct { int a[maxsize]; int length; }sequenlist; int create(sequenlist* m); main() { int num,i; sequenlist A; num=create(&A); //把实参A的地址传给形参,形参就指向了这个对象 for(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; }
回复

使用道具 举报

千问 | 2008-3-6 16:28:21 | 显示全部楼层
第一个问题是,当循环退出的时候,-1也存进去了并且计数器也增加了,要是只要求输出可以在打印时将num--。要是对数组有要求可以while( 1 ){ scanf("%d",&data);
if ( data == -1 ) break; a=data;
i++;
num++; }第二个问题。C语言中参数传递都是数值的复制,就是说create(A)中的A和函数中接收的m虽然值是相等的,但是是2个结构体变量(2个地址)。解决办法是将A的地址当参数,这样函数根据传来的地址找到了A的存储位置并修改。main() {
int num,i;
sequenlist A;
num=create(&A); //传地址
for(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; }
回复

使用道具 举报

千问 | 2008-3-6 16:28:21 | 显示全部楼层
#include#define maxsize 1024 int a[maxsize]; main() { int num=0,i=0; int data; printf("输入一组数,以-1结束:\n"); while(scanf("%d",&data) && data!=-1) /*这样做*/{ a=data; i++; num++; } for(i=0;i不能用.换一下就好了
回复

使用道具 举报

千问 | 2008-3-6 16:28:21 | 显示全部楼层
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); }
回复

使用道具 举报

千问 | 2008-3-6 16:28:21 | 显示全部楼层
问题输出那个就对了你看看你往数组里都村的什么单步运行一下就知道了补充那个是参数的传值和传址调用的问题比较典型看看这方面的只是就明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行