27次机试试题及答案.docx

上传人:b****3 文档编号:3516818 上传时间:2022-11-23 格式:DOCX 页数:18 大小:19.77KB
下载 相关 举报
27次机试试题及答案.docx_第1页
第1页 / 共18页
27次机试试题及答案.docx_第2页
第2页 / 共18页
27次机试试题及答案.docx_第3页
第3页 / 共18页
27次机试试题及答案.docx_第4页
第4页 / 共18页
27次机试试题及答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

27次机试试题及答案.docx

《27次机试试题及答案.docx》由会员分享,可在线阅读,更多相关《27次机试试题及答案.docx(18页珍藏版)》请在冰豆网上搜索。

27次机试试题及答案.docx

27次机试试题及答案

(第一套)

(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所指字符串为:

abcdef35agd3khe7,则数字出现的次数为4次。

(2)在main函数中,从已有文件test3-2.in中读出一行字符(字符个数不超过80个)到字符数组str中,调用函数fun,统计出数字出现的次数,并在屏幕上输出结果。

(第四套)(60分钟)

一、程序调试题(40分)

给定程序test4-1.c,其功能是:

输入一个整数k(2<=k<=10000),输出它的所有质因子(即所有为素数的因子)。

例如,若输入2310,则输出2、3、5、7、11。

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

注意:

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

源程序如下:

#include"stdio.h"

intfun1(int*n)

{

inti;

for(i=2;i<=n;i++)

if!

(n%i)

return0;

return;

}

voidmain()

{

intj,k;

printf("\nPleaseenteraintegernumber2~10000:

");

scanf("%d",k);

printf("\nTheprimefactor(s)of%dis(are):

",k);

for(j=2;j<=k;j++)

if(!

(k%j)&&fun1(j))

printf("\n%4d",j);

printf("\n");

}

二、编写程序test4-2.c(60分)

磁盘上已有文件test4-2.dat,文件中有3个字符串,请将3个字符串中的小写字母全部转换为大写字母,然后将转换后的结果输出到屏幕上。

要求:

定义convert函数,用于实现小写字母转换成大写字母。

在main函数中完成文件夹的打开和读数据,调用convert函数,输出转换后的结果。

(第五套)(60分钟)

一、程序调试题(40分)

给定程序test5-1.c,其功能是:

求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后。

例如,数组中的数据为:

876675896101301401980431451777

输出结果如下:

Theindexofmaxis:

6

Theresult:

876675896101301401980431451777980

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

注意:

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

源程序如下:

#include"stdio.h"

#defineN80

voidfun(int*s,int*t,intk)

{

inti,m;

*k=0;

m=*s;

for(i=1;i<(*t-1);i++)

if(m

{

m=*(s+i);

*k=i;

}

s[i+1]=m;

*t++;

}

voidmain()

{

inta[N]={876,675,896,101,301,401,980,431,451,777};

inti,n=10,mi;

fun(a[N],&n,&mi);

printf("Theindexofmaxis:

%d\n",mi);

printf("Theresult:

\n");

for(i=0;i

}

二、编写程序test5-2.c(60分)

用函数调用方式编写程序。

要求实现:

(1)编写fun函数,其功能是计算并比较两个字符串的长度(要求不得使用标准库函数strlen),返回较长字符串的指针。

若两个字符串长度相等,则返回第一个字符串的指针。

(2)编写main函数,在其中输入两个字符串,打开文件test5-2.dat,将fun函数计算出的两个字符串长度和返回结果分别显示在屏幕上,同时写入到文件test5-2.dat中。

 

27-1套参考答案:

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

#include"stdio.h"

#defineN10

voidfun(inta[],intm)/*改为:

int*/

{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;/*改为:

returnmid*/

}

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);/*改为:

&m*/

k=fun(a[N],m);/*改为:

a*/

if(k>=0)

printf("m=%d,index=%d\n",m,k);

else

printf("Notbefound!

\n");

}

评分标准:

每改对一处得8分

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

评分标准:

1、while循环编写正确,数字提取正确30分2、文件打开、关闭、数据写入正确15分

3、指针定义和使用正确5分4、屏幕输出正确5分5、程序结构合理5分

参考程序:

#include

#defineLEN256

voidmain()

{charline[LEN],b[20],*ptr1,*ptrb;

intn=0,j,a[50];

FILE*fp;

printf("Pleaseenterthestrings:

\n");

gets(line);

ptr1=line;

while(*ptr1!

='\0')

{ptrb=b;

for(j=0;*ptr1>='0'&&*ptr1<='9';ptr1++,ptrb++,j++)

*ptrb=*ptr1;

if(j)

{*ptrb='\0';

*(a+n)=atoi(b);

n++;

}

if(*ptr1!

='\0')ptr1++;

}

fp=fopen("test1-2.dat","w");

if(fp==NULL)

{printf("Cannotopenfile!

\n");

exit(0);

}

printf("Result:

\n");

for(j=0;j

{printf("%10d\n",*(a+j));

fprintf(fp,"%10d\n",*(a+j));

}

fclose(fp);

}

27-2套参考答案:

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

#include"stdio.h"

#include"ctype.h"

intUpperNum(charstr[])

{

intn,i=0;/*改为:

n=0*/

while((str+i))/*改为:

*(str+i)*/

{

if(isupper(str[i]))

n++;

i++;

}

returni;/*改为:

n*/

}

voidmain()

{

charstr[];/*改为:

str[80]*/

printf("\nInputastring:

\n");

gets(str);

printf("\nTheNumberofUpperLetteris:

%d\n",UpperNum(str[]));/*改为:

str*/

评分标准:

每改对一处得8分

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

评分标准:

1、被调函数编写正确(具体参照程序注释)(30分)

2、文件打开、关闭、数据读入正确(15分)

3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)

参考程序:

#include

#include

intmystrcmp(char*q1,char*q2)

{

intk=0,t;

while(*(q1+k)!

='\0'||*(q2+k)!

='\0')/*5分*/

{if(*(q1+k)!

=*(q2+k))/*10分*/

{t=*(q1+k)-*(q2+k);

break;

}

else

t=0;/*5分*/

k++;/*5分*/

}

returnt;/*5分*/

}

voidmain()

{

FILE*fp;

intt;

chars1[20],s2[20];

fp=fopen("test2-2.dat","r");

if(fp==NULL)

{printf("Filecannotoepn\n");

exit(0);

}

fgets(s1,80,fp);

fgets(s2,80,fp);

puts(s1);

puts(s2);

t=mystrcmp(s1,s2);

printf("\nThecomparingresultofstringsis:

%d\n",t);

fclose(fp);

}

27-3套参考答案:

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

#include"stdio.h"

#defineN100

intfun(ints,intn)/*改为:

*s*/

{inti,j,k,a,b,c;

j=0;

for(i=100;i<=n;i++)

{

k=j;/*改为:

i*/

a=k%10;

k/=10;

b=k%10;

k/=10;

c=k;

if(a==b||a==c)/*改为:

&&*/

s[j++]=i;

}

returni;/*改为:

j*/

}

voidmain()

{

inta[N],n,num=0,i;

do

{printf("Entern(100~1000):

\n\n");

scanf("%d",&n);

}while(n>1000)/*改为:

while(n>1000);*/

num=fun(a,n);

printf("\n\nTheresult:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

评分标准:

每改对一处得8分

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

评分标准:

1、被调函数编写正确(具体参照程序注释)(30分)

2、文件打开、关闭、数据读入正确(15分)

3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)

参考程序:

#include

voidfun(char*s,int*t)/*函数定义、形参书写正确10分*/

{

inti;

*t=0;/*5分*/

for(i=0;*(s+i)!

='\0';i++)/*算法正确,指针使用正确15分*/

if(*(s+i)>='0'&&*(s+i)<='9')(*t)++;

}

voidmain()

{

charstr[80];

FILE*fp;

inti=0,count;

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

{printf("Cannotopenfile!

\n");

exit(0);

}

while(!

feof(fp))

{str[i]=fgetc(fp);

i++;

}

str[i]='\0';

fclose(fp);

fun(str,&count);

printf("Count=%d\n",count);

}

第27-4套参考答案

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

#include"stdio.h"

intfun1(int*n)/*改为:

n*/

{

inti;

for(i=2;i<=n;i++)/*改为:

<*/

if!

(n%i)/*改为:

(!

(n%i))*/

return0;

return;/*改为:

return1*/

}

voidmain()

{

intj,k;

printf("\nPleaseenteraintegernumber2~10000:

");

scanf("%d",k);/*改为:

&k*/

printf("\nTheprimefactor(s)of%dis(are):

",k);

for(j=2;j<=k;j++)

if(!

(k%j)&&fun1(j))

printf("\n%4d",j);

printf("\n");

}

评分标准:

每改对一处得8分

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

评分标准:

1、被调函数编写正确(具体参照程序注释)(30分)

2、文件打开、关闭、数据读入正确(15分)

3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)

参考程序:

#include

voidconvert(charstr[])/*函数定义、形参书写正确10分*/

{inti=0;

while(str[i]!

='\0')/*5分*/

{if(str[i]>='a'&&str[i]<='z')/*5分*/

str[i]-=32;/*5分*/

i++;/*5分*/

}

}

voidmain()

{

FILE*fp;

charstr[100];

if((fp=fopen("test4-2.dat","r"))==NULL)

{printf("Cannotopenfile!

\n");

exit(0);

}

while(!

feof(fp))

{fgets(str,81,fp);

convert(str);

puts(str);

}

fclose(fp);

}

第27-5套参考答案

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

#include"stdio.h"

#defineN80

voidfun(int*s,int*t,intk)/*改为:

*k*/

{

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++;/*改为:

(*t)*/

}

voidmain()

{

inta[N]={876,675,896,101,301,401,980,431,451,777};

inti,n=10,mi;

fun(a[N],&n,&mi);/*改为:

a*/

printf("Theindexofmaxis:

%d\n",mi);

printf("Theresult:

\n");

for(i=0;i

a[i]*/

}

评分标准:

每改对一处得8分

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

评分标准:

1、被调函数编写正确(具体参照程序注释)(30分)

2、文件打开、关闭、数据读入正确(15分)

3、函数调用正确(5分)4、屏幕输出正确(5分)5、程序结构合理(5分)

参考程序:

#include

#defineN80

char*fun(char*s,char*t)/*函数定义、形参书写正确10分*/

{char*p,*ss,*tt;

ss=s;

tt=t;

while(*ss)

{n++;ss++;}/*5分*/

while(*tt)

{m++;tt++;}/*5分*/

if(n>=m)/*5分*/

p=s;

else

p=t;

returnp;/*5分*/

}

voidmain()

{chara[N],b[N];

FILE*fp;

printf("Input1thstring:

\n");

gets(a);

printf("Input2thstring:

\n");

gets(b);

fp=fopen("test5-2.dat","w");

if(fp==NULL)

{printf("Cannotopenfile!

\n");

exit(0);

}

printf("Theresultis:

%s\n",fun(a,b));

printf("Thelengthoftwostringsis:

%d,%d\n",n,m);

fprintf(fp,"Theresultis:

%s\n",fun(a,b));

fprintf(fp,"Thelen

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1