计算机上机考试的一些大题.docx
《计算机上机考试的一些大题.docx》由会员分享,可在线阅读,更多相关《计算机上机考试的一些大题.docx(22页珍藏版)》请在冰豆网上搜索。
![计算机上机考试的一些大题.docx](https://file1.bdocx.com/fileroot1/2022-11/23/5ddf1584-87f8-4b73-b9dc-f8218b8a30bf/5ddf1584-87f8-4b73-b9dc-f8218b8a30bf1.gif)
计算机上机考试的一些大题
请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。
例如:
原来的字符串为BdsihAd,则排序后输出为BAdhisd。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
此题的源文件在考生目录下,文件名为:
prog1.c
#include
#include
#include
intfun(char*s,intnum)
{
}
main()
{
FILE*fp;
chars[10];
charb[10]="BdsihAd",c[10]="*a)0!
";
printf("PleaseInputastringincluding7Character:
");
gets(s);
fun(s,7);
printf("\n%s",s);
fp=fopen("out.dat","w");
fun(b,7);
fprintf(fp,"%s",b);
fun(c,7);
fprintf(fp,"%s",c);
fclose(fp);
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
下列给定程序中函数fun()的功能是计算1/n!
的值。
例如:
给n输入5,则输出0.008333。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/**********************found***********************/
intfun(intn)
{doubleresult=1.0;
if(n==0)
return1.0;
while(n>1&&n<170)
/**********************found***********************/
result*=n++;
result=1/result;
returnresult;
}
main()
{
intn;
printf("InputN:
");
scanf("%d",&n);
printf("\n1/%d!
=%lf\n",n,fun(n));
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
给定程序的功能是:
计算s=1+(1+2)+(1+2+3)+...+(1+2+...+n),期中n通过键盘输入
请改正程序中的错误,使它能计算出正确的结果。
注意不得增行或删行,也不得更改程序的结构!
注意不得增行或删行,也不得更改程序的结构!
程序中有两处错误。
#include"stdio.h"
main()
{
intn,i,j,f,s=0;
printf("请输入n:
\n");
scanf("%d",n);
for(i=1;i<=n;i++)
{
f=0
for(j=1;j<=i;j++)
f=f+j;
s=s+f;
}
printf("s=%d\n",s);
}
请编写一个函数doublefun(intn),求s=1!
+2!
+...+n!
n通过键盘输入,大小n不超过20,如输入3,输出结果应为9,函数的返回值为所求和。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include
#include
doublefun(intn)
{
}
main()
{
FILE*wf;
intn,i,k=0;
doubles,bb[10];
printf("请输入n:
\n");
scanf("%d",&n);
s=fun(n);
printf("和为:
%f",s);
printf("\n");
/******************************/
wf=fopen("out.dat","w");
for(i=1;i<=10;i++)
bb[k++]=fun(i);
for(k=0;k<10;k++)
fprintf(wf,"%f",bb[k]);
fclose(wf);
/*****************************/
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。
例如:
a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
voidfun(char*p,char*q,char*c)
{intk=0;
while(*p||*q)
/**********************found***********************/
{if(*p<=*q)
c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
/**********************found***********************/
k++
}
}
main()
{chara[10]="fshADfg",b[10]="sdAEdi",c[80]={'\0'};
fun(a,b,c);
printf("Thestringa:
");puts(a);
printf("Thestringb:
");puts(b);
printf("Theresult:
");puts(c);
}
请编写一个函数fun(),它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。
若两个字符串长度相等,则返回第1个字符串。
例如,输入abcdexyz(为回车键),函数将返回xyz;或输入ababcd(为回车键),函数将返回ab;
注意:
部分源程序已给出
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include
char*fun(char*s,char*t)
{
}
main()
{
FILE*wf;
chara[20],b[10],*p="nanjing123",*q="nanchang";
inti;
printf("Input1thstring:
");
gets(a);
printf("Input2thstring:
");
gets(b);
printf("%s",fun(a,b));
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%s",fun(p,q));
fprintf(wf,"%c",'\n');
fclose(wf);
/*****************************/
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
给定程序的功能是:
计算某足球队在联赛中的积分等决定名次的参数。
设已知某队在m场比赛(2≤m≤50)中各场的进球数和失球数(存入组长组xx),则可算出它的积分(胜一场得3分,平一场得1分,负一场得0分)、净胜球数n和总进球数与总失球数之比r。
例如:
若输入“4”和31、11、20、12、12、12、12、12,则应输出
...
Thetotalmark:
8
Thenetscore:
28
Therationofwinvslost:
1.60
请改正程序中的错误,使它能计算出正确的结果。
注意不得增行或删行,也不得更改程序的结构!
#include"conio.h"
#include"stdio.h"
structwinlost
{intwin;intlost;};
structresult
{intt;intn;floatr;};
voidtotal(intm,structwinlostxx[],structresult*final)
{
inti;
final->t=0;
final->n=0;
final->r=0.0;
for(i=0;i{if(xx[i].win>xx[i].lost)
/********found**********/
final->t+=2;
else
/********found**********/
if(xx[i].win=xx[i].lost)
final->t+=1;
final->n+=xx[i].win;
final->r+=xx[i].lost;
}
i=final->n;
final->n=i-final->r;
final->r=i/final->r;
}
voidmain(void)
{
inti,m;
structwinlostaa[50];
structresultlast;
printf("\nHowmanysimesofcompetetionclosetheteamtale:
");
scanf("%d",&m);
printf("\cPleaseenter%dresultsofeachcompetition",m);
printf("(winlost):
\n");
for(i=0;iscanf("%d%d",&(aa[i].win),&(aa[i].lost));
total(m,aa,&last);
printf("\nTheresultofeachcompetition:
");
for(i=0;iprintf("\nNo.%2d:
%2d(win:
lost)",i+1,aa[i].win,aa[i].lost);
printf("\n\nThetotalmark:
%2d",last.t);
printf("\nThenetscore:
%2d",last.n);
printf("\nTherationofwinvslost:
%5.2f",last.r);
}
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include"stdio.h"
voidfun(inta,intb,long*c)
{
}
main()
{
FILE*wf;
inta,b,i;
longc;
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
wf=fopen("out.dat","w");
for(i=10;i<=90;i++)
{fun(i,100-i,&c);
fprintf(wf,"%ld",c);
}
fclose(wf);
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0位中)。
例如:
字符串中的数据为ADFESHDI,则输出应当是AFESDI。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
#include
#defineN80
/**********************found***********************/
voidfun(chars,chart[])
{
inti,j=0;
for(i=0;i/**********************found***********************/
if(i%2=0||s[i]%2!
=0)
t[j++]=s[i];
t[j]='\0';
}
main()
{
chars[N],t[N];
printf("\nPleaseenterstrings:
");
gets(s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);
}
请编写函数voidfun(intx,intpp[],int*n),它的功能是:
求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15,它们都能被30整除且不是偶数。
注意:
部分源程序已给出
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include
#include
voidfun(intx,intpp[],int*n)
{
}
main()
{
FILE*wf;
intx,aa[1000],n,i;
printf("\nPleaseenteranintegernumber:
\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;iprintf("%d",aa[i]);
printf("\n");
/******************************/
wf=fopen("out.dat","w");
fun(100,aa,&n);
for(i=0;ifprintf(wf,"%d",aa[i]);
fclose(wf);
/*****************************/
}
本改错题共有1道,改错题源文件在考生目录中,请在******下一行将错误改正。
不得增行与减行,改正后使程序运行正确存盘即可。
改错题的源文件分为:
modi1.c,
第1题分值为:
10分,
给定程序的功能是:
计算某足球队在联赛中的积分等决定名次的参数。
设已知某队在m场比赛(2≤m≤50)中各场的进球数和失球数(存入组长组xx),则可算出它的积分(胜一场得3分,平一场得1分,负一场得0分)、净胜球数n和总进球数与总失球数之比r。
例如:
若输入“4”和31、11、20、12、12、12、12、12,则应输出
...
Thetotalmark:
8
Thenetscore:
28
Therationofwinvslost:
1.60
请改正程序中的错误,使它能计算出正确的结果。
注意不得增行或删行,也不得更改程序的结构!
#include"conio.h"
#include"stdio.h"
structwinlost
{intwin;intlost;};
structresult
{intt;intn;floatr;};
voidtotal(intm,structwinlostxx[],structresult*final)
{
inti;
final->t=0;
final->n=0;
final->r=0.0;
for(i=0;i{if(xx[i].win>xx[i].lost)
/********found**********/
final->t+=2;
else
/********found**********/
if(xx[i].win=xx[i].lost)
final->t+=1;
final->n+=xx[i].win;
final->r+=xx[i].lost;
}
i=final->n;
final->n=i-final->r;
final->r=i/final->r;
}
voidmain(void)
{
inti,m;
structwinlostaa[50];
structresultlast;
printf("\nHowmanysimesofcompetetionclosetheteamtale:
");
scanf("%d",&m);
printf("\cPleaseenter%dresultsofeachcompetition",m);
printf("(winlost):
\n");
for(i=0;iscanf("%d%d",&(aa[i].win),&(aa[i].lost));
total(m,aa,&last);
printf("\nTheresultofeachcompetition:
");
for(i=0;iprintf("\nNo.%2d:
%2d(win:
lost)",i+1,aa[i].win,aa[i].lost);
printf("\n\nThetotalmark:
%2d",last.t);
printf("\nThenetscore:
%2d",last.n);
printf("\nTherationofwinvslost:
%5.2f",last.r);
}
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include"stdio.h"
voidfun(inta,intb,long*c)
{
}
main()
{
FILE*wf;
inta,b,i;
longc;
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
wf=fopen("out.dat","w");
for(i=10;i<=90;i++)
{fun(i,100-i,&c);
fprintf(wf,"%ld",c);
}
fclose(wf);
}
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include"stdio.h"
voidfun(inta,intb,long*c)
{
}
main()
{
FILE*wf;
inta,b,i;
longc;
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
wf=fopen("out.dat","w");
for(i=10;i<=90;i++)
{fun(i,100-i,&c);
fprintf(wf,"%ld",c);
}
fclose(wf);
}
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
注意:
部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,否则得不到成绩后果自负,仅在函数fun的花括号中填入所编写的若干语句。
此题的源文件在考生目录下,文件名为:
prog1.c
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
}
main()
{
FILE*wf