南京学习网站建设,舆情网站推荐,网站收录多少才有排名,网站服务器出错了怎么办第24套#xff1a;
程序通过定义学生结构体变量#xff0c;存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数 进行输出。 例如#xff1a;传给形参a的数据中#xff0c;学号、姓名、和三门课的成绩依次是…第24套
程序通过定义学生结构体变量存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数 进行输出。 例如传给形参a的数据中学号、姓名、和三门课的成绩依次是10001、 “ZhangSan”、95、80、88修改后的数据应为10002、“LiSi”、96、81、89。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行也不得更改程序的结构 给定源程序
#include stdio.h
#include string.h
struct student {
long sno;
char name[10];
float score[3];
};
__1__ fun(struct student a)
{ int i;
a.sno 10002;
strcpy(__2__, LiSi);
for (i0; i3; i) __3__ 1;
return a;
}
main()
{ struct student s{10001,ZhangSan, 95, 80, 88}, t;
int i;
printf(\n\nThe original data :\n);
printf(\nNo: %ld Name: %s\nScores: ,s.sno, s.name);
for (i0; i3; i) printf(%6.2f , s.score[i]);
printf(\n);
t fun(s);
printf(\nThe data after modified :\n);
printf(\nNo: %ld Name: %s\nScores: ,t.sno, t.name);
for (i0; i3; i) printf(%6.2f , t.score[i]);
printf(\n);
} 解题思路 本题是对结构体变量中的值进行修改并通过函数值返回。 第一处必须定义结构返回类型所以应填struct student。 第二处对姓名进行修改所以应填a.name。 第三处分别对成绩增加1分所以应填a.score[i]。 假定整数数列中的数不重复并存放在数组中。给定程序MODI1.C中函数fun的功能是删除数列中值为x的元素。n中存放的是数列中元素的个数。 请改正程序中的错误使它能得出正确结果。 注意不要改动main函数不得增行或删行也不得更改程序的结构。 给定源程序
#include stdio.h
#define N 20
fun(int *a,int n,int x)
{ int p0,i;
a[n]x;
while( x!a[p] ) pp1;
/
if(Pn) return -1;
else
{ for(ip;in;i)
/a[i1]a[i];
return n-1;
}
}
main()
{ int w[N]{-3,0,1,5,7,99,10,15,30,90},x,n,i;
n10;
printf(The original data :\n);
for(i0;in;i) printf(%5d,w[i]);
printf(\nInput x (to delete): ); scanf(%d,x);
printf(Delete : %d\n,x);
nfun(w,n,x);
if ( n-1 ) printf(***Not be found!***\n\n);
else
{ printf(The data after deleted:\n);
for(i0;in;i) printf(%5d,w[i]);printf(\n\n);
}
} 解题思路 第一处: 条件语句中的小写p错写成大写P了。 第二处: 删除元素应该是后面位置的元素值赋值给前面的位置上所以应改为 a[i]a[i1];。 学生的记录由学号和成绩组成N名学生的数据已在主函数中放入结构体数组 s中, 请编写函数fun它的功能是把分数最低的学生数据放在b所指的数组中 注意分数最低的学生可能不止一个函数返回分数最低的学生的人数。 注意: 部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。 给定源程序
#include stdio.h
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC *a, STREC *b )
{
}
main()
{ STREC s[N]{{GA05,85},{GA03,76},{GA02,69},{GA04,85}, {GA01,91},{GA07,72},{GA08,64},{GA06,87}, {GA015,85},{GA013,91},{GA012,64},{GA014,91}, {GA011,91},{GA017,64},{GA018,64},{GA016,72}};
STREC h[N];
int i,n;FILE *out ;
nfun( s,h );
printf(The %d lowest score :\n,n);
for(i0;in; i)
printf(%s %4d\n,h[i].num,h[i].s);
printf(\n);
out fopen(c:\\test\\out.dat,w) ;
fprintf(out, %d\n,n);
for(i0;in; i)
fprintf(out, %4d\n,h[i].s);
fclose(out);
} 解题思路 本题是把符合条件的学生记录存入到另一个结构体人数通过函数返回记录由实参b返回。
符合条件的学生人数存在变量j初始值为0中最后返回其值。利用for循环语句依次判断是否符合条件如果成绩相等则把记录存入b中人数j加1如果当前成绩a[i].s小于最低成绩min那么人数重新初始化为0把当前成绩存入最低成绩中人数j加1。直至循环结束为止。 参考答案
int fun( STREC *a, STREC *b )
{
int i, j 0, mina[0].s ;
for(i 0 ; i N; i) {
if(min a[i].s) {
j 0 ; b[j] a[i] ; min a[i].s ;
}
else if(min a[i].s)
b[j] a[i] ;
}
return j ;
}