四川省计算机等级考试二级C语言机试题22.docx

上传人:b****0 文档编号:18236039 上传时间:2023-08-14 格式:DOCX 页数:14 大小:17.50KB
下载 相关 举报
四川省计算机等级考试二级C语言机试题22.docx_第1页
第1页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第2页
第2页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第3页
第3页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第4页
第4页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第5页
第5页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第6页
第6页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第7页
第7页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第8页
第8页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第9页
第9页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第10页
第10页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第11页
第11页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第12页
第12页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第13页
第13页 / 共14页
四川省计算机等级考试二级C语言机试题22.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

四川省计算机等级考试二级C语言机试题22.docx

《四川省计算机等级考试二级C语言机试题22.docx》由会员分享,可在线阅读,更多相关《四川省计算机等级考试二级C语言机试题22.docx(14页珍藏版)》请在冰点文库上搜索。

四川省计算机等级考试二级C语言机试题22.docx

四川省计算机等级考试二级C语言机试题22

四川省计算机等级考试二级C语言机试题(第二十二次)

2009-03-2916:

37:

54

(第一套)

(60分钟)

 

一、程序调试题(文件名testl-l.c)(40分)

   软盘上有一个名为testl-l.c的C程序文件,其中函数move的功能是将字符串str中的字符"循环左移"r位。

例如,输入"HELLO",r=2,则应该输出"LLOHE"。

注意:

不得增行或删行,也不得更改程序的结构。

源程序如下:

#include

#include

charmove(char*str,intr)   

{chart;

 inti,len;                                             

 len=strlen(str);

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

 {t=*str;

   strcpy(str+1,str);           

   str[len-1]=t;

 }

 return*str;                      

}

voidmain()

{chars[81];

 intm;

 printf("\nPleaseenterastring:

\n");

 gets(s);

 do

 {printf("\nPleaseenterm:

");

   scanf("%d",m);               

   if(m>strlen(s))

     printf("\nDataerror!

!

\n");

 }while(m>strlen(s));

 printf("\nResult:

%s\n",move(s,m));

}

二、编写程序(程序文件名取为testl-2.c)(60分)

   编写一个程序,从文件testl-2.in中读出一行字符(即一个字符串,长度在128个字符

内),将排列在奇数位上的字符取出,按从小到大的顺序排列并输出到屏幕上。

   要求:

   

(1)在main函数中实现从文件testl-2.in中读出一行字符,调用sort函数排序,然后将结果输出到屏幕上。

(2)编写sort函数,实现将排列在奇数位上的字符取出,然后按从小到大的顺序排列。

例如,hqwbodze奇数位为q、b、d、e,排序后为bdeq。

 

(第二套)

(60分钟)

 

一、程序调试题(文件名为test2-l.c)(40分)

程序的功能是找出数组a中每行的最小值并输出。

请改正程序申的错误,使程序能得出正确的结果。

注意:

不得增行或删行,也不得更改程序的结构。

源程序如下:

#include

main()

{

 floata[][10],min;

 inti,j;

 intinvert();

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

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

       a[i][j]=i+j;

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

 {

   min=invert(a,10);

   printf("a[%d]min=%f\n",i,min);

 }

}

floatinvert(float*a,n)

{

 inti;

 floatmin;

 min=*(a+0);

 for(i=1;i

 {

   if(min<*(a+i))

       min=(a+i);

 }

 returnmin;

}

二、编写程序(程序文件名取为test2-2.c)(60分)

请编写函数select判断一个数能否被3和5整除,main函数中调用select函数,求出所有小于400、能被3和5整除的数(例如15,30等),然后将求得的数以每行5个数,每个数占10列方式输出到屏幕上和存放到文件test2-2.dat中。

(第三套)

(60分钟)

 

一、程序调试题(文件名为test3-1.c)(40分)

函数fun的功能是:

从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数返回,平均分存放在形参aver所指的存储单元中。

例如,若8名学生的成绩为:

80.5 60 72 90.5 98 51.5 88 64,则低于平均分的学生人数为4(平均分为75.5625)。

请改正程序中的错误,便它能计算出正确的结果。

洼意:

不得增行或删行,也不得更改程序的结构。

源程序如下:

#include

intfun(floats,intn,float*aver)   

{floatave,t=0.0;

 intcount,k,i;     

 for(k=0;k

   t=s[k];          

 ave=t/n;

 for(i=0;i

   if(s[i]>ave)count++;  

   *aver=&ave;          

   returncount;

}

 

main()

{floats[30],aver;

 intm,i;

 printf("\nPleaseentern(<30):

");

 scanf("%d",&m);

 printf("\nPleaseenter%dmark:

\n",m);

 for(i=0;i

     scanf("%f",s+i);

 printf("\nThenumberofstudents:

%d\n",fun(s,m,aver));

 printf("Ave=%f\n",aver);

}

二、编写程序(程序文件名取为test3-2.c)(60分)

编写函数fun和input:

 

(1)函数fun对整数数组s中除首、尾数据外的其余M-2个数据按升序排列。

   例如,若原来的数据为9876543,则排序后输出为9456783。

 

(2)函数input从文件test3-2.in中读出待排序的数据。

编写main函数,调用input函数和fun函数,将排序的结果输出到屏幕上

四川省计算机等级考试二级C语言机试题(第二十二次)答案

2009-03-2916:

38:

21

22-1套参考答案:

一、程序调试题(文件名为test1-1.c)(40分)

#include

#include

charmove(char*str,intr)        /*改为*move */

{chart;

 inti,len;                                     /*改为k     */

 len=strlen(str);

 for(k=0;k<=r;k++)             /*改为k

 {t=*str;

   strcpy(str+1,str);                 /*改为strcpy(str+1,str)*/

   str[len-1]=t;

 }

 return*str;                  /*改为str   */

}

voidmain()

{chars[81];

 intm;

 printf("\nPleaseenterastring:

\n");

 gets(s);

 do

 {printf("\nPleaseenterm:

");

   scanf("%d",m);                      /*改为&m  */

   if(m>strlen(s))

     printf("\nDataerror!

!

\n");

 }while(m>strlen(s));

 printf("\nResult:

%s\n",move(s,m));

}

评分标准:

每改对1处得5分,结果正确得10分。

二、编写程序(程序文件取名为test1-2.c)(60分)

评分标准:

1.被调函数编写正确                    25分

2.文件打开、数据读出正确         10分

3.函数调用正确                                  10分

4.屏幕输出正确                                  10分

5.程序结构合理                                  5分

参考程序:

#include

sort(chara[],charb[])

{

 charc;

 inti,j=0;

 for(i=1;i

   b[j++]=a[i];

 b[j]='\0';

 for(i=1;i

   for(j=0;j

     if(b[j]>b[j+1])

     {c=b[j];b[j]=b[j+1];b[j+1]=c;}

}

main()

{

 FILE*in;

 chara[128],b[65];

 in=fopen("test1-2.in","r");

 fgets(a,128,in);

 fclose(in);

 sort(a,b);

 puts(b);

}

 

22-2套参考答案:

一、程序调试题(文件名为test2-1.c)(40分)

#include

main()

{

 floata[][10],min;                                    /*改为a[10][10] */

 inti,j;

 intinvert();                                    /*改为float     */

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

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

       a[i][j]=i+j;

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

 {

   min=invert(a,10);                                   /*改为a[i]     */

   printf("a[%d]min=%f\n",i,min);

 }

}

floatinvert(float*a,n)                                /*改为intn    */

{

 inti;

 floatmin;

 min=*(a+0);

 for(i=1;i

 {

   if(min<*(a+i))                                       /*改为>      */

       min=(a+i);                                     /*改为*(a+i)  */

 }

 returnmin;

}

评分标准:

每改对1处得5分,结果正确得10分。

二、编写程序(程序文件取名为test2-2.c)(60分)

评分标准:

1.被调函数编写正确                    15分

2.文件打开、数据写入正确         15分

3.函数调用正确                                  10分

4.屏幕输出正确                                  10分

5.程序结构合理                                  10分

参考程序:

#include

intselect(inta)

{

 if(!

(a%3)&&!

(a%5)) return1;

 else return0;

}

main()

{

 inti,k=0;

 FILE*fp;

 if((fp=fopen("test2-2.dat","wb"))==NULL)

 {

   printf("cannotopenthefile\n");

   exit(0);

 }

 for(i=3;i<400;i++)

   if(select(i))

   {

     k=k+1;

     printf("%10d",i);

     fprintf(fp,"%10d",i);

     if(k%5==0)

     { printf("\n");

        fprintf(fp,"\n");

     }

    }

 fclose(fp);

}

 

22-3套参考答案:

一、程序调试题(文件名为test3-1.c)(40分)

#include

intfun(floats,intn,float*aver)          /*改为*s               */

{floatave,t=0.0;

 intcount,k,i;                              /*改为count=0      */

 for(k=0;k

   t=s[k];                           /*改为+=              */

 ave=t/n;

 for(i=0;i

   if(s[i]>ave)count++;               /*改为<                */

   *aver=&ave;                      /*改为ave              */

   returncount;

}

 

main()

{floats[30],aver;

 intm,i;

 printf("\nPleaseentern(<30):

");

 scanf("%d",&m);

 printf("\nPleaseenter%dmark:

\n",m);

 for(i=0;i

     scanf("%f",s+i);

 printf("\nThenumberofstudents:

%d\n",fun(s,m,aver));  /*改为&aver*/

 printf("Ave=%f\n",aver);

}

评分标准:

每改对1处得5分,结果正确得10分。

二、编写程序(程序文件取名为test3-2.c)(60分)

评分标准:

1.被调函数编写正确                    20分

2.文件操作和读数据正确             15分

3.函数调用正确                                  10分

4.屏幕输出正确                                  10分

5.程序结构合理                                  5分

参考程序:

#include

#include

#defineM10

voidfun(int*s)

{

 inti,j,t;

 for(i=1;i

   for(j=i+1;j

     if(s[i]>s[j])

     { t=s[i];

        s[i]=s[j];

        s[j]=t;

     }

}

intinput(ints[])

 FILE*fp;

 inti;

 if((fp=fopen("test3-2.in","r"))==NULL)

 { printf("cannotopenfile\n");

    return(0);

 }

 for(i=0;i

   fscanf(fp,"%d",&s[i]);

 fclose(fp);

 return

(1);

}

main()

{

 ints[M];

 inti;

 if(input(s))

 {

   fun(s);

   printf("\n");

   for(i=0;i

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

 }

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2