个人网站 备案,stm32做网站服务器,上海搬家公司有哪些,可做分析图的地图网站第17套#xff1a;
程序通过定义学生结构体数组#xff0c;存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组#xff0c;按照姓名的字典#xff08;从小到大#xff09;排序。
请在程序的下划线处填入正确的内容并把下划线删除, …第17套
程序通过定义学生结构体数组存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组按照姓名的字典从小到大排序。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行也不得更改程序的结构
给定源程序
#include stdio.h
#include string.h struct student{ long sno; char name[10]; float score[3];
}; void fun(struct student a[], int n){
__1__ t;
int i, j;
for (i0; i__2__; i)
for (ji1; jn; j)
if (strcmp(__3__) 0)
{ t a[i]; a[i] a[j]; a[j] t; }
} main()
{ struct student s[4]{{10001,ZhangSan, 95, 80, 88},{10002,LiSi, 85, 70, 78},
{10003,CaoKai, 75, 60, 88}, {10004,FangFang, 90, 82, 87}};
int i, j;
printf(\n\nThe original data :\n\n);
for (j0; j4; j)
{ printf(\nNo: %ld Name: %-8s Scores: ,s[j].sno, s[j].name);
for (i0; i3; i) printf(%6.2f , s[j].score[i]);
printf(\n);
} fun(s, 4);
printf(\n\nThe data after sorting :\n\n);
for (j0; j4; j)
{ printf(\nNo: %ld Name: %-8s Scores: ,s[j].sno, s[j].name);
for (i0; i3; i) printf(%6.2f , s[j].score[i]);
printf(\n);
}
} 解题思路
本题是对结构体数组中的姓名按升序进行排列。 第一处t是一个临时变量主要是存放学生数据的结构变量所以应填struct student。 第二处利用两重for循环进行排序操作排序的终止条件应该是总人数减1所以应填n-1。 第三处对姓名进行比较大小所以应填a[i].name,a[j].name。 给定程序MODI1.C中函数fun的功能是在p所指字符串中找出ASCII码值最大的字符将其放在第一个位置上并将该字符前的原字符向后顺序移动。
例如调用fun函数之前给字符串输入ABCDeFGH调用后字符串中的内容为eABCDFGH。
请改正程序中的错误使它能得出正确结果。 注意不要改动main函数不得增行或删行也不得更改程序的结构。
给定源程序
#include stdio.h fun( char *p )
{ char max,*q; int i0;
maxp[i];
while( p[i]!0 )
{ if( maxp[i] ) { maxp[i]; qpi }
i;
}
wihle( qp )
{ *q*(q-1);
q--;
}
p[0]max;
} main()
{char str[80];
printf(Enter a string: ); gets(str);
printf(\nThe original string: ); puts(str);
fun(str);
printf(\nThe string after moving: ); puts(str); printf(\n\n);
} 解题思路
第一处在语句后缺少分号所应改为qpi;。 第二处保留字while写错所应改为while(qp)。 学生的记录由学号和成绩组成N名学生的数据已在主函数中放入结构体数组 s中, 请编写函数fun它的功能是把指定分数范围内的学生数据放在b所指的数组中分数范围内的学生人数由函数值返回。
例如输入的分数是60 69, 则应当把分数在60到69的学生数据进行输出 包含60分和69分的学生数据。主函数中将把60放在low中把69放在heigh中。 注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入 你编写的若干语句。
给定源程序
#include stdio.h
#define N 16 typedef struct
{ char num[10];
int s;
} STREC; int fun( STREC *a,STREC *b,int l, int h )
{
} main()
{ STREC s[N]{{GA005,85},{GA003,76},{GA002,69},{GA004,85},
{GA001,96},{GA007,72},{GA008,64},{GA006,87},
{GA015,85},{GA013,94},{GA012,64},{GA014,91},
{GA011,90},{GA017,64},{GA018,64},{GA016,72}};
STREC h[N],tt;FILE *out ;
int i,j,n,low,heigh,t;
printf(Enter 2 integer number low heigh : );
scanf(%d%d, low,heigh);
if ( heigh low ){ theigh;heighlow;lowt; }
nfun( s,h,low,heigh );
printf(The students data between %d--%d :\n,low,heigh);
for(i0;in; i)
printf(%s %4d\n,h[i].num,h[i].s);
printf(\n);
out fopen(c:\\test\\out.dat,w) ;
nfun( s,h,80,98 );
fprintf(out,%d\n,n);
for(i0;in-1;i)
for(ji1;jn;j)
if(h[i].sh[j].s) {tth[i] ;h[i]h[j]; h[j]tt;}
for(i0;in; i)
fprintf(out,%4d\n,h[i].s);
fprintf(out,\n);
fclose(out);
} 解题思路 本题是把符合条件的学生记录存入到另一个结构体最后通过主函数进行输出。
符合条件的学生人数存在变量j初始值为0中最后返回其值。利用for循环语句依次判断是否符合条件如果符合则存入另一个记录体中人数j 加1。 参考答案
int fun( STREC *a,STREC *b,int l, int h )
{
int i,j 0 ;
for(i 0 ; i N ; i)
if(a[i].s l a[i].s h) b[j] a[i] ;
return j ;
}