小学教育四川省计算机等级考试二级C语言机试题第二十八次文档.docx
《小学教育四川省计算机等级考试二级C语言机试题第二十八次文档.docx》由会员分享,可在线阅读,更多相关《小学教育四川省计算机等级考试二级C语言机试题第二十八次文档.docx(39页珍藏版)》请在冰豆网上搜索。
![小学教育四川省计算机等级考试二级C语言机试题第二十八次文档.docx](https://file1.bdocx.com/fileroot1/2022-10/10/c7ce83fc-6ab5-4853-82a9-769cb77eae4f/c7ce83fc-6ab5-4853-82a9-769cb77eae4f1.gif)
小学教育四川省计算机等级考试二级C语言机试题第二十八次文档
四川省计算机等级考试二级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 scanf("%d",a);
for(r=0;r{t=a[N-1];
for(k=N-1;k>0;k--)
a[k]=a[k-1];
a[k]=t;
}
for(k=0;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
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 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 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 printf("%5d",a[i]);
printf("\n");
}
二、编写程序test3-2.c(60分)
按要求编写程序:
(1)编写函数fun,其功能是:
统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。
例如:
形参s所指字符串为:
abcdef35agd3k