版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷15(共9套)(共27题)国家二级(C语言)机试模拟试卷第1套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#includedoublef1(doublex){returnx*x;}doublef2(doublex,doubley){Eeturnx*y;}/**************found**************/【1】fun(inti,doublex,doubley){if(i==1)/**************found**************/Eeturn【2】(x);else/**************found**************/reLurn【3】(x,y);}main(){doublex1=5,x2=3,r;r=fun(1,x1,x2);r+=fun(2,x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);}标准答案:(1)double(2)f1(3)f2知识点解析:第一空:主函数内fun函数的调用形式是“r=fun(1,x1,x2):",r是double型变量,因此fun函数的返回值是double型,故第一空处应为“double"。第二空:“return2(x);"被调用的函数只有一个参数,故第二空出为“n",返回x的平方值。第三空:“return3(x,y);"被调用的函数有2个参数x和y,故第三空处应为“f2",返回x和y的积。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s中的字符串为:”ABCDE”时,则t中的字符串应为:”ABCDEEDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(char*s,char*t){inti,s;sl=strlen(s);/************found************/for(i=0;i<=sl;i++)t[i]=s[i];for(i=0;i标准答案:slt[sl+sl]=’\0’知识点解析:(1)编译程序后可知,for(i=0;i<=s1;i++)这一行有错误,原因是s1变量没有定义,显然这个循环的目的是将s字符串的内容拷贝至t字符串,这里的循环变量i的最大值是s字符串的长度sl,因此第一个标识下是将s1改为sl。(2)题目要求将s中的字符拷贝至t字符串之后,还需将s按逆序连接到t串的后面,第二个循环已经完成了逆序接到t字符串的工作,最后是确定字符串的结尾,即字符串应该以“\0”结束。此时,字符串t的长度是2*sl,显然t[sl]=’\0’的话字符串长度仍然是sl,故第二个标识下是将t[sl]=’\0’改成t[2*sl]=’\0’或者t[sl+sl]=’\0’。三、程序设计题(本题共1题,每题1.0分,共1分。)3、编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,把x1的值赋给x0;(3)x1=cos(x0),求出一个新的xl;(4)若x0-xl的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739086。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#includedoublefun(){}main(){voidNONO();printf("Root=%f\n",fun());NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;wf=fopen("out.dat","w");fprintf(wf,"%f\n",fun());fclose(wf);}标准答案:{floatx0,x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);returnx1;}知识点解析:进入fun函数,根据前面的分析:根据题中给出的求解步骤,首先x1初值为0.0;若x0-x1的绝对值大于0.000001就循环进行迭代,即“x0=x1;x1=cos(x0);”直到满足题目中的要求,返回x1,即实根。国家二级(C语言)机试模拟试卷第2套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。例如,从主函数输入一个整数:27638496,函数返回值为:26846。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#includeunsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/*****************found***************/i=【1】;/*****************found***************/while(【2】){t=s%10;if(t%2==0){/*****************found***************/x=x+t*i;i=【3】;}s=s/10;}returnx;}main(){unsignedlongn=一1;while(n>99999999||n<0){printf("Pleaseinput(0标准答案:(1)1(2)s(3)i*10知识点解析:第一空:由“if(t%2=0){x=x+-t*i;i=【3】;}"可知,如果t是偶数,那么t添加到返回值里面,比如第一次得到t=2,那么x=0+2*l;下一次得到了t=4,那么此时x的值应该是2+2*10;再下一次得到t=2,那么x=22+2*100,即x的值是在上一次值的基础上加上新得到的值乘以其权值,因此i是代表权值。第一空处是初始化i,第一次进入if语句时,x是个1位数,此时权值i应为1,做第一空处应为“1",第二空:第二空处是填循环的终止条件,在循环体内,s每次缩小10倍,在最后一次进入循环的时候,s是一个一位数,s/10之后s变成0,下次就不应该进入while循环,因此while循环的终止条件是s不为0,故第二空处为“s"或“s!=0"。第三空:由第一空的分析可知权值i是在上一次的基础上增加10倍,故第三空处应为“i*10"。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:统计substr所指子字符串在s仃所指字符串中出现的次数。例如,若字符串为aaasIkaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includeintfun(char*str,char*substr){inti,j,k,num=0;/****************found*****************/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/****************found*****************/If(substr[k+1]==’\0’){num++;break;}returnnum;}main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d\n",fun(str,substr));}标准答案:(1)for(i=0;str[i];i++)(2)if(substr[k+1]==’\0’)知识点解析:(1)第二个标识下的for循环中的循环表达式之间是使用分号来进行分割的,所以第二个标识下“for(i=0,str[i],i++)"改为“for(i=0;str[i];i++)"。(2)第二个标识下“If(substr[k+1]=’\0’)",含义是判断substr是否到达了尾部,这里应该用if来判断,在C语言中没有“If"关键字,故第二标识处应改成“if([substr[k+1]==’\0’)"。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到<0.000001为止。例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#includedoublefun(doublex){}NONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti;doubles,x;rf=fopen("in.dat","r");wf=fopen("out.dat","w"’);for(i=0;i<10;i++){fscanf(rf,"%lf",&x);s=fun(x);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}main(){doublex,s;printf("Inputx:");scanf("%lf",&x);s=fHn(x);printf("s=%f\n",s);NONO();}标准答案:intn=1;/*循环计数*/doublesn=1;/*累计数*/doublexn=1,xn1=0;/*x的n值,以及x的n一1值;*/while(fabs(xn-xn1)>=0.000001)/*绝对值是否满足条件*/{xn=xn*x*(0.5-n+1)/n;/*表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/n+=1;sn+=xn;/*sn累加上xn*/}return(sn);知识点解析:(1)根据题干中给出的数列,推出每一项分子是在前一项分子的基础上乘以(0.5-n+1)*x,分母则为阶乘,也就是在前一项分母的基础上乘以n。(2)在循环中求得每一项,然后对其进行累加求和。国家二级(C语言)机试模拟试卷第3套一、程序填空题(本题共1题,每题1.0分,共1分。)1、请补充函数fun(),该函数的功能是;交换数组aa中最大和最小两个元素的位置,结果依然保存在原数组中,其它元素位置不变。注意数组aa中没有相同元素。例如,输入“33,67,42,58,25,76,85,16,41,56”,则输出“33,67,42,58,25,76,16,85,41,56”。注意;部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include<stdio.h>#defineN10voidfun(intaa[]){inti,j,t;intmax=0,min=0;for(i=0;i<N;i++){if(【】)max=i;if(【】)min=i;}t=aa[max];【】;aa[min]=t;}main(){inti;intaa[N]={33,67,42,58,25,76,85,16,41,56};clrscr();printf("\n***originallist***\n");for(i=0;i<N;i++)printf("%4d",aa[i]);fun(aa);printf("\n***newlist***\n");for(i=0;i<N;i++)printf("%4d",aa[i]);}标准答案:aa[max]<aa[i]aa[min]>aa[i]aa[max]=aa[min]知识点解析:第一空:先假设aa[0]最大,如果找到更大的元素,则将这个元素的下标赋给max。第二空:同理,先假设aa[0]最小,如果找到更小的元素,则将这个元素的下标赋给min。第三空:找到最大值和最小值之后,借助第三个变量t交换这两个元素。二、程序修改题(本题共1题,每题1.0分,共1分。)2、下列给定程序中fun()函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>fun(intn,int*a){inti,j,p,t;for(j=0;j<n-1;j++){P=j;/***************found*******************/for(i=j+l;i<n-1;i++)if(a[p]>a[i])/***************found*******************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr(ihtn,int*z){inti;for(i=l;i<=n;i++,z++){printf("%4d",*z);if(!(i%10))printf("\n");}printf("\n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;clrscr();printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);fun(n,aa);printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}标准答案:(1)错误:for(i=j+1;i<n-1;i++)正确:for(i=j+1;i<n;i++)(2)错误:t=i;正确:p=i;知识点解析:该程序是对n个数实现从小到大的排序,该题中先是找小输入整数的最小项,置于指针第1个元素的位置:再找出第2个元素至尾元素的最小项,置于第2个元素的位置;之后顺次处理后读元素。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为ABCDEFGHIJK,m的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<string.h>#defineN80voidfun(char*w,intm){}main(){chara[N]="ABCDEFGHIJK";intm;printf("Theoriginastring:\n");puts(a);printf("\n\nEnterm:");scanf("%d",&m);fun(a,m);printf("\nThestringaftermoving:\n");puts(a);printf("\n\n");}标准答案:voidfun(char*w,intm){inti,j;chart;for(i=1;i<=m;i++)/*进行m次的循环左移*/{t=w[0];for(j=1/w[j]!=’\0’;j++)/*从第2个字符开始以后的每个字符都依次前移一个字符*/w[j-1]=w[j];w[j-1]=t;/*将第1个字符放到最后一个字符中*/}}知识点解析:我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。国家二级(C语言)机试模拟试卷第4套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,n,len=0;for(i=0;i标准答案:ss[i]n+j1知识点解析:第一空:第一个循环求最长字符串的长度len,在第二个循环内在其他字符串的后面补“*”,使其达到长度len。在“for(j=0;j二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f:若形参是字母w,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includecharfun(charc){if(c>=’A’&&c<=’Z’)/**************found***************/C=C+32;if(c>=’a’&&c<=’u’)/**************found***************/c=c-5;elseif(c>=’v’&&c<;’z’)c=c-21;returnc;}main(){charc1,c2;printf("\nEnteraletter(A—Z):");c1=getchar();if(isupper(c1)){c2=fun(c1);printf("\n\nTheletter\’%c\’changeto\’%c\’\n",c1,c2);}elseprintf("\nEnter(A—Z)!\n");}标准答案:(1)c=c+32;(2)c=c+5;知识点解析:(1)第一个标识下“C=C+32;"中变量C没有定义,编译时会提示出错。根据题意,这行语句的作用是将大写字母转换为小写字母,C语句中大写字母转换为对应的小写字母是对原有ASCⅡ码加32,小写转换为大写是减32,所以应将“C=C+32;"改为“C=C+32;"。(2)第二个标识下是将小写字母转换为其后的第五个字母,字母在a~u之间只加上5就可以了,原题中减5则是将字母转换到该字母之前的第五个字母,所以第二个标识下“C=C-5:"改为“C=C+5;"。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#defineN50#defineM11voidfun(int*a,int*b){}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);}main(){intageIN],i,d[M];voidNONO(intd[M]);for(i=0;i标准答案:inti,j;for(j=0;j=0&&a[i]<=9)//0到9岁b[0]+=1;elseif(a[i]>=10&&a[i]<=19)//10到19岁b[1]+=1;elseif(a[i]>:20&&a[i]<=29)b[2]+==;elseif(a[i]>=30&&a[i]<=39知识点解析:(1)首先,初始化不同年龄段的计数统计器。(2)然后在for循环中,利用多重选择结构,依次对年龄进行判断,同时将对应的计数器值加1操作。国家二级(C语言)机试模拟试卷第5套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)p->next(2)q(3)p->next知识点解析:本题中函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序,在fun函数内采用的是选择法排序。选择排序法中的升序排序,首先从数组中挑选一个最小的元素,把它和第一元素交换,接着从剩下的n-1个元素中再挑出一个最小的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)for(i=1;i<=y;i++)(2)t=t%1000;知识点解析:本题中函数的功能是求整数x的y次方的低3位值。本题解题过程首先是求y次方,然后对结果进行截取。三、程序设计题(本题共1题,每题1.0分,共1分。)3、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的莅括号中填入你编写的若干语句。标准答案:知识点解析:该程序功能是求最低分数的学生。本题是关于求解结构体中某些成员的最小值,首先将第一个值设定为最小值,并在循环中将其他所有值与该值进行比较,求得最小值。国家二级(C语言)机试模拟试卷第6套一、程序填空题(本题共1题,每题1.0分,共1分。)1、函数fun的功能是:计算的前n项之和。若x=2.5,n=15时,函数值为:1.917914。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)1(2)-1(3)t知识点解析:本题中矗m函数的功能是求级数和,观察级数项规律:从第二项开始,间隔出现正负数,级数项的分母是n阶乘,分子是x的n次方,所以级数项为:(-1)n-1xn/(n!),n=1,2,3……,后一项在前一项的基础上乘以(-1)*x,除以n。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)p=s;(2)while(*p++);知识点解析:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。然后通过“printf("\nThestringatlerinsert:\"%s\"、n",s);”函数直接输出结果。三、程序设计题(本题共1题,每题1.0分,共1分。)3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号:若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为:******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为;*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容。仅在函数fun的花括号中填入你编写的若干语句。标准答案:知识点解析:该程序功能是根据字符串前导的“*”号个数进行相关操作。解题过程首先确定字符串尾,然后由串头开始对字符进行判断,同时对“*”字符进行统计,如果大于n,就进行截取。国家二级(C语言)机试模拟试卷第7套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)10(2)0(3)x知识点解析:本题中函数fun的功能是将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。相当于首先求出n的各位数,判断是否是奇数,如果是奇数将其按照原来从高位到低位的顺序组成一个新的数。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是;从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)voidfun(10ngs,long*t)(2)while(s>0)知识点解析:该题中函数功能是取出长整型变量s中偶数位上的数,组成新数。从已给定源程序的main主函数开始入手,“fun(s,&t);”语句调用函数fun来实现题目要求。三、程序设计题(本题共1题,每题1.0分,共1分。)3、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12。调用该函数后,c=4251。注意:部分源程序存在文件PROGl.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。标准答案:*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);知识点解析:该程序功能是将正整数a、b合并形成一个新整数。本题类型首先要考虑整数的位数分离,然后要进行位数合成。也就是先将数字的各位数拆开,改变排列顺序后,再组合成新的数字。国家二级(C语言)机试模拟试卷第8套一、程序填空题(本题共1题,每题1.0分,共1分。)1、函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。例如:当n=123114350时,结果应该为:c1=3c2=lc3=2。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#includeintc1,c2,c3;voidfun(10ngn){c1=c2=c3=0;whi1e(n){/**********found************/switch(【1】){/**********found************/casel:C1++;【2】;/**********found************/case2:c2++;【3】;case3:c3++;}n/=10;}}main(){longn=123114350L;fun(n);printf("\nTheresult:\n");printf("n=%ldcl=%dc2=%dc3=%d\n",n,c1,c2,c3);}标准答案:(1)n%10(2)break(3)break知识点解析:第一空:switch内部是统计数字1、2、3的个数,因此switch条件是n的一位数。由“n/=10;"在循环中,n每次减小为以前的1/10,即n逐步往左边移出一个整数位,移出的整数位可由n%10可求得,故第一空处应填“n%10"。第二空:c语言中,case语句后都要加“break"语句,否则会执行多个case语句,因此第二空处应为“brcak"。第三空:理由同上,第三空处应填“break"。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如:当s所指的字符串为:"ABCDE"时,则t所指的字符串应为:"EDCBAABCDE"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(char*s,char*t){/****************found**************/inti;s1=strlen(s);for(i=0;i标准答案:(1)inti,s1;(2)t[i]=s[s1—i一1];知识点解析:(1)根据“s1=strlen(s);",可知变量s1记录字符串s的长度,是整型变量,在第一标识下没有定义s1,故第一标识下应补充s1的定义,应改为“inti,s1;"。(2)函数fun中的第一个for循环是求s的逆序,并将其存放在t串中。在求逆串时要注意第一个下标是0,最后一个是s1-1(s1是串的长度),第i个对应下标的是s1-1-i,所以“t[i]=str[s1—i];"改为“t[i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑砌体工程分项工程施工工艺标准
- 2024年连带责任担保借款协议书
- 临建合同范本2024年
- 2024年机械试用买卖合同
- 新疆公共基础知识模拟4
- 2024年二手房交易过户“一件事”一次办
- 地方公务员江苏申论90
- 2024年门面房屋租赁合同的范本
- 2024年建筑钢材购销合同格式
- 江苏申论模拟21
- 智能制造装备与集成 课件 07 典型纺织智能智能生产线实例
- 《陕西省无机非金属材料标准体系建设指南(2023版)》
- 商业健康保险在全民医保中的定位研究
- 奥运英语竞赛问答(小学组)
- 代发工资委托书格式样本
- 川崎病诊治专家共识
- 数字货币概论 课件 第2章 数字货币的发展历程
- 修理厂安全责任合同模板
- 慢性阻塞性肺疾病案例分析报告
- 教师孝行事迹材料
- 5个人股东合作协议书
评论
0/150
提交评论