1、专题一 判断一年是否为润年main( ) int year,leap; scanf(%d,&year); if(year%4=0&year%100!=0) |(year%400=0)leap=1; else leap=0;if (leap)printf(%dis not a leap yearn,year); else printf(%d is a leap yearn,year); 专题二 判断M是否为素数求间的全部素数。 #include main( ) int m,k,i,n=0; for(m=101;m=200;m=m+2) k=sqrt(m); for(i=2;i=k+1)print
2、f(%d,m);n=n+1; if(n%10=0)printf(n); printf(n); 专题三 矩阵运算 专题四 递归算法求n!float fac(int n) float f; if(n0) printf(n0,dataerror!); else if(n=0)|(n=1) f=1; else f=fac(n-1)*n; return(f); main( ) int n;float y; printf(input a integer number:); scanf(%d,&n); y=fac(n); printf(%d!=%15.0f,n,y); 专题五 排序法#include int
3、 main()int a5=5, 10, -7, 3, 7 , i, t, j;choose_sort(a);for(i=0;i=4;i+)printf(%dn,ai);return 0;void choose_sort(int a)int i,j,t;for(i=0;i4;i+)for(j=i+1; jaj)t=aj;aj=ai;aj=t;专题七 指针处理链表 建立一个简单链表,它由3个学生数据的结点组成,输出各结点中的数据。#define NULL 0 struct student long num; float score; struct student *next; ; main( )
4、 struct student a,b,c,*head,*p; a.num=99101;a.score=89.5; b.num=99103;b.score=90; c.num=99107;c.score=85; head=&a; a.next=&b;b.next=&c; c.next=NULL; p=head; do printf(%ld%5.1fn,p-num,p-score); p=p-next; while(p!=NULL); 专题八 文件操作真题解析例1: 读程序,回答问题 将下列程序编译、连接后生成一个名为 2_3.exe的可执行文件。假设盘上有两个文本文件file1.dat和fil
5、e2.dat,file1.dat的内容为123abc,file2.dat的内容为xyzABC987。(1)若在DOS提示符下键入 2_3 file1.dat file2.dat 则程序的运行结果为:int main(int argc,char *argv)FILE *fp;int fun(FILE *);int num,i=1;while(-argc0)if(fp=fopen(argvi+,r)=NULL)printf(Cannot open file!n);exit(0);elsenum=fun(fp);fclose(fp);printf(num=%dn,num);int fun(FILE
6、*fp)static int count=0;char c;c=fgetc(fp);while(c!=EOF)if(c=0 & c=9)count+;c=fgetc(fp);return count;解:num=6若将fun函数中对count的定义static int count=0,改为int count=0,其余条件不变,若在DOS提示符下键入 2_3 file1.dat file2.dat 则程序的运行结果为:#include int fun(FILE *fp)/*static int count=0;*/ int count=0;char c;c=fgetc(fp);while(c!=
7、EOF)if(c=0 & c=9)count+;c=fgetc(fp);return count;解:num=3若将fun函数中对count的定义static int count=0,改为int count,其余条件不变,若在DOS提示符下键入 2_3 file1.dat file2.dat 则程序的运行结果为:#include int fun(FILE *fp)/*static int count=0;*/ int count;char c;c=fgetc(fp);while(c!=EOF)if(c=0 & c=9)count+;c=fgetc(fp);return count;解:num=
8、随机值例2:程序填空题 将三个职工的数据(编号,姓名,年龄)从键盘输入,存放到一个新建的二进制文件employee中去。先看两个函数 fread(buffer, size, count, fp); fwrite(buffer, size, count, fp); 以上两个函数常用于二进制文件的访问 程序如下:#include int main()FILE *fp;struct employeelong code;char name20;int age;em;int k;if(fp=fopen(employee,)=NULL)printf(errorn);return(0);for(k=0;k3
9、;k+)scanf(%ld%s%d,&em.code,em.name,&em.age);fwrite( ,sizeof(struct employee),fp);fclose(fp);return 1;解: wb &em 1例3:以下程序运行后,文件test中的内容为#include #include void fun(char *fname, char *st)FILE *fp;int i;fp=fopen(fname,w);for(i=0;istrlen(st);i+)fputc(sti,fp);fclose(fp);void main()fun(test, world);fun(test
10、, hello);world (B) worldhello (C)helloworld (D) hello解:hello例4:程序填空题 文件stu.txt中存放了一个学生各门课程的考试分数,数据之间以逗号分割。下面程序将文件中的所有分数取出,计算平均分,显示在屏幕上,还要把这个平均分数按原文件的数据格式记录在原文件中。例如文件stu.txt中存放的为“60.5, 81.1, 93.5,90.5”,则程序运行后文件stu.txt中为60.5, 81.1, 93.5,90.5, 78.363339#include int main()int n=0;float x=0.0,y;FILE *fp;fp= ;dofscanf();if(feof(fp)break;x+=y;n+;while(1); x=x/n;printf(average=%f,x);fclose(fp);return 0;解: fopen(stu.txt,r+) fp,%f,&y fprintf(fp,%f,x);8