C++给数组添加元素
本帖最后由 shiyuexin3 于 2012-11-23 03:57:52 编辑 有一张全班学生成绩单。把大于80分的成绩添加到列表里面。用一个变量存储学生成绩(好像是循环存储)。然后把这个变量放进一个一维数组的元素里面,接着进行排序。如何把代表学生成绩的那个变量放进一维数组里面(或者是如何把符合条件的分数放进数组里面),只有这里不清楚怎么写,其他的都知道。请大家帮忙说下怎么写。这里不考虑用STL,只用数组。
下面说下易语言的写法。
局部变量 学生成绩, 整数型.
局部变量 成绩列表, 整数型, , "0" 注释:一维数组
加入成员 (成绩列表, 学生成绩) 注释:C++里面这一步不知道怎么写
取数组成员数 (成绩列表)
int ai=0,g=0,k=0,dn=0;
//int fslb[]={fenshu};
//fslb[dn]=fenshu;
//注释部分感觉写的不对
for(ai=0;ai<sizeof(fslb)/sizeof(int);ai++)
{
for(g = 0;g<sizeof(fslb)/sizeof(int)-ai;g++)
{
if(fslb[g]>fslb[g+1])
{
k = fslb[g];
fslb[g] = fslb[g + 1];
fslb[g + 1] = k;
}
}
}
// 数组的特性是,定义后大小即确定
// int fslb[]={fenshu}; 像这样定义数组大小就是1
// 所以定义数组前,需要预先评估数组的容量,如果未知,可以分配一个尽可能大的容量
// 插入元素的同时统计数组的实际元素个数,並预防越界
// 像这种统计学生成绩,人数未知并且排序,因为有频繁的插入动作,用链表比较合适
// 考虑到要求使用数组的,以下用数组实现一个简单的程序
int fslb[40]; // 所有学生的成绩,已知
int gt80[40]; // 大于80分的学生成绩,假定人数最多为40
int numOfGt80 = 0; // 大于80分的学生实际人数,插入时统计
for (int i = 0; i < 40; ++i)
{
if (fslb[i] < 80)
continue;
int j = numOfGt80;
// 升序插入
for (; j > 0; --j)
{
if (fslb[i] < gt80[j-1])
{
gt80[j] = gt80[j-1];
}
else
{
break;
}
}
gt80[j] = fslb[i];
++numOfGt80;
}
// 输出>80分的学生成绩列表
for (int i = 0; i < numOfGt80; i++)
{
cout << gt80[i] << " ";
}