考点③注意两点,一是strcmp(a[i].name,a[j].name)比较a[i]和a[j]中的name谁大,二是“>”的使用,大于符号用于从小到大的排序,小于符号用于从大到小的排序。
2.将形参a所指的结构体变量中的数据赋值给结构体变量b,进行相应的修改,类似的题目:
9、16、23、33、51、78、82、92
voidfun(structstudenta)
{structstudentb;inti;
/**********found**********/
b=__1__;将形参a中的值赋值给结构体变量b,因此填入a进去即可
b.sno=10002;改变结构体变量b中的sno为10002
/**********found**********/
strcpy(__2__,"LiSi");将“LiSi”赋值给变量b中的name,因此填入b.name
printf("\nThedataaftermodified:
\n");
printf("\nNo:
%ldName:
%s\nScores:
",b.sno,b.name);输出变量b中的学号和姓名
/**********found**********/
for(i=0;i<3;i++)printf("%6.2f",b.__3__);输出变量b中的成绩,因为成绩是一个数组有三个元素,因此用循环来控制输出,所以填入b.score[i]
printf("\n");
}
对比记忆:
structstudent考点①fun(structstudenta)
{inti;
a->sno=1002;考点②
strcpy(a->name,”LiSi”);考点③
for(i=0;i<3;i++)a->scare[i]+=1;考点④
returna;}
3.结构体和文件结合,类似的题目:
22、30、47、80、88
voidfun(char*filename,longsno)
{FILE*fp;
STUn;inti;
fp=fopen(filename考点①,"rb+");
/**********found**********/
while(!
__1__考点②)
{fread(&n,sizeof(STU),1,fp);考点③
/**********found**********/
if(n.sno__2__)break;
}
if(!
feof(fp))
{for(i=0;i<3;i++)n.score[i]+=3;
/**********found**********/
fseek(fp,-1L*__3__,SEEK_CUR);考点④
fwrite(&n,sizeof(STU),1,fp);考点⑤
}
fclose(fp);
}
考点1需要注意打开的是哪个文件,本题目中指向的是形参filename所指向文件。
考点2feof(fp)用于判断文件是否结束。
考点3fread(&n,sizeof(STU),1,fp)从文件中读取一个数据给变量n。
考点4fseek(fp,-1L*__3__,SEEK_CUR);将指针移动到当前位置前一位,由于指针指向的是结构体,因此fseek(fp,-1L*sizeof(STU),SEEK_CUR);
考点5写入数据fwrite(&n,sizeof(STU),1,fp);
(三)文件类型的题目:
22、28、30、32、47、63、80、88、94
1、文件类型的题目,看清楚题目意思,定义一个文件的指针,第一个位置出现fp的时候要填FILE*;
2、掌握文件中fopen、fprintf、fscanf、fputs、fputc、fgets、fgetc、fseek、fwrite、fread、rewind函数的使用的格式。
fopen(“文件名”,“打开方式”);
fclose(文件指针);
fscanf(文件指针,格式控制字符串,输入列表项);
fprintf(文件指针,格式控制字符串,输出列表项);
fwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);
fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);
3、文件打开之后要注意关闭文件,关闭文件的函数fclose(文件指针);
4、在循环语句中如果使用到的是while(!
feof())空格中填写的文件指针,表明判断的是文件指针是否已经指到了文件的末尾。
备注:
如果文件指针指到了文件的末尾,则feof返回的是非零值,如果没有指在文件的末尾,返回的是0值。
(四)数组类型的题目:
3、4、7、20、24、26、39、40、41、54、57、64、68、70、71、76、89、90、99
一维数组中存在这样一些类型:
1、求一个数值数组中的所有值的平均值和把大于或者小于平均值的数辅导例外一个数组中。
在计算机平均值时,首先定义一个变量来存放平均分,平均分一般用av变量来代替,如果av已经定义但是没有赋初值,那么这个空填写的内容的为:
av=0;
2、求算平均值值时有两种方法,第一种是算出总的分数,最后再除以总的个数即可,如算1到6之间的数的平均值,首先算出1到6的和,其次用综合除以总的个数6,即可以得到平均值;第二种方法是用每一个数除以6再把所有的和加起来。
即1/6+2/6+3/6+4/6+5/6+6/6;所以在执行的一维数组中算平均值时也是存在来中情况,如果在for语句的后面有av=av/N;则第二个空一般的填写时av+=s[i];如果说没有av=av/N;则填写的是:
av+=s[i]/N;