小学教育四川省计算机等级考试二级C语言机试题第二十八次文档_第1页
小学教育四川省计算机等级考试二级C语言机试题第二十八次文档_第2页
小学教育四川省计算机等级考试二级C语言机试题第二十八次文档_第3页
小学教育四川省计算机等级考试二级C语言机试题第二十八次文档_第4页
小学教育四川省计算机等级考试二级C语言机试题第二十八次文档_第5页
已阅读5页,还剩71页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/四川省计算机等级考试二级C语言机试题(第二十八次)2009-11-0616:45四川省计算机等级考试二级C语言机试题(第二十八次)

2009-03-2916:44:17

(第一套)(60分钟)一、程序调试题(40分)磁盘上有一C程序test1-1.c,其功能是:将具有N个元素的数组的后m个元素移到前m个位置。例如,若输入m=3,数组元素为:12345678910,则输出结果为:89101234567。要求将结果显示在屏幕上并写入文件test1-1.dat中。请更改程序中的错误,使程序能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:

#include"stdio.h"

#defineN10

voidmain()

{inta[N],k,m,r,*t;

FILE*fp;

fp=fopen(test1-1.dat,"w");

if(fp==NULL)

{printf("notopen!\n");

exit(0);

}

printf("\nInputm:");

scanf("%d",m);

printf("\nInput10numbers:\n");

for(k=0;k<N;k++)

scanf("%d",a);

for(r=0;r<m;r++)

{t=a[N-1];

for(k=N-1;k>0;k--)

a[k]=a[k-1];

a[k]=t;

}

for(k=0;k<N;k++)

{printf("%4d",a[k]);

fprintf(fp,"%4d",a[k]);

}

fclose(fp);

}二、编写程序test1-2.c(60分)编写函数fun,函数fun的功能是:求出满足“百位减十位等于个位”的所有三位整数,并按降序存入形参数组a中,满足条件下的三位数总个数作为函数值返回。main函数中调用函数fun,并按一行5个数输出结果。(第二套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test2-1.c的C程序,其功能是将一个文本文件test2-1.in逐行逆置复制到另一个文件test2-1.out中。test2-1.out文件名在命令行中给出。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#include"conio.h"

voidrev(void);

FILE*f1,*f2;

voidmain(intargc,char*argv[])

{charch;

if(argc>2)

{printf("paramelersmissing!\n");

exit(0);

}

if((f1=fopen(*argv[1],"w"))==NULL)

{printf("cannotopenfile1!\n");

exit(0);

}

if((f2=fopen("test2-1.in","r"))==NULL)

{printf("cannotopenfile2!\n");

exit(0);

}

while(!feof(f2))

{voidrev();

fputc('\n',f1);

}

fclose(f1);

fclose(f2);

}

voidrev(void)

{charc;

if(!feof(f2)||((c=fgetc(f2))!='\n'))

{rev();

fputc(c,f2);

}

}二、编写程序test2-2.c(60分)从键盘上输入整数m和k,将大于且紧靠m的k个素数存入数组xx中,将结果显示在屏幕上。要求:(1)在num函数中完成找出紧靠m的k个素数,并存入数组xx中。函数num的定义形式为:voidnum(intm,intk,intxx[])(2)main函数完成数据的输入和输出。(第三套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test3-1.c的C程序文件,其中函数fun的功能是:找出被2、3、5整除时余数均为1的最小的10个自然数,并存放到一个整型数组中。在main函数中调用函数fun,输出最后结果,并将结果输出到文本文件test3-1.txt中。请改正程序中的错误,使其能得到正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include<stdio.h>

voidfun(inta[])

{

inti;

intcnt=0;

for(i=1;cnt<10;i++)

if(i%2==1||i%3==1||i%5==1)

{a[cnt]=i;

cnt++;

}

}

voidmain()

{

inta[10];

inti;

FILE*fp;

if((fp=fopen("test3-1.txt","w"))==null)

{printf("Cannotopenthefile.\n");

exit(0);

}

fun();

for(i=0;i<10;i++)

{printf("%4d",a[i]);

fprintf("%4d",a[i]);

}

fclose(fp);

}二、编写程序test3-2.c(60分)按要求编写程序:(1)编写函数fun,其功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。例如:形参s所指字符串为:abcdef35agd3khe7,则数字出现的次数为4次。(2)在main函数中,从已有文件test3-2.in中读出一行字符(字符个数不超过80个)到字符数组str中,调用函数fun,统计出数字出现的次数,并在屏幕上输出结果。四川省计算机等级考试二级C语言机试题(第二十七次)2009-11-0616:46四川省计算机等级考试二级C语言机试题(第二十七次)

2009-03-2916:43:11

(第一套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test1-1.c的C程序,其功能是:利用折半查找法查找整数m在含有N个有序整数的一维数组中的位置。若找到,则返回其下标,反之,则返回-1。请更改程序中的错误,使之能输出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#defineN10

voidfun(inta[],intm)

{intlow=0,high=N-1,mid;

while(low<=high)

{mid=(low+high)%2;

if(m<a[mid])

high=mid-1;

elseif(m>a[mid])

low=mid+1;

else

return;

}

return-1;

}

voidmain()

{

inti,a[]={-3,4,7,9,11,13,45,60,66,70},k,m;

printf("\narraya:\n");

for(i=0;i<N;i++)

printf("%d,",a[i]);

printf("\n\nEnterm:\n");

scanf("%d",m);

k=fun(a[N],m);

if(k>=0)

printf("m=%d,index=%d\n",m,k);

else

printf("Notbefound!\n");

}二、编写程序test1-2.c(60分)

用指针编程实现:将用户输入的由数字字符和非数字字符组成的字符串(字符个数不超过256个)中的数字提取出来,例如:输入“asd123rt456,lg789”,则提取的数字分别是123、456和789。将结果显示在屏幕上,同时输出到文件test1-2.dat中(要求每个数字一行)。(第二套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test2-1.c的C程序,其功能是统计字符串中大写字母的个数。在main函数中输入一个字符串(字符个数不超过80个),并输出统计结果。在UpperNum()函数中统计字符串str中的大写字母个数,并作为函数值返回。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#include"ctype.h"

intUpperNum(charstr[])

{

intn,i=0;

while((str+i))

{

if(isupper(str[i]))

n++;

i++;

}

returni;

}

voidmain()

{

charstr[];

printf("\nInputastring:\n");

gets(str);

printf("\nTheNumberofUpperLetteris:%d\n",UpperNum(str[]));

}二、编写程序test2-2.c(60分)按要求编写程序:(1)编写一个字符串比较函数mystrcpy,其功能是:对两个字符串进行比较,若这两个字符串相等,则返回0,若这两个字符串不等,则返回它们第一个不同字符的ASCII码之差。(2)编写main函数:从文件test2-2.dat中读两个字符串分别赋给两个一维字符数组,调用mystrcpy函数,输出比较结果。(第三套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test3-1.c的C程序文件,其功能是:从键盘上输入一个100~1000之间的数,找出其中三位数字相等的所有整数并输出。请改正程序中的错误。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#defineN100

intfun(ints,intn)

{inti,j,k,a,b,c;

j=0;

for(i=100;i<=n;i++)

{

k=j;

a=k%10;

k/=10;

b=k%10;

k/=10;

c=k;

if(a==b||a==c)

s[j++]=i;

}

returni;

}

voidmain()

{

inta[N],n,num=0,i;

do

{printf("Entern(100~1000):\n\n");

scanf("%d",&n);

}while(n>1000)

num=fun(a,n);

printf("\n\nTheresult:\n");

for(i=0;i<num;i++)

printf("%5d",a[i]);

printf("\n");

}二、编写程序test3-2.c(60分)按要求编写程序:(1)编写函数fun,其功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。例如:形参s所指字符串为:abcdef35agd3khe7,则数字出现的次数为4次。(2)在main函数中,从已有文件test3-2.in中读出一行字符(字符个数不超过80个)到字符数组str中,调用函数fun,统计出数字出现的次数,并在屏幕上输出结果。(第四套)(60分钟)一、程序调试题(40分)给定程序test4-1.c,其功能是:输入一个整数k(2<=k<=10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入2310,则输出2、3、5、7、11。请改正程序中的错误,使程序能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

intfun1(int*n)

{

inti;

for(i=2;i<=n;i++)

if!(n%i)

return0;

return;

}

voidmain()

{

intj,k;

printf("\nPleaseenteraintegernumber2~10000:");

scanf("%d",k);

printf("\nTheprimefactor(s)of%dis(are):",k);

for(j=2;j<=k;j++)

if(!(k%j)&&fun1(j))

printf("\n%4d",j);

printf("\n");

}二、编写程序test4-2.c(60分)磁盘上已有文件test4-2.dat,文件中有3个字符串,请将3个字符串中的小写字母全部转换为大写字母,然后将转换后的结果输出到屏幕上。要求:定义convert函数,用于实现小写字母转换成大写字母。在main函数中完成文件夹的打开和读数据,调用convert函数,输出转换后的结果。(第五套)(60分钟)一、程序调试题(40分)给定程序test5-1.c,其功能是:求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后。例如,数组中的数据为:876675896101301401980431451777输出结果如下:Theindexofmaxis:6Theresult:876675896101301401980431451777980请改正程序中的错误,使程序能得出正确结果。、注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#defineN80

voidfun(int*s,int*t,intk)

{

inti,m;

*k=0;

m=*s;

for(i=1;i<(*t-1);i++)

if(m<s+i)

{

m=*(s+i);

*k=i;

}

s[i+1]=m;

*t++;

}

voidmain()

{

inta[N]={876,675,896,101,301,401,980,431,451,777};

inti,n=10,mi;

fun(a[N],&n,&mi);

printf("Theindexofmaxis:%d\n",mi);

printf("Theresult:\n");

for(i=0;i<n;i++)printf("%4d",a);

}二、编写程序test5-2.c(60分)用函数调用方式编写程序。要求实现:(1)编写fun函数,其功能是计算并比较两个字符串的长度(要求不得使用标准库函数strlen),返回较长字符串的指针。若两个字符串长度相等,则返回第一个字符串的指针。(2)编写main函数,在其中输入两个字符串,打开文件test5-2.dat,将fun函数计算出的两个字符串长度和返回结果分别显示在屏幕上,同时写入到文件test5-2.dat中。四川省计算机等级考试二级C语言机试题(第二十八次)2009-11-0616:45四川省计算机等级考试二级C语言机试题(第二十八次)

2009-03-2916:44:17

(第一套)(60分钟)一、程序调试题(40分)磁盘上有一C程序test1-1.c,其功能是:将具有N个元素的数组的后m个元素移到前m个位置。例如,若输入m=3,数组元素为:12345678910,则输出结果为:89101234567。要求将结果显示在屏幕上并写入文件test1-1.dat中。请更改程序中的错误,使程序能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:

#include"stdio.h"

#defineN10

voidmain()

{inta[N],k,m,r,*t;

FILE*fp;

fp=fopen(test1-1.dat,"w");

if(fp==NULL)

{printf("notopen!\n");

exit(0);

}

printf("\nInputm:");

scanf("%d",m);

printf("\nInput10numbers:\n");

for(k=0;k<N;k++)

scanf("%d",a);

for(r=0;r<m;r++)

{t=a[N-1];

for(k=N-1;k>0;k--)

a[k]=a[k-1];

a[k]=t;

}

for(k=0;k<N;k++)

{printf("%4d",a[k]);

fprintf(fp,"%4d",a[k]);

}

fclose(fp);

}二、编写程序test1-2.c(60分)编写函数fun,函数fun的功能是:求出满足“百位减十位等于个位”的所有三位整数,并按降序存入形参数组a中,满足条件下的三位数总个数作为函数值返回。main函数中调用函数fun,并按一行5个数输出结果。(第二套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test2-1.c的C程序,其功能是将一个文本文件test2-1.in逐行逆置复制到另一个文件test2-1.out中。test2-1.out文件名在命令行中给出。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include"stdio.h"

#include"conio.h"

voidrev(void);

FILE*f1,*f2;

voidmain(intargc,char*argv[])

{charch;

if(argc>2)

{printf("paramelersmissing!\n");

exit(0);

}

if((f1=fopen(*argv[1],"w"))==NULL)

{printf("cannotopenfile1!\n");

exit(0);

}

if((f2=fopen("test2-1.in","r"))==NULL)

{printf("cannotopenfile2!\n");

exit(0);

}

while(!feof(f2))

{voidrev();

fputc('\n',f1);

}

fclose(f1);

fclose(f2);

}

voidrev(void)

{charc;

if(!feof(f2)||((c=fgetc(f2))!='\n'))

{rev();

fputc(c,f2);

}

}二、编写程序test2-2.c(60分)从键盘上输入整数m和k,将大于且紧靠m的k个素数存入数组xx中,将结果显示在屏幕上。要求:(1)在num函数中完成找出紧靠m的k个素数,并存入数组xx中。函数num的定义形式为:voidnum(intm,intk,intxx[])(2)main函数完成数据的输入和输出。(第三套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test3-1.c的C程序文件,其中函数fun的功能是:找出被2、3、5整除时余数均为1的最小的10个自然数,并存放到一个整型数组中。在main函数中调用函数fun,输出最后结果,并将结果输出到文本文件test3-1.txt中。请改正程序中的错误,使其能得到正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include<stdio.h>

voidfun(inta[])

{

inti;

intcnt=0;

for(i=1;cnt<10;i++)

if(i%2==1||i%3==1||i%5==1)

{a[cnt]=i;

cnt++;

}

}

voidmain()

{

inta[10];

inti;

FILE*fp;

if((fp=fopen("test3-1.txt","w"))==null)

{printf("Cannotopenthefile.\n");

exit(0);

}

fun();

for(i=0;i<10;i++)

{printf("%4d",a[i]);

fprintf("%4d",a[i]);

}

fclose(fp);

}二、编写程序test3-2.c(60分)按要求编写程序:(1)编写函数fun,其功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。例如:形参s所指字符串为:abcdef35agd3khe7,则数字出现的次数为4次。(2)在main函数中,从已有文件test3-2.in中读出一行字符(字符个数不超过80个)到字符数组str中,调用函数fun,统计出数字出现的次数,并在屏幕上输出结果。四川省计算机等级考试二级C语言机试题(第二十八次)答案2009-11-0616:48四川省计算机等级考试二级C语言机试题(第二十八次)答案

2009-03-2916:44:46

28-1套参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include"stdio.h"

#defineN10

voidmain()

{inta[N],k,m,r,*t;

/*改为:t*/

FILE*fp;

fp=fopen(test1-1.dat,"w");/*改为:"test1-1.dat"*/

if(fp==NULL)

{printf("notopen!\n");

exit(0);

}

printf("\nInputm:");

scanf("%d",m);

/*改为:&m*/

printf("\nInput10numbers:\n");

for(k=0;k<N;k++)

scanf("%d",a);

/*改为:a+k*/

for(r=0;r<m;r++)

{t=a[N-1];

for(k=N-1;k>0;k--)

a[k]=a[k-1];

a[k]=t;

/*改为:a[0]*/

}

for(k=0;k<N;k++)

{printf("%4d",a[k]);

fprintf(fp,"%4d",a[k]);

}

fclose(fp);

}评分标准:每改对一处得8分二、编程题(程序文件取名为test1-2.c)(60分)评分标准:1.fun函数编写:1)函数定义正确,能正确的定义和使用返回值

10分

2)参数定义、传递正确

10分3)算法正确,能按要求求出所有满足条件的二位数15分2.main函数:1)能正确定义数组,并能正确进行输出15分2)能正确调用函数

10分参考程序:#include<stdio.h>

intfun(inta[])

{inti,j=0;for(i=999;i>=100;i--)

if(i/100-i/10%10==i%10)

{a[j]=i;

j++;

}returnj;}voidmain(){inta[100];inti,n;n=fun(a);for(i=0;i<n;i++){

printf("%5d",a[i]);

if((i+1)%5==0)printf("\n");}}28-2套参考答案:一、程序调试题(文件名为test2-1.c)(40分)#include"stdio.h"#include"conio.h"voidrev(void);FILE*f1,*f2;voidmain(intargc,char*argv[]){charch;if(argc>2)

/*改为:<*/{printf("paramelersmissing!\n");

exit(0);}if((f1=fopen(*argv[1],"w"))==NULL)

/*改为:argv[1]*/{printf("cannotopenfile1!\n");

exit(0);}if((f2=fopen("test2-1.in","r"))==NULL){printf("cannotopenfile2!\n");

exit(0);}while(!feof(f2)){voidrev();

/*去掉void*/

fputc('\n',f1);}fclose(f1);fclose(f2);}voidrev(void){charc;if(!feof(f2)||((c=fgetc(f2))!='\n'))

/*||改为:&&*/{rev();

fputc(c,f2);

/*f2改为:f1*/}}评分标准:每改对一处得8分二、编程题(程序文件取名为test2-2.c)(60分)评分标准:1、输入、输出方法正确

10分

2、函数定义及参数传递正确

10分3、求素数方法正确

20分

4、将素数正确存入数组xx中

10分

5、输出结果正确

10分参考程序:#include<stdio.h>voidnum(intm,intk,intxx[]){intdata=m+1;inthalf,n=0,i;while(1){

half=data/2;

for(i=2;i<=half;i++)

if(data%i==0)break;

if(i>half)

xx[n++]=data;

if(n>=k)break;

data++;}}voidmain(){intm,n,xx[10000];printf("Enterm,n:");scanf("%d,%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)

printf("%d",xx[m]);printf("\n");}28-3套参考答案:一、程序调试题(文件名为test3-1.c)(40分)#include<stdio.h>voidfun(inta[]){inti;intcnt=0;for(i=1;cnt<10;i++)

/*改为:<=*/

if(i%2==1||i%3==1||i%5==1)/*改为:&&*/

{a[cnt]=i;

cnt++;

}}voidmain(){inta[10];inti;FILE*fp;if((fp=fopen("test3-1.txt","w"))==null)/*改为:NULL*/{printf("Cannotopenthefile.\n");

exit(0);}fun();

/*改为:fun(a)*/for(i=0;i<10;i++){printf("%4d",a[i]);

fprintf("%4d",a[i]);

/*改为:fp,"%4d"*/}fclose(fp);}评分标准:每改对一处得8分二、编程题(程序文件取名为test3-2.c)(60分)评分标准:1.fun函数编写40分:1)函数定义、形参书写正确、有正确的返回值10分2)能正确的求出最大值和最小值

20分3)能正确的求出平均分10分2.main函数20分:1)能正确定义实参一维数组,并能正确的对整型数组进行输入10分2)正确调用fun函数并输出正确结果10分参考程序:#include<stdio.h>doublefun(inta[],intn){inti,max,min;doubles=0,aver;max=min=a[0];for(i=0;i<n;i++){

s=s+a[i];

if(max<a[i])max=a[i];

elseif(min>a[i])min=a[i];}aver=(s-max-min)/(n-2);returnaver;}voidmain(){inta[100],i,n;doubleaver;printf("Entern(n<100):");scanf("%d",&n);printf("Entera[0]~a[%d]:",n-1);for(i=0;i<n;i++)

scanf("%d",a+i);aver=fun(a,n);printf("aver=%f\n",aver);四川省计算机等级考试二级C语言机试题(第二十七次)答案2009-11-0616:48四川省计算机等级考试二级C语言机试题(第二十七次)答案

2009-03-2916:43:50

27-1套参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include"stdio.h"#defineN10voidfun(inta[],intm)

/*改为:int*/{intlow=0,high=N-1,mid;while(low<=high){mid=(low+high)%2;

/*改为:/

*/

if(m<a[mid])

high=mid-1;

elseif(m>a[mid])

low=mid+1;

else

return;

/*改为:returnmid*/}return-1;}voidmain(){inti,a[]={-3,4,7,9,11,13,45,60,66,70},k,m;printf("\narraya:\n");for(i=0;i<N;i++)

printf("%d,",a[i]);printf("\n\nEnterm:\n");scanf("%d",m);

/*改为:&m*/k=fun(a[N],m);

/*改为:a

*/if(k>=0)

printf("m=%d,index=%d\n",m,k);else

printf("Notbefound!\n");}评分标准:每改对一处得8分二、编程题(程序文件取名为test1-2.c)(60分)评分标准:1、while循环编写正确,数字提取正确

30分

2、文件打开、关闭、数据写入正确15分3、指针定义和使用正确

5分

4、屏幕输出正确

5分

5、程序结构合理

5分参考程序:#include<stdio.h>

#defineLEN256

voidmain()

{charline[LEN],b[20],*ptr1,*ptrb;

intn=0,j,a[50];

FILE*fp;

printf("Pleaseenterthestrings:\n");

gets(line);

ptr1=line;

while(*ptr1!='\0')

{ptrb=b;

for(j=0;*ptr1>='0'&&*ptr1<='9';ptr1++,ptrb++,j++)

*ptrb=*ptr1;

if(j)

{*ptrb='\0';

*(a+n)=atoi(b);

n++;

}

if(*ptr1!='\0')ptr1++;

}

fp=fopen("test1-2.dat","w");

if(fp==NULL)

{printf("Cannotopenfile!\n");

exit(0);

}

printf("Result:\n");

for(j=0;j<n;j++)

{printf("%10d\n",*(a+j));

fprintf(fp,"%10d\n",*(a+j));

}

fclose(fp);

}27-2套参考答案:一、程序调试题(文件名为test2-1.c)(40分)#include"stdio.h"

#include"ctype.h"

intUpperNum(charstr[])

{

intn,i=0;

/*改为:n=0*/

while((str+i))

/*改为:*(str+i)*/

{

if(isupper(str[i]))

n++;

i++;

}

returni;

/*改为:n*/

}

voidmain()

{

charstr[];

/*改为:str[80]*/

printf("\nInputastring:\n");

gets(str);

printf("\nTheNumberofUpperLetteris:%d\n",UpperNum(str[]));/*改为:str*/

}评分标准:每改对一处得8分二、编程题(程序文件取名为test2-2.c)(60分)评分标准:1、被调函数编写正确(具体参照程序注释)(30分)2、文件打开、关闭、数据读入正确(15分)3、函数调用正确(5分)

4、屏幕输出正确(5分)

5、程序结构合理(5分)参考程序:#include<stdio.h>#include<string.h>intmystrcmp(char*q1,char*q2){intk=0,t;while(*(q1+k)!='\0'||*(q2+k)!='\0')

/*5分*/{if(*(q1+k)!=*(q2+k))

/*10分*/

{t=*(q1+k)-*(q2+k);

break;

}

else

t=0;

/*5分*/

k++;

/*5分*/}returnt;

/*5分*/}voidmain(){FILE*fp;intt;chars1[20],s2[20];fp=fopen("test2-2.dat","r");if(fp==NULL){printf("oepn\n");

exit(0);}fgets(s1,80,fp);fgets(s2,80,fp);puts(s1);puts(s2);t=mystrcmp(s1,s2);printf("\nThecomparingresultofstringsis:%d\n",t);fclose(fp);}27-3套参考答案:一、程序调试题(文件名为test3-1.c)(40分)#include"stdio.h"#defineN100intfun(ints,intn)

/*改为:*s*/{inti,j,k,a,b,c;j=0;for(i=100;i<=n;i++){

k=j;

/*改为:i*/

a=k%10;

k/=10;

b=k%10;

k/=10;

c=k;

if(a==b||a==c)

/*改为:&&*/

s[j++]=i;}returni;

/*改为:j*/}voidmain(){inta[N],n,num=0,i;do{printf("Entern(100~1000):\n\n");

scanf("%d",&n);}while(n>1000)

/*改为:while(n>1000);*/num=fun(a,n);printf("\n\nTheresult:\n");for(i=0;i<num;i++)

printf("%5d",a[i]);printf("\n");}评分标准:每改对一处得8分二、编程题(程序文件取名为test3-2.c)(60分)评分标准:1、被调函数编写正确(具体参照程序注释)(30分)2、文件打开、关闭、数据读入正确(15分)3、函数调用正确(5分)

4、屏幕输出正确(5分)

5、程序结构合理(5分)参考程序:#include<stdio.h>voidfun(char*s,int*t)/*函数定义、形参书写正确10分*/{inti;*t=0;

/*5分*/for(i=0;*(s+i)!='\0';i++)

/*算法正确,指针使用正确15分*/

if(*(s+i)>='0'&&*(s+i)<='9')(*t)++;}voidmain(){charstr[80];FILE*fp;inti=0,count;if((fp=fopen("test3-2.in","r"))==NULL){printf("Cannotopenfile!\n");

exit(0);}while(!feof(fp)){str[i]=fgetc(fp);

i++;}str[i]='\0';fclose(fp);fun(str,&count);printf("Count=%d\n",count);}第27-4套参考答案一、程序调试题(文件名为test4-1.c)(40分)#include"stdio.h"intfun1(int*n)

/*改为:n*/{inti;for(i=2;i<=n;i++)

/*改为:<*/

if!(n%i)

/*改为:(!(n%i))*/

return0;return;

/*改为:return1*/}voidmain(){intj,k;printf("\nPleaseenteraintegernumber2~10000:");scanf("%d",k);

/*改为:&k*/printf("\nTheprimefactor(s)of%dis(are):",k);for(j=2;j<=k;j++)

if(!(k%j)&&fun1(j))

printf("\n%4d",j);printf("\n");}评分标准:每改对一处得8分二、编程题(程序文件取名为test4-2.c)(60分)评分标准:1、被调函数编写正确(具体参照程序注释)(30分)2、文件打开、关闭、数据读入正确(15分)3、函数调用正确(5分)

4、屏幕输出正确(5分)

5、程序结构合理(5分)参考程序:#include<stdio.h>voidconvert(charstr[])/*函数定义、形参书写正确10分*/{inti=0;while(str[i]!='\0')

/*5分*/{if(str[i]>='a'&&str[i]<='z')/*5分*/

str[i]-=32;

/*5分*/

i++;

/*5分*/}}voidmain(){FILE*fp;charstr[100];if((fp=fopen("test4-2.dat","r"))==NULL){printf("Cannotopenfile!\n");

exit(0);}while(!feof(fp)){fgets(str,81,fp);

convert(str);

puts(str);}fclose(fp);}第27-5套参考答案一、程序调试题(文件名为test5-1.c)(40分)#include"stdio.h"#defineN80voidfun(int*s,int*t,intk)

/*改为:*k*/{inti,m;*k=0;m=*s;for(i=1;i<(*t-1);i++)

if(m<s+i)

/*改为:*(s+i)*/

{

m=*(s+i);

*k=i;

}s[i+1]=m;*t++;

/*改为:(*t)*/}voidmain(){inta[N]={876,675,896,101,301,401,980,431,451,777};inti,n=10,mi;fun(a[N],&n,&mi);

/*改为:a*/printf("Theindexofmaxis:%d\n",mi);printf("Theresult:\n");for(i=0;i<n;i++)printf("%4d",a);

/*改为:a[i]*/}评分标准:每改对一处得8分二、编程题(程序文件取名为test4-2.c)(60分)评分标准:1、被调函数编写正确(具体参照程序注释)(30分)2、文件打开、关闭、数据读入正确(15分)3、函数调用正确(5分)

4、屏幕输出正确(5分)

5、程序结构合理(5分)参考程序:#include<stdio.h>#defineN80char*fun(char*s,char*t)

/*函数定义、形参书写正确10分*/{char*p,*ss,*tt;ss=s;tt=t;while(*ss){n++;ss++;}

/*5分*/while(*tt){m++;tt++;}

/*5分*/if(n>=m)

/*5分*/

p=s;else

p=t;returnp;

/*5分*/}voidmain(){chara[N],b[N];FILE*fp;printf("Input1thstring:\n");gets(a);printf("Input2thstring:\n");gets(b);fp=fopen("test5-2.dat","w");if(fp==NULL){printf("Cannotopenfile!\n");

exit(0);}printf("Theresultis:%s\n",fun(a,b));printf("Thelengthoftwostringsis:%d,%d\n",n,m);fprintf(fp,"Theresultis:%s\n",fun(a,b));fprintf(fp,"Thelengthoftwostringsis:%d,%d\n",n,m);fclose(fp);}四川省计算机等级考试二级C语言机试题(第二十六次)答案2009-11-0616:49四川省计算机等级考试二级C语言机试题(第二十六次)答案

2009-03-2916:42:42

26-1套参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include<stdio.h>voidselectsort(int*a,intn){inti,j,p,temp;for(i=0;i<n-1;i++){

p=i;

for(j=1;j<n;j++)

/*改为:j=i+1*/

if(a[p]>a[j])

/*改为:<

*/

p=j;

temp=a[p];

a[p]=a[j];

/*改为:a[i]*/

a[j]=temp;

/*改为:a[i]*/}}voidmain(){intx[8],i;for(i=0;i<8;i++)x[i]=rand()%30;selectsort(x[],8);

/*改为:x

*/for(i=0;i<8;i++)

printf("%5d",x[i]);printf("\n");}评分标准:每改对一处得8分二、编程题(程序文件取名为test1-2.c)(60分)参考程序:#include<stdio.h>#defineMAX10structaa{charname[20];charnumber[20];}s[MAX];intsearch(structaat[],char*st,int*p){intj,flag=0;for*j=0;j<MAX;j++)

if(strcmp(t[j].name,st)==0)

{flag=1;

*n=j;

}returnflag;}voidmain(){charch[20];intI,k=0;FILE*fp;if((fp=fopen("test1-2.txt","r"))==NULL){

printf("cannotopenthefile!\n");

exit(0);}for(i=0;i<MAX;i++)

fscanf(fp,"%s%s",s[i].name,s[i].number);fclose(fp);printf("enteraname\n");gets(ch);if(search(s,ch,&k))

printf("\nthetelnumberis%s\n",s[k].number);else

printf("notfound!\n");}26-2套参考答案:一、程序调试题(文件名为test2-1.c)(40分)#include<stdio.h>voidmain(){intb[16],x,k,r,i;printf("enterainteger:");scanf("%d",x);

/*改为:&x*/printf("\n%6d'soctavonumberis:",x);k=-1;do{r=x/8;

/*改为:%8*/

k++;

*(b+k)=r;

x%=8;

/*改为:/=8*/}while(x=0);

/*改为:x!=0*/for(i=k;i>=0;i--)

printf("%1d",b+i);

/*改为:*(b+i)或b[i]*/printf("\n");}评分标准:每改对一处得8分二、编程题(程序文件取名为test2-2.c)(60分)参考程序:#include<stdio.h>#defineN1000voidfun(char*t,inta[]){intI;for(i=0;i<=25;i++)a[i]=0;for(i=0;t[i]!='\0';i++)

if('a'<=t[i]&&t[i]<'z')

a[t[i]-'a']++;}voidmain(){chars[N],ch;intc[26],i=0;FILE*fp;if((fp=fopen("test2-2.txt","r"))==NULL){

printf("cannotopenthefile!\n");

exit(0);}while(!feof(fp)){

s[i]=fgetc(fp);

i++;}fclose(fp);s[i]='\0';fun(s,c);for(i=0;i<=25;i++){printf("%3d",c[i]);

if((i+1)%10==0)

printf("\n\n");}printf("\n");}26-3套参考答案:一、程序调试题(文件名为test3-1.c)(40分)#include<stdio.h>#include<math.h>voidfun(intm)

/*改为:int*/{inti,j,k;for(i=m;;i++)

/*改为:m+1*/{

j=sqrt(i);

for(k=2;k<=j;k++)

if(i%k!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论