对一个数组的元素重新计算赋值后,如何输出数组的最后一个元素?这段代码怎么也不能输出数组的最后一个值。

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n;
while (scanf("%d", &n), n--)
{
int a[n], i, j;
for (i = 0; i < n; i++)
{
cin >> a[i] ;
}
for (j = 0; j < n; j++)
{
if(a[j] > 0)
a[j+1] = a[j] + a[j+1];
else
a[j+1] = a[j] - a[j+1];
}
printf("%d\n", a);
}
}

1.你这段代码是不能通过编译的。因为你使用了数组声明a[n],而n是刚刚输入的变量,C/C++是不允许用变量来作数组范围定义的,所以是非法的。
2.你说的“输出”最后一个数的问题可这样改一下:把while(scanf("%d", &n), n--)中的n--改成n,而在后面printf("%d\n", a)后加一句n--;就可以了。
3.printf("%d\n", a)这一句意义不明确啊,它输出的是一个固定不变的地址a。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-01
看代码,可能是while (scanf("%d", &n), n--)中“n--”的问题,还有a[j+1]可能会导致溢出问题(这个要看程序运行了,不大清楚)