c++中数组输出的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 10:48:34
#include"iostream.h"
#include"stdio.h"
int main()
{int i=0,j;
int a[10];
cout<<"please input array a[]:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
cout<<"array a is:"<<endl;
for(j=0;j<10;j++)
cout<<a[j]<<' ';
system("pause");
}
1:上面的程序,数组A原定有10个,我现在只输入了5个,现在输出时会出现前面5个正常,后面应该不显示了,但出来一些很大的数字,如何只显示输入的。
2:一数组未满,现在想用B来返回现在数组里面有几个数。
谢谢。

两种方法
用字符数组或者字符串接受输入 设循环控制变量计数
判断 当输入非数字字符的时候 跳出循环 看控制变量就知道输入多少个数了
缺点 当输入数字超过一位 转换成INT的时候比较啰嗦

另外 while(cin>>a[i++]) 不想输入的时候 ctrl+d
缺点是 之后都不能输入了

1 C语言不检查数组溢出
如果你做了溢出操作 那么就会意外修改自己的数据 或者让程序崩溃
后面的很大的数字是你在定义int变量时候获得的内存里的原有数据
是想一块内存被其他程序使用以后释放 如果系统把内存里的内容恢复成0
那么就会消耗资源 但是其他的程序在使用这块内存的时候却有自己的初始值
比如int a=3;这时候系统资源就浪费了
所以在释放内存的时候系统没有把内存清零,同时在获得内存的时候如果没有初始化,那么变量里的值将是无法预知的
输出来的很大的值是由于你没有赋值造成的,是该内存块里原有的值
只显示输出的你就需要用一个变量n来描述到底输入了多少值
输出时使用
for(j=0;j<n;j++)
cout<<a[j]<<' ';
2 无法知道数组里面有多少数已经被赋值,除非你在赋值的时候记录下来
只能知道数组有多大容量

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
//输入一个#回车结束
int main()
{
vector<int> a;
cout<<"please input array a[]:"<<endl;
std::copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(a