23次机试试题文档格式.docx
《23次机试试题文档格式.docx》由会员分享,可在线阅读,更多相关《23次机试试题文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
}
elseif(sign=1)
{intn=0;
while(--k>
=0)
num[i]+=(help[k]-48)*((longint)pow(n++,10));
i++;
k=0;
sign=0;
else
p++;
}while(*(p-1)!
='
\0'
for(m=0;
m<
i;
m++)
%d,"
num[m]);
}
二、编写程序(程序文件名取为test1-2.c)(60分)
请用函数调用方式编写程序,要求能实现:
(1)在被调函数中求出1到1000之内能被7或11整除、但不能被7或11同时整除的所有整数,并把它们放到数组a中。
(2)在主函数中将符合上述条件的整数个数和所有整数输出到屏幕以及文件test1-2.dat中。
(要求每行输出10个数)
(第二套)
一、程序调试题(文件名test2-1.c)(40分)
磁盘上有一个名为test2-1.c的C程序文件,其功能是:
求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后。
如:
876675896101301401980431451777(原数组)
876675896101301401980431451777980(增添后的数组)
#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++;
inta[N]={876,675,896,101,301,401,980,431,451,777};
inti,n=10,mi;
fun(a[N],&
n,&
mi);
\nTheindexofmaxis:
%d\n"
mi);
Theresult:
\n"
for(i=0;
n;
i++)
%4d"
&
a[i]);
二、编写程序(程序文件名取为test2-2.c)(60分)
在三位整数(100至999)中寻找其中有两位数字相同的完全平方数,例如,144、676等,它们既是完全平方数,又有两位数字相同,将符合条件的整数依次从小到大存入数组aa中。
要求:
(1)编制函数fine()实现寻找满足条件的完全平方数,并将满足条件的完全平方数的个数通过函数fine()返回。
(2)在main()函数中把符合要求的完全平方数及个数输出到屏幕上和文件test2-2.dat中。
(第三套)
一、程序调试题(文件名test3-1.c)(40分)
磁盘上有一个名为test3-1.c的C程序文件,其功能是:
实现将字符串中字母以外的其他字符去掉组成新的字符串输出。
运行结果为:
abcdEEEa
voidfun(chars)
inti,j;
for(i=j=0;
s[i];
i++);
if(isalpha(s[i]))
s[j]=s[i];
s[i]='
;
voidmain()
charstr[80]="
a*b$c(d!
EEE!
!
a."
fun(str[80]);
puts(str);
二、编写程序(程序文件名取为test3-2.c)(60分)
编写main函数,从键盘输入任意5个4位正整数存入数组aa中,调用函数sort(),函数sort()的功能是:
按每个数后三位的大小进行升序排列,并将结果依次存入数组bb中,如果后三位的数组相等,则按4位正整数的大小进行降序排列。
例如:
输入:
6012,5099,9012,7025,8088,则输出结果为:
9012,6012,7025,8088,5099。
最后,在main()函数中把排序后的结果输出到文件test3-2.dat中。
程序中不得使用全局变量。
(第四套)
一、程序调试题(文件名test4-1.c)(40分)
磁盘上有一个名为test4-1.c的C程序文件,其功能是:
从s所指向的串中,找出包含有t所指字符串的个数。
s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。
请改正程序中的错误,使程序能输出正确的结果。
不得增行或删行,也不得更改程序的结构。
intfun(chars,chart)
intn=0;
char*p,*r;
while(*s)
p=s;
r=t;
while(*r)
if(*r=*p)
{
r++;
else
continue;
if(r=='
)
n++;
return*s;
{
intm;
chars[100],t[100];
\nPleaseenterstrings:
gets(s);
\nPleaseenterstringt:
);
gets(t);
m=fun(s,t);
\nTheresultis:
m=%d\n"
m);
二、编写程序(程序文件名取为test4-2.c)(60分)
在main函数中定义一个二维数组a,从已给文件test4-2.in中读入n×
n个整数到二维数组a中,其中n的大小由用户在运行程序过程中从键盘上输入(要求n<
=5),调用fun函数,fun函数实现:
(1)数组主对角线上各元素的值加1。
(2)其余元素以主对角线划分,右上角各元素的值乘以3,左下角各元素的值乘以2。
最后,在主函数中将修改后的数组按n行n列的格式输出到屏幕和磁盘文件test4-2.out中。
23-1套参考答案:
一、程序调试题(文件名为test1-1.c)(40分)
/*改为:
math.h*/
{charstr[100],*p=str,help[15];
=9)/*改为:
*p>
=’0’&
=’9’或*p>
=48&
=57*/
elseif(sign=1)/*改为:
==*/
/*改为:
pow(10,n++)*/
else/*改为:
else;
*/
/*改为:
%ld(即长整型格式输出)*/
评分标准:
每改对一处得6分,结果正确得4分
二、编程题(程序文件取名为test1-2.c)(60分)
1.被调函数fun编写正确20分2.文件打开和关闭正确10分
3.函数调用正确5分4.屏幕输出和文件输出正确15分
5.输出格式正确5分6.程序结构合理5分
参考程序:
#include<
#defineM1000
intfun(int*a)
{intm,k=0;
for(m=1;
m<
=M;
m++)
if((m%7==0&
m%11!
=0)||(m%7!
m%11==0))
a[k++]=m;
returnk;
{inta[M],n,k;
FILE*fp;
clrscr();
/*清屏函数*/
fp=fopen("
test1-2.dat"
"
w"
n=fun(a);
n);
fprintf(fp,"
for(k=0;
k<
k++)
{printf("
%5d"
a[k]);
if((k+1)%10==0)
fclose(fp);
23-2套参考答案:
一、程序调试题(文件名test2-1.c)(40分)
voidfun(int*s,int*t,intk)/*改为*k*/
{inti,m;
s+i)/*改为*(s+i)*/
{m=*(s+i);
/*改为*k*/
*t++;
/*改为(*t)++*/
{inta[N]={876,675,896,101,301,401,980,431,451,777};
/*改为a*/
a[i]);
/*改为a[i]*/
二、编程题(程序文件取名为test2-2.c)(60分)
23-3套参考答案:
一、程序调试题(文件名test3-1.c)(40分)
/*改为ctype.h*/
voidfun(chars)/*改为*s*/
{inti,j;
/*改为去掉分号;
*/
s[j]=s[i];
/*改为s[j++]*/
s[i]='
/*改为s[j]*/
/*改为str*/
二、编程题(程序文件取名为test3-2.c)(60分)
1.文件定义、打开、关闭正确10分2.数据讲稿和文件写入正确10分
3.函数调用正确5分4.函数定义和参数使用正确20分
5.结果正确10分6.程序结构合理5分
voidsort(intaa[],intbb[])
{inti,j,data;
5;
for(j=i+1;
j<
j++)
{if(aa[i]%1000>
aa[j]%1000)
{data=aa[i];
aa[i]=aa[j];
aa[j]=data;
elseif(aa[i]%1000==aa[j]%1000)
if(aa[i]<
aa[j])
bb[i]=aa[i];
{intaa[5],bb[5];
FILE*out;
inti;
\npleaseinput5numbers:
%d"
&
aa[i]);
sort(aa,bb);
out=fopen("
test3-2.dat"
bb[i]);
fprintf(out,"
fclose(out);
23-4套参考答案:
一、程序调试题(文件名test4-1.c)(40分)
intfun(chars,chart)/*改为char*s,char*t*/
{intn=0;
{p=s;
if(*r=*p)/*改为==*/
{r++;
elsecontinue;
/*改为break*/
)/*改为*r*/
/*改为s++*/
/*改为n*/
{intm;
二、编程题(程序文件取名为test4-2.c)(60分)
1.被调函数编写正确20分2.函数调用正确5分
3.文件打开和关闭正确5分4.文件读、写正确15分
5.N输入和屏幕输出正确10分6.程序结构合理5分
#include<
#defineN5
voidfun(inta[N][N],intn)
i++,j++)
a[i][j]=a[i][j]+1;
for(j=0;
a[i][j]=a[i][j]*2;
a[i][j]=a[i][j]*3;
{inta[N][N],i,j,n;
printf(“*****inputn*****\n”);
scanf(“%d”,&
n);
test4-2.in"
r"
if(fp==NULL)
filetest4-2.innotopen"
exit(0);
fscanf(fp,"
a[i][j]);
fun(a,n);
test4-2.out"
{for(j=0;
a[i][j]);