
导读:复习的形式是很多的,如课堂复习、单元复习、期末复习等课堂复习有三种:讲新课前,复习与之有关的旧知识,这叫做准备复习;老师讲完课后,往往要趁热打铁做点练习,这是以消化为目的的准备性复习;一节课将结束时,将本节所学内容进行梳理、归纳、小结,这是
复习的形式是很多的,如课堂复习、单元复习、期末复习等
课堂复习有三种:讲新课前,复习与之有关的旧知识,这叫做准备复习;老师讲完课后,往往要趁热打铁做点练习,这是以消化为目的的准备性复习;一节课将结束时,将本节所学内容进行梳理、归纳、小结,这是以吸收为目的的梳理性复习。
课后复习以消除遗忘、强化记忆为目标,不管老师是否留作业,都应当对照课堂笔记与教材进行比较性复习,然后再做作业。
单元复习是指完成了一章或一组内容后的复习,主要采取比较异同,寻找内在联系,筛选累积的方式进行。
期末复习主要是将平时分散学习的知识分门别类地进行分析综合,系统归类的过程。
在我们的学习生活中,最宝贵的时间是课后复习,因为防止遗忘的最有效办法就是及时复习。心理学的研究表明,记忆是有规律可循的,学过的知识如果不加以复习就会忘记,过一天会忘记一半以上,经过两天就会忘记2/3左右,以后遗忘的数量会逐渐减少。因此,学习后若不及时复习,就会大大增加复习的困难,降低学习的效率。
为了提高复习的效率,我们要在复习时采取一定的方法,从不同角度做出合理的安排。在时间安排上,课后复习至少安排两次。第一次利用课间休息时间,用脑子复习一下这节课的要点,第二次复习应安排在晚上,读一下课堂笔记,对照教科书进行。
在对复习方式的运用上,可根据自己的实际情况灵活使用。
常用的复习方法有:
(1)尝试回忆法。即在复习时,先把老师讲过的内容在头脑中回忆一遍,然后再打开书或笔记本进行对照,对回忆模糊不清或根本回忆不起来的知识再有针对性地进行复习,这样做不仅可以强化记忆,而且能够逐步养成积极思考的习惯;
(2)要点法。即在复习过程中,寻求知识中的要点,抓住要点也就抓住了问题的主干。如复习课文时,就可以把重点词、每段的关键句、承上启下的过渡句等用醒目的颜色标上记号,使这些词句作为记忆的支撑点,抓住几个关键词句,也就抓住了整篇课文的内容;
(3)比较法。即找出各科知识间的特点和共同点,通过同中求异或异中求同来强化复习效果; '
2 B
因为double型下的 12e05 ,e后面不能带有小数,只能是整数。
5 D
float y=00,a[]={20,40,60,80,100},p;
int i;
p=&a[1]; /将a[1]的地址赋给P/
for(i=0;i<3;i++) y+=(p+i); /从p开始将p,p+1,p+2地址的值
加起来/
printf("%f\n",y); /输出总合/
理解了上述的程序段,那么可以知道
在循环中,i=0时,p=40 ,y=40
i=1时,p=60 ,y=100
i=2时,p=80 ,y=180
因为是浮点形式输出,所以最终的结果是D
14A
fopen的原型是:FILE fopen(const char filename,const char
mode)
fclose的原型是:fclose(FILE fp)
fprintf的原型是:int fprintf(FILEstream, const
charformat[,argument]…); ]
fread的原型是:int fread(void buf,int size,int count,FILE
stream);
参照上述函数原型,就可以得到A是对的。其他错的。
18 C
因为在循环条件中,首先定义i=1,但是在循环体中并没有对i进行操
作,那么i就一直保持不变=1,而只要i<3那么就进入循环,所以进入
循环的条件一直都是为真,所以就一直循环,变成死循环,无法进入p
rintf那条语句了。
20 B
int p,a=10,b=1;
p=&a;a=p+b;
首先p是一个指针,p=&a这个是让p指向a,也就是说p里面存的是a的
值10;a=p+b;这句就是进行加法运算,10+1=11赋给a,所以a的最终
结果就是11
21 D
这个函数的大意就是说,假设p存放的是最小的那个数的下标,从第0
个数开始跟后面的数进行比较,如果这个数比后面的数大,那么就把
后面的那个数的下标作为最小值的下标赋给p,然后继续进行比较,直
到全部比较结束。
25 A
int k=0;
while(k=1) k++
k=1实际上就是1,也就是命题为真,所以不管怎么样进入循环体的条
件永远都成立,所以每次都可以进入循环,所以是死循环。
28D
st(char s)
{char q=s; /将字符串s的首地址赋给指针q/
while(q!='\0') q++; /如果q地址的内容不是字符串结束符的话,
那就取下一个/
return (q-s); /返回q-s的值,这个是一个int类型,实际上就是
取这个字符串的长度/
}
30B
程序跑的
31A
main()
{int i=0;
while(1)
{ printf(""); /打印一个 /
i++; /此时i=1/
if(i<3) break; /因为i=1满足if条件,所以跳出循环体/
}
printf("\n");
}
所以最终只打印了一个
32 D
#include <stdioh>
main(int argc,char argv[])
{
while(--argc) /只要参数的总数自减不为0,那么进入循环体/
printf("%s",argv[argc]); /打印出第argc个参数/
printf("\n");
}
因为argc=4,所以会进入循环体4次,--argc是先做判断再自减
33 A
^按位异或
<<左移
优先级,左移〉按位异或
按照这个规则去算就可以了
所以选择A
34 B
getchar()不能带参数。
#include<stdioh> /引用库函数/
#include<stdlibh>
#include<ctypeh>
#include<stringh>
typedef struct /定义结构体数组/
{
char num[10]; /学号/
char name[20]; /姓名/
int score; /成绩/
}Student;
Student stu[80]; /结构体数组变量/
int menu_select() /菜单函数/
{
char c;
do{
system("cls"); /运行前清屏/
printf("\t\tStudents' Grade Management System\n"); /菜单选择/
printf("\t\t | 1 Input Records |\n");
printf("\t\t | 2 Display All Records |\n");
printf("\t\t | 3 Sort |\n");
printf("\t\t | 4 Insert a Record |\n");
printf("\t\t | 5 Delete a Record |\n");
printf("\t\t | 6 Query |\n");
printf("\t\t | 7 Statistic |\n");
printf("\t\t | 8 Add Records from a Text File|\n");
printf("\t\t | 9 Write to a Text file |\n");
printf("\t\t | 0 Quit |\n");
printf("\t\t\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /读入选择/
}while(c<'0'||c>'9');
return(c-'0'); /返回选择/
}
int Input(Student stud[],int n) /输入若干条记录/
{int i=0;
char sign,x[10]; /x[10]为清除多余的数据所用/
while(sign!='n'&&sign!='N') /判断/
{ printf("\t\t\tstudent's num:"); /交互输入/
scanf("\t\t\t%s",stud[n+i]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i]score);
gets(x); /清除多余的输入/
printf("\t\t\tany more records(Y/N)");
scanf("\t\t\t%c",&sign); /输入判断/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /显示所有记录/
{
int i;
printf("\t\t\t-----------------------------------\n"); /格式头/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /循环输入/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1]num,stud[i-1]name,stud[i-1]score);
if(i>1&&i%10==0) /每十个暂停/
{printf("\t\t\t-----------------------------------\n"); /格式/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /按学号排序/
{ int i,j,p,q,s;
char t[10];
for(i=0;i<n-1;i++) /冒泡法排序/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j]num,stud[j+1]num)>0)
{strcpy(t,stud[j+1]num);
strcpy(stud[j+1]num,stud[j]num);
strcpy(stud[j]num,t);
strcpy(t,stud[j+1]name);
strcpy(stud[j+1]name,stud[j]name);
strcpy(stud[j]name,t);
p=&stud[j+1]score;
q=&stud[j]score;
s=p;
p=q;
q=s;
}
}
int Insert_a_record(Student stud[],int n) /插入一条记录/
{char x[10]; /清除多余输入所用/
printf("\t\t\tstudent's num:"); /交互式输入/
scanf("\t\t\t%s",stud[n]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n]score);
gets(x);
n++;
Sort_by_num(stud,n); /调用排序函数/
printf("\t\t\tInsert Successed!\n"); /返回成功信息/
return(n);
}
int Delete_a_record(Student stud[],int n) /按姓名查找,删除一条记录/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /交互式问寻/
scanf("%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /返回失败信息/
return(n);
}
for(j=i;j<n-1;j++) /删除操作/
{
strcpy(stud[j]num,stud[j+1]num);
strcpy(stud[j]name,stud[j+1]name);
stud[j]score=stud[j+1]score;
}
printf("\t\t\tDelete Successed!\n"); /返回成功信息/
return(n-1);
}
void Query_a_record(Student stud[],int n) /查找并显示一个记录/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /交互式输入/
scanf("\t\t\t%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /输入失败信息/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i]num); /输出该学生信息/
printf("\t\t\this(her) score:%d\n",stud[i]score);
}
void Statistic(Student stud[],int n) /新增功能,输出统计信息/
{ int i,j=0,k=0,sum=0;
float aver; /成绩平均值/
for(i=0;i<n;i++) /循环输入判断/
{
sum+=stud[i]score;
if(stud[j]score>stud[i]score) j=i;
if(stud[k]score<stud[i]score) k=i;
}
aver=10sum/n;
printf("\t\t\tthere are %d records\n",n); /总共记录数/
printf("\t\t\tthe hignest score:\n"); /最高分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j]num,stud[j]name,stud[j]score);
printf("\t\t\tthe lowest score:\n"); /最低分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k]num,stud[k]name,stud[k]score);
printf("\t\t\tthe average score is %52f\n",aver); /平均分/
}
int AddfromText(Student stud[],int n) /从文件中读入数据/
{ int i=0,num;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /输入文件名/
if((fp=fopen(filename,"rb"))==NULL) /打开文件/
{ printf("\t\t\tcann't open the file\n"); /打开失败信息/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /读入总记录量/
while(i<num) /循环读入数据/
{
fscanf(fp,"%s%s%d",stud[n+i]num,stud[n+i]name,&stud[n+i]score);
i++;
}
n+=num;
fclose(fp); /关闭文件/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /将所有记录写入文件/
{
int i=0;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tWrite Records to a Text File\n"); /输入文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /打开文件/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /循环写入数据/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i]num,stud[i]name,stud[i]score);
i++;
}
fclose(fp); /关闭文件/
printf("Successed!\n"); /返回成功信息/
}
void main() /主函数/
{
int n=0;
for(;;)
{
switch(menu_select()) /选择判断/
{
case 1:
printf("\t\t\tInput Records\n"); /输入若干条记录/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /显示所有记录/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /按学号排序/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /插入一条记录/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /按姓名查找,删除一条记录/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /查找并显示一个记录/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /新增功能,输出统计信息/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /新增功能,输出统计信息/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /循环写入数据/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /结束程序/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
#include <stdioh>
#define STU 30#define COURSE 3
void Input(long num[],int score[][COURSE],int n);
void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);
void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);
void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);
int Search(long num[], int n, long x);
main()
{
int n, score[STU][COURSE], sum[STU], pos;
long num[STU], x;
float aver[STU];
printf("Please enter the total number of the students(n<=30):"); scanf("%d", &n); /输入参加考试的学生人数/
printf("Enter No and score as: MT EN PH\n"); Input(num, score, n); /输入学生成绩/
GetSumAver(score, n, sum, aver); /计算总分和平均分/
printf("Before sort:\n");
Print(num, score, n, sum, aver);
Sort(num, score, n, sum, aver); /排名次/
printf("After sort:\n");
Print(num, score, n, sum, aver);
printf("Please enter searching number:");
scanf("%ld", &x); /以长整型格式输入待查找学生的学号/
pos = Search(num, n, x); /名次查询/
if (pos != -1)
{
printf("position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n");
printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%50f\n",
pos+1,num[pos], score[pos][0],score[pos][1],
score[pos][2], sum[pos],aver[pos]);
}
else
{
printf("Not found!\n");
}
}
/ 函数功能:输入某班学生期末考试三门课程成绩
函数参数:长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
函数返回值:无
/
void Input(long num[], int score[][COURSE], int n)
{
int i, j;
for (i=0; i<n; i++)
{
scanf("%ld", &num[i]);
for (j=0; j<COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
}
/ 函数功能:计算每个学生的总分和平均分
函数参数: 整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,计算得到的每个学生的总分
实型数组aver,计算得到的每个学生的平均分
函数返回值:无
/
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])
{
int i, j;
for (i=0; i<n; i++)
{
sum[i] = 0;
for (j=0; j<COURSE; j++)
{
sum[i] = sum[i] + score[i][j];
}
aver[i] = (float)sum[i] / COURSE;
}
}
/ 函数功能:按总分成绩由高到低排出成绩的名次
函数参数:长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
/
void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])
{
int i, j, k, m;
int temp1;
long temp2;
float temp3;
for (i=0; i<n-1; i++)
{
k = i;
for (j=i+1; j<n; j++)
{
if (sum[j] > sum[k]) k = j;
}
if (k != i)
{
temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
for (m=0; m<COURSE; m++)
{
temp1 = score[k][m];
score[k][m] = score[i][m];
score[i][m] = temp1;
}
}
}
}
/ 函数功能: 打印名次表,表格内包括学生编号、各科分数、总分和平均分
函数参数: 长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
/
void Print(long num[], int score[][COURSE], int n,
int sum[], float aver[])
{
int i, j;
printf(" NO \t| MT \t EN \t PH \t SUM \t AVER\n");
printf("----------------------------------------------------\n");
for (i=0; i<n; i++)
{
printf("%ld\t| ", num[i]);
for (j=0; j<COURSE; j++)
{
printf("%4d\t", score[i][j]);
}
printf("%5d\t%50f\n", sum[i], aver[i]);
}
}
/ 函数功能:在学号数组中顺序查找学生的学号
函数参数:长整型数组num,存放学生学号
整型变量n,存放学生人数
长整型变量x,存放待查找学生的学号
函数返回值:找到时,返回学生学号在学号数组中的下标位置,否则返回值-1
/
int Search(long num[], int n, long x)
{
int i;
for (i=0; i<n; i++)
{
if (num[i] == x) return(i);
}
return (-1);
}







































