二级C上机模拟题.docx
- 文档编号:6006399
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:18.97KB
二级C上机模拟题.docx
《二级C上机模拟题.docx》由会员分享,可在线阅读,更多相关《二级C上机模拟题.docx(18页珍藏版)》请在冰豆网上搜索。
二级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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 上机 模拟