第5章 数组
数组
#include<stdio.h>
int main(void)
{
int uchida;
int satoh;
int sanaka;
int hiraki;
int masaki;
int sum=0;
puts(“请输入分数。”);
printf(“1号:”); scanf(“%d”,&uchida);
printf(“2号:”); scanf(“%d”,& satoh);
printf(“3号:”); scanf(“%d”,&sanaka);
printf(“4号:”); scanf(“%d”,& hiraki);
printf(“5号:”); scanf(“%d”,& masaki);
sum+=uchida;
sum+=satoh;
sum+=sanaka;
sum+=hiraki;
sum+=masaki;
printf(“总分:%5d\n”,sum);
printf(“平均分:%5.1f\n”,(double)sum/5);
return(0);
}
数组:array
声明形式:int vc[5];
数组和for语句
#include<stdio.h>
int main(void)
{
int vc[5];
vc[0]=1;
vc[1]=2;
vc[2]=3;
vc[3]=4;
vc[4]=5;
printf(“vc[0]=%d\n”,vc[0]);
printf(“vc[1]=%d\n”,vc[1]);
printf(“vc[2]=%d\n”,vc[2]);
printf(“vc[3]=%d\n”,vc[3]);
printf(“vc[4]=%d\n”,vc[4]);
return(0);
}
用for语句如下:
#include<stdio.h>
int main(void)
{
int i;
int vc[5];
for(i=0;i<5;i++)
vc[i]=i+1;
for(i=0;=<5;i++)
printf(“vc[%d]=%d\n”,i,vc[i]);
return(0);
}
数组初始化
#include<stdio.h>
int main(void)
{
int i;
int vc[5]={1,2,3,4,5};
for(i=0;=<5;i++)
printf(“vc[%d]=%d\n”,i,vc[i]);
return(0);
}
注意:初始值数量不足,自动用0对剩余元素初始化
初始值超过元素个数会报错
不能用赋值语句进行初始化 例:int vc[3]; vc={1,2,3};
数组的复制
#include<stdio.h>
int main(void)
{
int i;
int va[5]={15,20,30};
int vb[5];
for(i=0;i<5;i++)
vb[i]=va[i];
puts(“va vb”);
puts(“-------”);
for(i=0;i<5;i++)
printf(“%3d%3d\n”,va[i],vb[i]);
return(0);
}
输入数组元素的值
#include<stdio.h>
int main(void)
{
int i;
int vx[5];
for(i=0;=<5;i++){
printf(“vx[%d]:”,i);
scanf(“%d”,&vx[i]);
}
for(i=0;i<5;i++)
printf(“vx[%d]=%d\n”,i,vx[i]);
return(0);
}
对数组进行倒序排列
#include<stdio.h>
int main(void)
{
int i;
int vx[5];
for(i=0;=<5;i++){
printf(“vx[%d]:”,i);
scanf(“%d”,&vx[i]);
}
for(i=0;i<5;i++){
int temp=vx[i];
vx[i]= vx[4-i];
vx[4-i]=temp;
}
for(i=0;i<5;i++)
printf(“vx[%d]=%d\n”,i,vx[i]);
return(0);
}
使用数组进行成绩处理
对象式宏:#define指令 例:
#define NUMBER 5
赋值表达式 例:a=b=0
及格学生一览表
数组的元素个数
成绩分布图 例:
#include<stdio.h>
#define NUMBER 80
int main(void)
{
int i,j;
int num;
int tensu[NUMBER];
int bunpu[11]={0};
printf(“请输入学生人数:”);
do{
scanf(“%d”,&num);
if(num<1||num<NUMBER)
printf(“\a人数范围[1到%d]:”, NUMBER);
}while(num<1||num<NUMBER);
puts(“请输入学生的分数:”);
for(i=0;i<num;i++){
printf(“%2d号:”,i+1);
do{
scanf(“%d”,&tensu[i]);
if(tensu[i]<0||tensu[i]>100)
printf(“\a分数范围[0到100]:”);
}while(tensu[i]<0||tensu[i]>100);
bunpu[tensu[i]/10]++;
}
puts(“\n□分布图□”);
printf(“ 100:”);
for(j=0;jMbunpu[10];j++)
putchar(‘*’);
for(i=9;i>=0;i--){
printf(“%3d - %3d:”,i*10,i*10+9);
for(j=0;j<bunpu[i];j++)
putchar(‘*’);
putchar(‘*’);
}
return(0);
}