免费计算机2级C语言考试必考题型.docx
《免费计算机2级C语言考试必考题型.docx》由会员分享,可在线阅读,更多相关《免费计算机2级C语言考试必考题型.docx(10页珍藏版)》请在冰豆网上搜索。
免费计算机2级C语言考试必考题型
专题一判断一年是否为润年
main()
{
intyear,leap;
scanf("%d",&year);if((year%4==0&&year%100!
=0)
||(year%400==0))leap=1;
elseleap=0;
if(leap)printf("%disnotaleapyear\n",year);
elseprintf("%disaleapyear\n",year);
}
专题二判断M是否为素数
求100-200间的全部素数。
#include
main()
{intm,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1){printf("%d",m);n=n+1;}
if(n%10==0)printf("\n");
}
printf("\n");}
专题三矩阵运算
专题四递归算法求n!
floatfac(intn)
{
floatf;
if(n<0)printf("n<0,dataerror!
");
elseif(n==0)||(n==1)f=1;
elsef=fac(n-1)*n;
return(f);
}
main()
{intn;floaty;
printf("inputaintegernumber:
");
scanf("%d",&n);
y=fac(n);
printf("%d!
=%15.0f",n,y);
}
专题五排序法
#include
intmain(){
inta[5]={5,10,-7,3,7},i,t,j;
choose_sort(a);
for(i=0;i<=4;i++)
printf("%d\n",a[i]);
return0;
}
voidchoose_sort(inta[]){
inti,j,t;
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i]>a[j]){
t=a[j];
a[j]=a[i];
a[j]=t;
}
}
专题七指针处理链表
建立一个简单链表,它由3个学生数据的结点组成,输出各结点中的数据。
#defineNULL0
structstudent
{longnum;
floatscore;
structstudent*next;
};
main()
{structstudenta,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.1f\n",p->num,p->score);
p=p->next;
}while(p!
=NULL);
}
专题八文件操作
真题解析
例1:
读程序,回答问题
将下列程序编译、连接后生成一个名为2_3.exe的可执行文件。
假设盘上有两个文本文件file1.dat和file2.dat,file1.dat的内容为123abc,file2.dat的内容为xyzABC987。
(1)若在DOS提示符下键入
2_3file1.datfile2.dat
则程序的运行结果为:
intmain(intargc,char*argv[]){
FILE*fp;
intfun(FILE*);
intnum,i=1;
while(--argc>0)
if((fp=fopen(argv[i++],"r"))==NULL){
printf("Cannotopenfile!
\n");
exit(0);
}
else{
num=fun(fp);
fclose(fp);
}
printf("num=%d\n",num);
}
intfun(FILE*fp){
staticintcount=0;
charc;
c=fgetc(fp);
while((c!
=EOF)){
if(c>='0'&&c<='9')
count++;
c=fgetc(fp);
}
returncount;
}
解:
num=6
若将fun函数中对count的定义
staticintcount=0,改为intcount=0,其余条
件不变,若在DOS提示符下键入
2_3file1.datfile2.dat
则程序的运行结果为:
#include
intfun(FILE*fp){
/*staticintcount=0;*/
intcount=0;
charc;
c=fgetc(fp);
while((c!
=EOF)){
if(c>='0'&&c<='9')
count++;
c=fgetc(fp);
}
returncount;
}
解:
num=3
若将fun函数中对count的定义
staticintcount=0,改为intcount,其余条
件不变,若在DOS提示符下键入
2_3file1.datfile2.dat
则程序的运行结果为:
#include
intfun(FILE*fp){
/*staticintcount=0;*/
intcount;
charc;
c=fgetc(fp);
while((c!
=EOF)){
if(c>='0'&&c<='9')
count++;
c=fgetc(fp);
}
returncount;
}
解:
num=随机值
例2:
程序填空题
将三个职工的数据(编号,姓名,年龄)从键盘输入,存放到一个新建的二进制文件employee中去。
先看两个函数
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
以上两个函数常用于二进制文件的访问
程序如下:
#include
intmain(){
FILE*fp;
structemployee{
longcode;
charname[20];
intage;
}em;
intk;
if((fp=fopen("employee", ① ))==NULL){
printf("error\n");
return(0);
}
for(k=0;k<3;k++){
scanf("%ld%s%d",&em.code,em.name,&em.age);
fwrite(②,sizeof(structemployee),③,fp);
}
fclose(fp);
return1;
}
解:
①"wb"
②&em
③1
例3:
以下程序运行后,文件test中的内容为
#include
#include
voidfun(char*fname,char*st){
FILE*fp;
inti;
fp=fopen(fname,"w");
for(i=0;ifputc(st[i],fp);
fclose(fp);
}
voidmain(){
fun("test","world");
fun("test","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
intmain(){
intn=0;
floatx=0.0,y;
FILE*fp;
fp=① ;
do{
fscanf( ② );
if(feof(fp))break;
x+=y;
n++;
}while
(1);
x=x/n;
printf("average=%f",x);
③ ;
fclose(fp);
return0;
}
解:
①fopen("stu.txt","r+")
②fp,"%f,",&y
③fprintf(fp,",%f",x);