一维数组输入输出
方法一、数组的下标法
如:
int a[5],i;
printf("Input five numbers:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("%4d",a[i]);
}
方法二、数组名首地址法(指针法):指针增1运算的执行效率很高,利用指针的增1运算实现指针的移动,省去了每寻找一个数组元素都要进行的指针算术运算,执行效率最高。
说明:数组名有特殊含义,它代表存放数组元素的连续存储空间的首地址,即指向数组中第一个元素的常量指针,如"a+i"代表数组中下标为i的元素a[i]的地址(&a[i]),而"*(a+i)"表示取出首地址元素后第i个元素的内容,即下标为i的元素"a[i]"。
int a[5],i;
printf("Input five numbers:");
for(i=0;i<5;i++)
{
scanf("%d",a+i);
}
for(i=0;i<5;i++)
{
printf("%4d",*(a+i));
}
方法三、移动指针变量法:
说明:指向同一数组中不同元素的指针的关系运算用于比较他们所指元素在数组中的前后位置关系。指针的算术运算(如增1和减1)用于移动指针的指向,使其指向数组中的其它元素。
注意:p++和p+1是本质不同的两个操作。
同:都对指针变量p进行加1运算。
异:p+1不改变当前指针的指向,p仍指向原来指向的元素,p++讲指针变量p向前移动一个元素的位置,指向下一元素,p++是加上1*sizeof(基类型)个字节。
int a[5],*p;
printf("Input five numbers:");
for(p=a;p<a+5;p++)注意:p是指针变量,可以通过赋值操作改变他的值,使p指向数组中其他元素,而数组名a是一个常量指针,代表一个地址常量,其值是不能被改变的。
{
scanf("%d",p);
}
for(p=a;p<a+5;p++)
{
printf("%4d",*p);
}
方法四、指针下标法:
int a[5], *p=NULL, i;
printf("Input five numbers:");
p=a;// p=a等价于p=&a[0] //
for(i=0;i<5;i++)
{
scanf("%d", &p[i] );// &p[i]等价于p+1 //
}
p=a;// 在再次循环开始前,确保指针p指向数组首地址 //
for(i=0;i<5;i++)
{
printf("%4d", p[i] );// p[i]等价于*(p+i) //
}
方法一、数组的下标法:
如:
int a[5],i;
printf("Input five numbers:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("%4d",a[i]);
}
方法二、指针下标法:
int a[5], *p=NULL, i;
printf("Input five numbers:");
p=a;// p=a等价于p=&a[0] //
for(i=0;i<5;i++)
{
scanf("%d", &p[i] );// &p[i]等价于p+1 //
}
p=a;// 在再次循环开始前,确保指针p指向数组首地址 //
for(i=0;i<5;i++)
{
printf("%4d", p[i] );// p[i]等价于*(p+i) //
}
数组声明
在数组的声明格式里,“数据类型”是声明数组元素的数据类型,可以是java语言中任意的数据类型,包括简单类型和结构类型。“数组名”是用来统一这些相同数据类型的名称,其命名规则和变量的命名规则相同。
数组声明之后,接下来便是要分配数组所需要的内存,这时必须用运算符new,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,所以new运算符是通知编译器根据括号里的个数,在内存中分配一块空间供该数组使用。利用new运算符为数组元素分配内存空间的方式称为动态分配方式。
int main()
{
int i;
int a[5];
for(i=0;i<5;i++) //输入
scanf("%d",&a[i]);
for(i=0;i<5;i++) //输出。
printf("%d ",a[i]);
return 0;
}
2011-10-10
int main()
{
int i;
int a[5];
for(i=0;i<5;i++) //输入
cin>>a[i];
for(i=0;i<5;i++) //输出。
cout<<a[i]<<" ";
return 0;
}