整理四川省二级c语言29次机试试题及答案.docx

上传人:b****5 文档编号:7831411 上传时间:2023-01-26 格式:DOCX 页数:20 大小:29.62KB
下载 相关 举报
整理四川省二级c语言29次机试试题及答案.docx_第1页
第1页 / 共20页
整理四川省二级c语言29次机试试题及答案.docx_第2页
第2页 / 共20页
整理四川省二级c语言29次机试试题及答案.docx_第3页
第3页 / 共20页
整理四川省二级c语言29次机试试题及答案.docx_第4页
第4页 / 共20页
整理四川省二级c语言29次机试试题及答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

整理四川省二级c语言29次机试试题及答案.docx

《整理四川省二级c语言29次机试试题及答案.docx》由会员分享,可在线阅读,更多相关《整理四川省二级c语言29次机试试题及答案.docx(20页珍藏版)》请在冰豆网上搜索。

整理四川省二级c语言29次机试试题及答案.docx

整理四川省二级c语言29次机试试题及答案

(第一套)

(60分钟)

一、程序调试题(40分)

磁盘上有一程序test1-1.c,其中函数fun的功能是:

求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。

字符串数组中共有M个字符串,且串长

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

注意:

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

源程序如下:

#include

#include

#defineM5

#defineN20

voidfun(char(*ss)[N])

{inti,j,k=0,n,m,len;

for(i=0;i

{len=strlen(ss[i]);

if(i=0)n=len;

if(len

{n=len;

k=i;

}

}

for(i=0;i

if(i!

=k)

{m=n;len=strlen(ss);

for(j=len;j>=0;j--)

ss[i][m--]=ss[i][j];

for(j=0;j

ss[i][j]='*';

}

}

voidmain()

{charss[M][N];

inti;

FILE*fp;

fp=fopen("test1-1.in","r");

if(fp==NULL)

{printf("Filecannotopen!

\n");

exit(0);

}

for(i=0;i

fscanf("%s",ss[i]);

printf("\nTheoriginalstringsare:

\n");

for(i=0;i

printf("%s\n",ss[i]);

printf("\n");

fun(ss);

for(i=0;i

printf("%s\n",ss[i]);

fclose(fp);

}

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

程序的功能是:

删除一个字符串中指定的字符。

编写fun函数,其功能是删除一个字符串中指定的字符。

假设字符串为:

turbocandborlandc++,指定要删除的字符为n,则删除后的字符串变为:

turbocadborladc++。

如果输入的字符在字符串中不存在,则字符串照原样输出。

同一字母的大、小按不同字符处理。

在main函数中输入一个字符串(可以有空格)和一个要删除的字符,调用函数fun,最后输出结果。

(第二套)

(60分钟)

一、程序调试题(40分)

磁盘上有一个名为test2-1.c的C程序,其中函数fun的功能是:

用下面的公式求

的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:

例如,程序运行后,输入0.0001,则程序输出3.1414。

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

注意:

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

源程序如下:

#include

#include

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;pi=0;n=1;s=1;

while(t>=num)

{pi=pi+t;n=n+2;s=-s;

t=s%n;

}

pi=pi*4;

return;

}

main()

{

floatn1,n2;

FILE*fp;

fp=fopen("test2-1.out","r");

if(fp==NULL)

{printf("\nFilecannotopen!

\n");

exit(0);

}

printf("Enterafloatnumber:

");

scanf("%f",&n1);

n2=fun();

printf("%6.4f\n",n2);

fprintf(fp,"Result=%6.4f\n",n2);

fclose(fp);

}

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

编写函数fun,其功能是:

将形参指针a指向的字符顺序放入形指针c指向的字符串中,再把形参指针b指针的字符串逆序放入形参指针c指向的字符串中。

注:

不能使用字符串的复制和连接函数。

例如:

a指向的字符串为adcb,b指向的字符串为213,则字符串c中的内容为adcb312。

(第三套)

(60分钟)

一、程序调试题(40分)

磁盘上有一个名为test3-1.c的C程序文件,其中函数fun的功能是:

将数组a中n个整数进行移动,大于等于0的数放在数组的前面,小于0的数放在后面。

例如:

数组中的数为:

12-3456-9-10259-82490,移动后的结果为:

12562592490-34-9-10-8

在main函数中,从一文本文件test3-1.in中读取10个整数放入整型数组中,调用函数fun,并输出最后的结果。

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

注意:

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

源程序如下:

#include

voidfun(inta[],intn)

{

inti,j=0,b[20];

for(i=0;i

if(a[i]>=0)

b[j]=a[i];

for(i=0;i

if(a[i]>0)

b[j++]=a[i];

for(i=0;i

a[i]=b[i];

}

voidmain()

{

inta[10],i;

charfilename[20];

FILE*fp;

printf("Inputfilename:

");

scanf("%c",filename);

if((fp=fopen(filename,"r"))==NULL){

printf("Cannotopenthefile.\n");

exit(0);

}

for(i=0;i<10;i++)

fscanf(fp,"%d",a[i]);

fun(a,10);

for(i=0;i<10;i++)

printf("%4d",a+i);

fclose(fp);

}

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

编写函数fun,函数fun的功能是:

将字符串s最右边的n个字符赋值到新串t中,若n大于s的长度,则将s复制到t中。

注:

不能使用字符串的复制函数。

例如:

字符串s为abcdefgh,n=5,则字符串t为defgh。

main函数中输入一字符串s及n的值,调用fun函数并输出结果。

(第四套)(60分钟)

一、程序调试题(40分)

磁盘上有一个名为test4-4.c的C程序文件,其功能是:

在main函数中随机生成一个N*N的二维数组,fun函数使该数组左下半三角元素中的值乘以n。

例如n=3,当a数组中的值为:

,运行程序后a数组的值就变为:

在main函数中将运行结果输出到屏幕上和文件test4-4.out中。

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

注意:

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

源程序如下:

#include"stdio.h"

#defineN=3

intfun(inta[][N],n)

{

inti,j;

for(i=0;i

for(j=0;j

if(i>=j)

a[i][j]=*n;

}

main()

{

inta[N][N],n,i,j;

FILE*fp;

for(i=0;i

{for(j=0;j

{a[i][j]=rand()%10;

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

}

printf("\n");

}

do

n=rand()%10;

while(n<=3)

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

fun(a,n);

fp=fopen("test4-1.out","w");

if(fp==NULL)

{printf("\nFilecannotopen!

\n);

exit(0);

}

for(i=0;i

{for(j=0;j

{printf("%4d",a[i][j]);

fprintf(fp,"%4d",a[[i][j]);

}

printf("\n");

}

fclose(fp);

}

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

假定输入的字符串只包含字母和*号。

请编写函数fun(),它的功能是:

只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

形参n给出字符串的长度,形参h给出字符串中前导*号的个数,形参e给出字符串中尾部*号的个数。

在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容****A*BC*DEF*G*******,删除后,字符串中的内容则应该是A*BC*DEF*G。

(第五套)(60分钟)

一、程序调试题(40分)

给定程序test5-1.c,函数fun的功能是求两个形参的乘积和商,其结果存入形参指针所指的地址中,函数io实现数据的输入和输出。

假设输入文件test5-1.in有数据61.82和12.65,则两个数的乘积和商分别为782.02300和4.886957。

main函数调用函数io。

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

注意:

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

源程序如下:

#include

voidfun(doublea,b,*x,*y)

{x=a*b;y=a/b;

}

io()

{inti;

doublea,b,c,d;

file*rf,*wf;

rf=fopen("test5-1.in","r");

wf=fopen("test5-1.out","w");

fscanf(rf,"%lf%lf",&a,&b);

fun(a,b,c,d);

fprintf("c=%lf\nn=%lf\n",c,d);

printf("c=%lf\nn=%lf\n",c,d);

fclose(rf);

fclose(wf);

}

voidmain()

{

doublea,b,c,d;

clrscr();

io();

}

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

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

要求实现:

在主函数中输入一个3×4的整型矩阵,调用函数covert对其进行转置并将结果存放在另一个二维数组中,最后在主函数中输出结果。

 

答案

29-1套参考答案:

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

#include

#include

#defineM5

#defineN20

voidfun(char(*ss)[N])

{inti,j,k=0,n,m,len;

for(i=0;i

{len=strlen(ss[i]);

if(i=0)n=len;/*改为:

i==0*/

if(len

len>n*/

{n=len;

k=i;

}

}

for(i=0;i

if(i!

=k)

{m=n;len=strlen(ss);/*改为:

ss[i]*/

for(j=len;j>=0;j--)

ss[i][m--]=ss[i][j];

for(j=0;j

n-len*/

ss[i][j]='*';

}

}

voidmain()

{charss[M][N];

inti;

FILE*fp;

fp=fopen("test1-1.in","r");

if(fp==NULL)

{printf("Filecannotopen!

\n");

exit(0);

}

for(i=0;i

fscanf("%s",ss[i]);/*改为:

fp,"%s",ss[i]*/

printf("\nTheoriginalstringsare:

\n");

for(i=0;i

printf("%s\n",ss[i]);

printf("\n");

fun(ss);

for(i=0;i

printf("%s\n",ss[i]);

fclose(fp);

}

评分标准:

每改对一处得8分

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

评分标准:

1.main函数30分2.fun函数30分

1)字符串和字符输入正确10分1)删除字符方法正确10分

2)函数调用参数传递正确10分2)指针使用正确10分

3)输出结果正确10分3)s[i]=010分

参考程序:

#include

#defineN100

intfun(chars[],intc)

{

char*p=s;

inti;

while(*p)

{if(*p!

=c)s[i++]=*p;

p++;

}

s[i]=0;

}

main()

{

charstr[N],ch;

printf("\nEnterstring:

");

gets(str);

printf("Enterachartobedeleted:

");

scanf("%c",&ch);

fun(str,ch);

printf("Result=%s\n",str);

}

29-2套参考答案:

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

#include

#include

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;pi=0;n=1;s=1;

while(t>=num)/*改为:

fabs(t)>=num*/

{pi=pi+t;n=n+2;s=-s;

t=s%n;/*改为:

s/n*/

}

pi=pi*4;

return;/*改为:

returnpi*/

}

main()

{

floatn1,n2;

FILE*fp;

fp=fopen("test2-1.out","r");/*改为:

w*/

if(fp==NULL)

{printf("\nFilecannotopen!

\n");

exit(0);

}

printf("Enterafloatnumber:

");

scanf("%f",&n1);

n2=fun();/*改为:

n2=fun(n1)*/

printf("%6.4f\n",n2);

fprintf(fp,"Result=%6.4f\n",n2);

fclose(fp);

}

评分标准:

每改对一处得8分

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

评分标准:

1.fun函数编写40分2.main函数20分

1)函数定义、形参书写正确10分1)能正确字义数组,并能对字符串进

2)能正确将字符数组a复制到字符数组c10分行正确的输入和输出10分

3)能正确将字符数组b复制到字符数组c10分2)能正确调用fun函数10分

4)c[k]=’\0’10分

参考程序:

#include

#include

voidfun(char*a,char*b,char*c)

{

inti,j,k;

for(i=0;a[i]!

='\0';i++)

c[i]=a[i];

for(k=i,j=strlen(b)-1;j>=0;k++,j--)

c[k]=b[j];

c[k]='\0';

}

voidmain()

{

chara[50],b[50],c[100];

printf("Inputstringa:

");

gets(a);

printf("Inputstringb:

");

gets(b);

fun(a,b,c);

printf("stringc:

%s\n",c);

}

29-3套参考答案:

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

#include

voidfun(inta[],intn)

{

inti,j=0,b[20];

for(i=0;i

if(a[i]>=0)

b[j]=a[i];/*改为:

j++*/

for(i=0;i

if(a[i]>0)/*改为:

<*/

b[j++]=a[i];

for(i=0;i

a[i]=b[i];

}

voidmain()

{

inta[10],i;

charfilename[20];

FILE*fp;

printf("Inputfilename:

");

scanf("%c",filename);/*改为:

%s*/

if((fp=fopen(filename,"r"))==NULL){

printf("Cannotopenthefile.\n");

exit(0);

}

for(i=0;i<10;i++)

fscanf(fp,"%d",a[i]);/*改为:

&a[i]*/

fun(a,10);

for(i=0;i<10;i++)

printf("%4d",a+i);/*改为:

a[i]*/

fclose(fp);

}

评分标准:

每改对一处得8分

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

评分标准:

1.fun函数编写40分:

1)函数定义、形参书写正确10分

2)能正确处理n大于s的长度的情况10分

3)能正确处理n小于s的长度的情况10分

4)t[j]=’\0’10分

2.main函数20分:

1)能正确定义数组,并能正确进行输入输出10分

2)能正确调用函数10分

参考程序:

#include

#include

voidfun(char*s,char*t,intn)

{

inti,j,k;

k=strlen(s);

if(n>=k)

{for(i=0;s[i]!

='\0';i++)

t[i]=s[i];

t[i]='\0';

}

else

{for(i=k-n,j=0;s[i]!

='\0';i++,j++)

t[j]=s[i];

t[j]='\0';

}

}

voidmain()

{

chars[80],t[80];

inti,n;

printf("Inputstring:

");

gets(s);

printf("Inputn:

");

scanf("%d",&n);

fun(s,t,n);

printf("Result:

");

puts(t);

}

29-4套参考答案:

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

#include"stdio.h"

#defineN=3/*改为:

3*/

intfun(inta[][N],n)/*改为:

intn*/

{

inti,j;

for(i=0;i

for(j=0;j

if(i>=j)

a[i][j]=*n;/*改为:

*=*/

}

main()

{

inta[N][N],n,i,j;

FILE*fp;

for(i=0;i

{for(j=0;j

{a[i][j]=rand()%10;

printf("%4d",a[j][i]);/*改为:

a[i][j]*/

}

printf("\n");

}

do

n=rand()%10;

while(n<=3)/*改为:

(n<=3);*/

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

fun(a,n);

fp=fopen("test4-1.out","w");

if(fp==NULL)

{printf("\nFilecannotopen!

\n);

exit(0);

}

for(i=0;i

{for(j=0;j

{printf("%4d",a[i][j]);

fprintf(fp,"%4d",a[[i][j]);

}

printf("\n");

}

fclose(fp);

}

评分标准:

每改对一处得8分

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

评分标准:

1.fun函数编写20分:

1)函数定义、形参书写正确10分

2)for循环书写正确10分

2.main函数40分:

1)字符串输入和输出正确5分

2)字符串的长度计算准确10分

3)字符串前导*号个数计算准确10分

4)字符串尾部*号个数计算准确10分

5)函数调用参数传递正确5分

参考程序:

#include

voidfun(char*a,intn,inth,inte)

{inti,j=0;

for(i=h;i

a[j++]=a[i];

a[j]='\0';

}

voidmain()

{chars[81],*t,*f;

intm=0,tn=0,fn=0;

printf("Enterastring:

\n");

gets(s);

t=f=s;

while(*t){t++;m++;}

t--;

while(*t=='*'){t--;tn++;}

while(*f=='*'){f++;fn+

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

当前位置:首页 > 高等教育 > 哲学

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

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