3二级编程题题目.docx
《3二级编程题题目.docx》由会员分享,可在线阅读,更多相关《3二级编程题题目.docx(79页珍藏版)》请在冰点文库上搜索。
3二级编程题题目
编程题
考试做题要求:
1、按题目要求编写部分代码,不要改动已经有的代码。
2、在运行时如果遇到死循环,按Ctrl+Break键结束运行。
3、题目做完后必须要有运行结果,没有运行结果没有分。
1、请编写函数fun,函数的功能是:
移动字符串中的内容,移动的规则如下:
把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为:
ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:
DEFGHIJKABC。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineN80
voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/
{
inti;chart;
t=w[0];
for(i=0;iw[i]=w[i+1];
w[strlen(w)-1]=t;
}
voidfun(char*w,intm)/*可调用fun1函数左移字符*/
{
}
main()
{chara[N]="ABCDEFGHIJK";
intm;
printf("Theoriginalstring:
\n");puts(a);
printf("\n\nEnterm:
");scanf("%d",&m);
fun(a,m);
printf("\nThestringaftermoving:
\n");puts(a);
printf("\n\n");
NONO();
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
FILE*rf,*wf;chara[N];intm,i;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d%s",&m,a);
fun(a,m);
fprintf(wf,"%s\n",a);
}
fclose(rf);fclose(wf);
}
2、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。
主函数中将把60放在low中,把69放在heigh中。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,intl,inth)
{
}
main()
{STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&heigh:
");
scanf("%d%d",&low,&heigh);
if(heighn=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween%d--%d:
\n",low,heigh);
for(i=0;iprintf("%s%4d\n",h[i].num,h[i].s);
printf("\n");
out=fopen("c:
\\test\\out.dat","w");
n=fun(s,h,80,98);
fprintf(out,"%d\n",n);
for(i=0;ifor(j=i+1;jif(h[i].s>h[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}
for(i=0;ifprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
3、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。
请编写函数fun,函数的功能是:
找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineN10
typedefstructss
{charnum[10];ints;}STU;
fun(STUa[],STU*s)
{
}
main()
{STUa[N]={{"A01",81},{"A02",89},{"A03",66},
{"A04",87},{"A05",77},{"A06",90},
{"A07",79},{"A08",61},{"A09",80},
{"A10",71}},m;
inti;
printf("*****Theoriginaldata*****\n");
for(i=0;ifun(a,&m);
printf("*****THERESULT*****\n");
printf("Thelowest:
%s,%d\n",m.num,m.s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*rf,*wf;
STUa[N],m;
inti;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s);
fun(a,&m);
fprintf(wf,"Thelowest:
%s,%d\n",m.num,m.s);
fclose(rf);
fclose(wf);
}
4、请编写一个函数fun,其功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
voidfun(char*ss)
{
}
voidmain(void)
{
chartt[51];
printf("\nPleaseenterancharacterstringwithin50characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n\"%s\"",tt);
fun(tt);
printf("\nbecomes\n\"%s\"",tt);
NONO();
}
NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
chartt[51],ch;
FILE*rf,*wf;
intlen,i=0;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
while(i<10){
fgets(tt,50,rf);
len=strlen(tt)-1;
ch=tt[len];
if(ch=='\n'||ch==0x1a)tt[len]=0;
fun(tt);
fprintf(wf,"%s\n",tt);
i++;
}
fclose(rf);
fclose(wf);
}
5、请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。
例如:
实型数为1234.567,则函数返回1234.57;
实型数为1234.564,则函数返回1234.56。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
floatfun(floath)
{
}
main()
{floata;
printf("Entera:
");scanf("%f",&a);
printf("Theoriginaldatais:
");
printf("%f\n\n",a);
printf("Theresult:
%f\n",fun(a));
NONO();
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
inti;
floata;
FILE*rf,*wf;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<20;i++){
fscanf(rf,"%f",&a);
fprintf(wf,"%f\n",fun(a));
}
fclose(rf);
fclose(wf);
}
6、请编写一个函数fun,它的功能是:
根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
π11×21×2×31×2×3×41×2×…×n
─=1+─+─—+────+──────+……+────────
233×53×5×73×5×7×93×5×…×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14…。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
doublefun(doubleeps)
{
}
main()
{doublex;
printf("Inputeps:
");
scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x));
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti;
doublex;
fp=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%lf",&x);
fprintf(wf,"%lf\n",fun(x));
}
fclose(fp);
fclose(wf);
}
7、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:
将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:
10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:
10、20、30、40。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
intfun(intscore[],intm,intbelow[])
{
}
main()
{inti,n,below[9];
intscore[9]={10,20,30,40,50,60,70,80,90};
n=fun(score,9,below);
printf("\nBelowtheaveragescoreare:
");
for(i=0;iNONO();
}
NONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti,j,n,below[10],score[10];
FILE*rf,*wf;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
for(j=0;j<10;j++)fscanf(rf,"%d",&score[j]);
n=fun(score,10,below);
for(j=0;jfprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
8、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a)
{
/*以下代码仅供参考*/
inti=0,k;
while(a[i]=='*')i++;
k=i+1;
while(a[i]!
='\0')/*以下程序段实现非*字符前移*/
{
}
a[i+1]='\0';
}
main()
{chars[81];
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81];
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
9、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
将字符串中的前导*号全部移到字符串的尾部。
例如,字符串中的内容为:
*******A*BC*DEF*G****,移动后,字符串中的内容应当是:
A*BC*DEF*G***********。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a)
{
/*以下代码仅供参考*/
char*p,*q;
intn=0;
p=a;
while(*p=='*')/*统计串头'*'个数n*/
{n++;p++;}
q=a;
/*向前复制字符串,请填写相应的语句完成其功能*/
for(;n>0;n--)/*在串尾补n个'*'*/
*q++='*';
*q='\0';
}
main()
{chars[81],*p;intn=0;
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringaftermoveing:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81];
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
10、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:
*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:
*******A*BC*DEF*G****。
n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a,intn)
{
/*以下代码仅供参考*/
inti=0,j,k=0;
while(a[k]=='*')k++;/*k为统计*字符个数*/
if(k>n)
{
i=n;j=k;
/*以下完成将下标为k至串尾的字符前移k-n个位置*/
}
}
main()
{chars[81];intn;
printf("Enterastring:
\n");gets(s);
printf("Entern:
");scanf("%d",&n);
fun(s,n);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti,n;chars[81];
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fscanf(in,"%d",&n);
fun(s,n);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
11、请编写函数fun,它的功能是:
求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为:
35,则有4个数符合要求,它们是:
1,5,7,35。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(intx,intpp[],int*n)
{
}
main()
{intx,aa[1000],n,i;
printf("\nPleaseenteranintegernumber:
\n");scanf("%d",&x);