问答题

试题五
阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图2-5所示。

程序中相应的类型定义如下:
#define N 6
struct node{
char cname[5]; /*课程名*/
int grade; /*成绩*/
struct node *next; /*指针,指示某学生选修的下一门课程及成绩*/
};
struct student{
char xh[5]; /*学号*/
char name[20]; /*姓名*/
struct node*link; /*指针,指示出选修的课程及成绩链表*/
}stud_info[N];
smd_mb[]为一个全局数组。
函数func(char kc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num带回选修课程比的学生人数。
【C函数】
double func(char kc[],int*num)
{
int i,count=0,sum=0; /*count用于记录选修课程名为kc的学生的人数*/
double avg=0.0;
struct node *p;
for(i=0;i<N;i++){
p= (1) ; /*取第i个学生所修课程链表的头指针*/
while (p){
if( (2) ){
sum= (3)
count++;
break;;
}/*if*/
p=p->next;
}/*while*/
}
(4)
if( (5) )
avg=(double)sum/count; /*计算平均成绩*/
return avg;
}/*func*/

【参考答案】

(1)stud_info[i].link,或其等价形式
(2)!strcmp(p->cname,kc),或其等......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
试题二 阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。例如,n=8时所形成的文件如下: 01011000 10010100 10011000 11111111 00000000 00111000 其中,每行表示一张选票的数据,每列代表一位候选者的得票情况。第i行第j列为1,表示第i张选票上投了第j名候选人1票。 函数statisdc()的功能是读入选票数据,并统计每位候选者的得票数,函数返回有效选票数。 【C函数】 int statistic(FILE*fp,int candidatet[],int n) *从文件中读入选票数据,n为候选人数量(n<80),从有效选票中统计每位候选者的得 票数并存入candidate[],函数返回有效选票数* char str[80]; *str保存读入的一张选票数据* int i,tag=0; * tag用于判断每张选票是否有效* int q=0; *q用于计算有效选票数* for(i=0;i<n; i++) candidate[i]=0; while( (1) ){ fgets(str,80,fP); *读入一张选票数据* for(tag=0,i=0; (2) ;i++) if (str[i]==’1’) tag++; if( (3) ) *若是有效选票,则进行统计* (4) ; for(i=0; i<n; i++) if.(str[i]==’1’) (5) ; } } return q; } *statistic*
问答题
试题一 阅读以下说明和算法,完善算法并回答问题。 【说明】 假设以二维数组G[1..m,1..n)表示一幅图像各像素的颜色,则G[i,j]表示区域中点(i,j)处的颜色,颜色值为0~k的整数。 下面的算法将指定点(i0,j0)所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点(i0,j0)同色的上、下、左、右可连通的点组成同色邻接区域。 例如,一幅8×9像素的图像如图2-1所示。设用户指定点(3,5),其颜色值为0,此时其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为0,因此这些点属于点(3,5)所在的同色邻接区域,再从上、下、左、右四个方向进行扩展,可得出该同色邻接区域的其他点(见图2-1中的阴影部分)。将上述同色区域的颜色替换为颜色值7所得的新图像如图2-2所示。 【算法】 输入:矩阵G,点的坐标(i0,j0),新颜色值newcolor。 输出:点(i0,j0)所在同色邻接区域的颜色置换为newcolor之后的矩阵G。 算法步骤(为规范算法,规定该算法只在第七步后结束)如下。 第一步:若点(i0,j0)的颜色值与新颜色值newcolor相同,则 (1) ; 第二步:点(i0,j0)的颜色值→oldcolon创建栈S,并将点坐标(i0,j0)入栈; 第三步;若 (2) ,则转第七步; 第四步;栈顶元素出栈→(x,y),并 (3) ; 第五步;1)若点(x,y-1)在图像中且G[x,y-1]等于oldcolor,则(x,y-1)入栈S; 2)若点(x,y+1)在图像中且GIx,y+1]等于oldeolor,则(x,y+1)入栈S; 3)若点(x-1,y)在图像中且G[x-1,y)等于oldcolor,则(x-1,y)入栈S; 4)若点(x+1,y)在图像中且G[x+1,y)等于oldcolor,则(x+1,y)入栈S; 第六步:转 (4) ; 第七步:算法结束。 【问题】 是否可以将算法中的栈换成队列回答; (5) 。