二级C上机模拟题.docx

上传人:b****6 文档编号:6006399 上传时间:2023-01-02 格式:DOCX 页数:18 大小:18.97KB
下载 相关 举报
二级C上机模拟题.docx_第1页
第1页 / 共18页
二级C上机模拟题.docx_第2页
第2页 / 共18页
二级C上机模拟题.docx_第3页
第3页 / 共18页
二级C上机模拟题.docx_第4页
第4页 / 共18页
二级C上机模拟题.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

二级C上机模拟题.docx

《二级C上机模拟题.docx》由会员分享,可在线阅读,更多相关《二级C上机模拟题.docx(18页珍藏版)》请在冰豆网上搜索。

二级C上机模拟题.docx

二级C上机模拟题

上机模拟题

模拟练习一

1.填空题

s为一个字符序列,请补充fun函数,该函数的功能是:

查找s中值为a的元素,返回找到值为a的元素个数,并把这些值为a的元素下标依次保存在数组str中。

例如,在"testtest"中查找"e",结果为2,下标依次为1、5。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:

部分源程序给出如下。

#include

#include

#defineM100

intstr[M];

intfun(char*s,charch)

{

inti=0,n=0;

chart=ch;

char*p=s;

while(*p)

{

if(___1___)

___2___;

p++;

i++;

}

return___3___;

}

main()

{

chars[M];

charch;

inti,n;

printf("PleaseInputtheoriginalstring\n");

gets(s);

printf("TheOriginalstringis:

\n");

puts(s);

printf("Inputcharacter\n");

scanf("%c",&ch);

n=fun(s,ch);

printf("\nThenumberofcharacteris:

%d\n",n);

printf("Thepositionofcharacter:

\n");

for(i=0;i

printf("%d",str[i]);

}

2.改错题

下列给定程序中,函数fun的功能是:

用递归算法计算斐波拉契级数数列中第n项的值。

从第1项起,斐波拉契级数序列为1、1、2、3、5、8、…例如,若给n输入7,则该项的斐波拉契级数值为13。

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

注意:

不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

longfun(intm)

{

/*******error*********/

switch(m);

{

case0:

return0;

/********error********/

case1;

case2:

return1;

}

return(fun(m-1)+fun(m-2));

}

main()

{

longa;

intn;

printf("Inputn:

");

scanf("%d",&n);

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

a=fun(n);

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

}

3.编程题

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

删除一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

1,1,1,2,2,3,3,3,3,4

删除后,数组中的内容应该是:

1,2,3,4

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:

部分源程序给出如下。

#include

#defineM100

intfun(intb[],intm)

{

}

main()

{

intb[M]={1,1,1,2,2,3,3,3,3,4},i,m=10;

FILE*out;

printf("Theoriginaldata:

\n");

for(i=0;i

printf("%3d",b[i]);

m=fun(b,m);

printf("\nThedataafterdeleted:

\n");

out=fopen("outfile.dat","w");

for(i=0;i

{

printf("%3d",b[i]);

fprintf(out,"%d\n",b[i]);

}

fclose(out);

}

 

模拟练习二

1.填空题

给定程序中,函数fun的功能:

将s所指字符串中的所有非数字字符移到所有数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。

例如,形参s所指的字符串为:

asf34fgrt5657gngjh78。

则执行结果为:

34565778asffgrtgngjh。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:

部分源程序给出如下。

#include

voidfun(char*str)

{

inti,j=0,k=0;

chartemp1[80],temp2[80];

for(i=0;str[i]!

='\0';i++)

if(str[i]>='a'&&str[i]<='z')

{

___1___;

j++;

}

else

{

temp1[k++]=str[i];

}

temp2[j]=0;

temp1[k]=0;

for(i=0;i

___2___;

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

str[k+i]=temp2[i];

}

main()

{

charstr[100]="asf34fgrt5657gngjh78";

printf("\nTheoriginalstringis:

%s\n",str);

fun(str);

printf("\nTheresultis:

%s\n",str);

}

 

2.改错题

下列给定程序中,函数fun的功能是:

计算并输出max以内最大的10个素数之和。

high由主函数传给fun函数。

若max的值为50,则函数的值为300。

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

注意:

不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

intfun(intmax)

{

intsum=0,n=0,j,flag;

while((max>=2)&&(n<10))

{

flag=1;

for(j=2;j<=max/2;j++)

/********error********/

if(max%j==0)

{

flag=0;

break

}

if(flag)

{

sum+=max;

n++;

}

max--;

}

returnsum;

}

main()

{

printf("%d\n",fun(50));

}

 

3.编程题

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

将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串是:

  1111

  2222222

  33

  4444

则合并后的字符串的内容应是11112222222334444。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:

部分源程序给出如下。

#include

#defineM4

#defineN20

voidfun(charstr[M][N],char*a)

{

}

main()

{

charmatrix[M][N]={"1111","2222222",

"33","4444"},i;

charstr[100]={"****************"};

FILE*out;

printf("Thestring:

\n");

for(i=0;i

puts(matrix[i]);

printf("\n");

fun(matrix,str);

printf("Thestring:

\n");

printf("%s",str);

printf("\n\n");

out=fopen("outfile.dat","w");

fprintf(out,"%s",str);

fclose(out);

}

 

模拟练习三

1.填空题

在给定程序中,函数fun的功能是:

在形参s所指字符串中的每个非数字字符之后插入一个"*"号。

例如,形参s所指的字符串为:

a1bc45sdtg56f,则执行结果为a*1b*c*45s*d*t*g*56f*。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:

部分源程序给出如下。

#include

voidfun(char*str)

{

inti,j,n;

for(i=0;str[i]!

='\0';i++)

if(str[i]>='a'___1___str[i]<='z')

{

n=0;

while(str[i+1+n]!

=___2___)

n++;

for(j=i+n+1;j>i;j--)

str[j+1]=___3___;

str[j+1]='*';

i=i+1;

}

}

main()

{

charstr[100]="a1bc45sdtg56f";

printf("\nTheoriginalstringis:

%s\n",str);

fun(str);

printf("\nTheresultis:

%s\n",str);

}

2.改错题

下列给定程序中,函数fun的功能是:

将大写字母转换为对应小写字母之后的第五个字母,若小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。

例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。

请修改函数fun中的错误,得出正确的结果。

注意:

不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

charfun(charch)

{

/******error**********/

if(ch>='A'&&ch<='Z')

ch=ch-32;

/*******error*********/

if(ch>='a'&&ch<='u')

ch=ch-5;

elseif(ch>='v'&&ch<='z')

ch=ch-21;

returnch;

}

main()

{

charch1,ch2;

printf("\nEnteraletter(A-Z):

");

ch1=getchar();

if(isupper(ch1))

{

ch2=fun(ch1);

printf("\n\nTheletter%cchangeto%c\n",ch1,ch2);

}

else

{

printf("\nEnter(A-Z)!

\n");

}

}

3.编程题

编写一个函数fun,它的功能是:

实现两个字符串的连接(不使用库函数strcat),即把str2所指的字符串连接到str1所指的字符串后。

例如,分别输入下面两个字符串:

just--

test

则程序输出:

just--test

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:

部分源程序给出如下。

#include

#include

voidfun(charstr1[],charstr2[])

{

}

main()

{

chars1[100],s2[50];

FILE*out;

printf("Enters1ands2:

\n");

scanf("%s%s",s1,s2);

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

fun(s1,s2);

printf("Afterinvoking:

\n");

printf("%s\n",s1);

out=fopen("outfile.dat","w");

strcpy(s1,"Hello");

fun(s1,"World!

");

fprintf(out,"%s\n",s1);

strcpy(s1,"This");

fun(s1,"is");

fun(s1,"a");

fun(s1,"test");

fun(s1,"string.");

fprintf(out,"%s\n",s1);

fclose(out);

}

 

模拟联系四

1.填空题

函数fun的功能:

逆置数组元素中的值,形参m给出数组中数据的个数。

例如,若x所指数组中的数据依次为9、8、7、6、5,则逆置后依次为5、6、7、8、9。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:

部分源程序给出如下。

#include

voidfun(inta[],intm)

{

inti,temp;

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

{

temp=a[i];

a[i]=a[m-1-___2___];

___3___=temp;

}

}

main()

{

intx[9]={9,8,7,6,5},i;

printf("\nTheoriginaldata:

\n");

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

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

printf("\n");

fun(x,5);

printf("\nThedataafterinvert:

\n");

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

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

printf("\n");

}

2.改错题

下列给定程序中,函数fun的功能是根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。

若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若能构成三角形函数,返回1;若不能构成三角形函数,返回0。

请修改函数fun中的错误,得出正确的结果。

注意:

不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

intfun(intx,inty,intz)

{

if(x+y>z&&y+z>x&&x+z>y)

{

/*******error*********/

if(x==y&&y==z)

return1;

elseif(x==y||y==z||x==z)

return2;

else

/*******error*********/

return3;

}

else

return0;

}

main()

{

intx,y,z,shape;

printf("\nInputx,y,z:

");

scanf("%d%d%d",&x,&y,&z);

printf("\nx=%d,y=%d,z=%d\n",x,y,z);

shape=fun(x,y,z);

printf("\n\nTheshape:

%d\n",shape);

}

3.编程题

假定输入的字符串中只包含字母和"#"号,请编写函数fun,它的功能是:

删除字符串中所有的"#"号。

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

例如,若字符串中的内容为"##w#el##come###",删除后,字符串中的内容则应当是"welcome"。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:

部分源程序给出如下。

#include

#include

voidfun(char*s)

{

}

main()

{

charstr[81];

FILE*out;

printf("Enterastring:

\n");

gets(str);

fun(str);

printf("Thestringafterdeleted:

\n");

puts(str);

out=fopen("outfile.dat","w");

strcpy(str,"###T#ES#T#######");

fun(str);

fprintf(out,"%s",str);

fclose(out);

}

 

模拟练习五

1.填空题

请补充fun函数,该函数的功能是求能整除k且是偶数的数,把这些数保存在数组a中,并按从大到小输出。

例如,当k=40时,依次输出402010842。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:

部分源程序给出如下。

#include

#include

voidfun(intk,inta[])

{inti;

intj=0;

for(___1___;i<=k;i++)

if(k%i==0___2___i%2==0)

a[j++]=i;

printf("\n\n");

for(i=___3___;i>=0;i--)

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

}

main()

{

intk=1;

inta[100];

printf("\nPleaseinputk\n");

scanf("%d",&k);

fun(k,a);

}

2.改错题

下列给定程序的功能是:

读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的"单词"是指由空格隔开的字符串)。

例如,若输入"goodluck!

",则应输出"GoodLuck!

"。

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

注意:

不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

/*******error*********/

voidtop(chars)

{

inti=0;

for(;*s;s++)

if(i)

{

if(*s=='')

i=0;

}

else

{

if(*s!

='')

{

i=1;

*s=toupper(*s);

}

}

}

main()

{

charstr[81];

printf("\nPleaseenteranEnglishtextline:

");

gets(str);

printf("\n\nBeforechanging:

\n%s",str);

top(str);

printf("\nAfterchanging:

\n%s\n",str);

}

3.编程题

假定输入的字符串中只包含字母和"#"号。

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

除了字符串前导和尾部的"#"号之外,将串中其他"#"号全部删除。

形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。

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

例如,若字符串中的内容为"####a#bc#def##g#####",删除后,字符串中的内容则应当是"####abcdefg#####"。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:

部分源程序给出如下。

#include

#include

#include

voidfun(char*s,char*r,char*v)

{

}

main()

{

charstr[100],*p,*q;

FILE*out;

printf("Enterastring:

\n");

gets(str);

p=q=str;

while(*p)

p++;

p--;

while(*p=='#')

p--;

while(*q=='#')

q++;

fun(str,q,p);

printf("Thestringafterdeleted:

\n");

puts(str);

out=fopen("outfile.dat","w");

strcpy(str,"#####a#b#c#d######");

fun(str,str+4,str+13);

fprintf(out,"%s",str);

fclose(out);

}

 

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

当前位置:首页 > 自然科学

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

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