数组初始化:数组的初始化



5.4.1
C语言允许在介绍说明时对全局和静态局部但不能对非静态局部
和其它变量相似般形式如下:
type-specier.gif' />_name[size1]...[sizen]={value-list};
数值表是个由逗号分隔常量表这些常量类型和类型介绍说明相容个常量存入个单元第 2个常量存入第 2个单元等等注意在括号“}”后要加上分号
下列中个10元素整型化装入数字1到10:
i[10]={12345678910};
这意味着i[0]值为1而i[9]值为10
存放化可采用如下简化形式:
char.gif' />_name[size]="";
例如以下代码段将str化为”hello”
charstr[6]="hello";
上面代码产生和下面代码相同结果:
charstr[6]={’h’’e’’l’’l’’o’’\\o’};
C语言中串都以空(NULL)为终结故要确认定义足够长以存放
这就是为什么hello只有5个而str要有6个原因使用串常量时
编译自动地在末尾加上空
多维思路方法和相同例如下式将sqrs化为从1到10及它们各自
平方数
sqrs[10][2]={
11
24
39
416
525
636
749
864
981
10100
};
5.4.2变长
设想用思路方法建立个如下信息表:
chare1[12]="readerror\\n";
chare2[13]="writeerror\\n";
chare3[18]="cannotopenfile\\n";
可以想象如果用手工去计算每条信息数以确定长度是何等麻烦
用变长思路方法可以使C自动地计算长度变长化就是使C编译
自动建立个不指明长度足够大以存放化数据使用这种思路方法以上信息表变
为:
chare1="readerror\\n";
chare2="writeerror\\n";
chare3="cannotopenfile\\n";
给定上面下面语句prf("%shaslength%d\\n"e2(e2));
将打印出:
writeerror
haslength13
除了减少麻烦外应用变长化使员可以修改任何信息而不必担心随时可
能发生计算
变长思路方法不仅仅限于但在对多维化时必须指明除了
维以外其它各维长度以使编译能够正确地检索其思路方法和形式参数
介绍说明类似这样就可以建立变长表而编译自动地为它们分配存储空间例如下面用
变长思路方法定义sqrs:
sqrs[2]={
11
24
39
416
525
636
749
864
981
10100
};
相对定长化而言这种介绍说明优点在于可以在不改变各维长度情况下
随时增加或缩短表长度
5.5应用举例
[例5-6]为比赛选手评分
计算思路方法:从10名评委评分中扣除个最高分扣除个最低分然后统计总分
除以8最后得到这个选手最后得分(打分采用百分制)
#<stdio.h>

{
score[10];/*10个评委成绩*/
floatmark;/最*后得分*/
i;
max=-1;/*最高分*/
min=101;/*最低分*/
sum=0;/*10个评委总和*/
for(i=0;i<10;i)
{
prf("PleaseEntertheScoreofNo.%di"1);
scanf("%d\\n"&score[i]);
sum=sumscore[i];
}
for(i=0;i<10;i)
{
(score[i]>max)
max=score[i];
}
for(i=0;i<10;i)
{
(score[i]<min)
min=score[i];


}
mark=(sum-min-max)/8.0;
prf("Themarkoftheplayeris%.1f\\nm"ark);
}



[例5-7]数列排序采用选择法实现对有5个数数列进行排序
选择法算法思想是:(降序)
1.将待排序n个数放入num中即num[0]、num[1]、...num[n-1]
2.让num[0]和后续num[1]...num[n-1]依次比较保证大数在前、小数在后此次比较
num[0]是中最大
3.余下n-1个元素
4.num[1]和num[2]...num[n-1]依次比较大数在前、小数在后此次num[1]是全部元素
最大
num[n-2]和num[n-1]比较num[n-2]存大数
num[n-1]存小数比较结束整理有序
例:待排序5个数为:4476826371
趟排序:1次比较:7644826371
2次比较:8244766371
3次比较:8244766371
4次比较:8244766371
最大
#<stdio.h>

{
num[5];
ij;
temp;
num[0]=94;num[1]=76;num[2]=82;num[3]=63;num[4]=71;
for(i=0;i<4;i)
for(j=i1;j<5;j)
{
(num[i]>num[j])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
for(i=0;i<5;i)
prf("%4d"num[i]);
prf("ok\\n");
}
这是个非常简单排序我们只需稍加扩展就可以编制出很多功能强大管理程
?br/>
缪臣谱芊帧⑵骄帕心昙睹蔚取?BR>[例5-8]简易学生成绩查询系统
图5-3为学生成绩登记表下例完成如下功能:
1)根据输入学生学号给出各次考试成绩及平均成绩;
2)根据输入考试次数打印出该次考试中每个学生成绩并给出平均分;
3)根据学号查出学生某次考试成绩;
4)录入考试成绩

#<stdio.h>
mian
{
select;
ij;
score[5][7];
average=0;
sum=0;
do{
prf("本有4项功能\\n");
prf("1、根据学号查询学生成绩\\n");
prf("2、根据考试号统计成绩\\n");
prf("3、根据考试号和学号查询成绩\\n");
prf("4、成绩录入\\n");
prf("0、退出\\n");
prf("请输入选择(0-4):");
scanf("%d\\n"&select);
switch(select)
{
0:
prf("OK\\n");
exit(0)
;
1:
prf("输入学号:");
scanf("%d\\n"&i);
for(j=1;j<7;j)
{
prf("第%d科成绩是%d\\n"jscore[i][j]);
sum=score[i][j];
}
average=sum/6;
prf("学生平均成绩是%d\\n"average);
;
2:
prf("输入考试号:");
scanf("%d\\n"&j);
for(i=1;i<5;i)
{
prf("第%d号学生本科成绩是%d\\n"iscore[i][j]);
sum=score[i][j];
}
average=sum/4;
prf("本科平均成绩是%d\\n"average);
;
3:
prf("输入学号和考试号:");
scanf("%d%d\\n"&i&j);
prf("第%d号学生第%d科考试成绩是%d\\n"ij
score[i][j]);
;
4:
prf("请输入成绩\\n");
for(i=1;i<5;i)
for(j=1;j<7;j)
scanf("%d\\n"&score[i][j]);
;
default:
;
}while(1);
}
从本例中可以看出当涉及到 2维通常用两重for循环来存取元素
Tags:  vb数组初始化 java数组初始化 二维数组初始化 数组初始化

延伸阅读

最新评论

发表评论