您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 全国计算机等级考试二级C语言上机编程题参考答案
全国计算机等级考试二级C语言考前辅导编程题型Page1(1)将两个两位的正整数a、b合并形成一个整数放在c中:将a的十位和个位数放在c的千位和十位,b的十位和个位数放在c的百位和个位。例如:若a=45,b=12,使c=4152。voidfun(inta,intb,int*c)//c是指针{*c=a/10*1000+b/10*100+a%10*10+b%10;}(2)判断整数x是否是同构数(规定x是不大于100的正整数)。若是,函数返回1,否则返回0。如果某个整数能够在它的平方数的最右边出现,就是“同构数”。例如:5的平方数是25,5是25右边的数,所以5是同构数。intfun(intx){return(x10&&x*x%10==x)||(x=10&&x*x%100==x);}(3)w是大于10的无符号整数,求w后n-1位的数作为函数值返回。例如:若w是234,则返回34。unsignedfun(unsignedw){unsignedt=w,m=1;while(t){t/=10;m*=10;}returnw%(m/10);}(4)对变量x中的值保留2位小数,并对第3位进行四舍五入(规定x中的值为正数)。doublefun(doublex){return(int)(x*100+0.5)/100.0;}(5)求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根,并作为函数值返回。doublefun(intn){inti;doubles=0;for(i=1;in;i++)if(i%3==0&&i%7==0)s+=i;returnsqrt(s);//平方根}(6)求1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过函数返回这些数的个数。intfun(int*a,intm){inti,j=0;for(i=1;i=m;i++)if(i%7==0||i%11==0)a[j++]=i;//j++模式returnj;}(7)求3到n之间所有素数的平方根之和,并返回。doublefun(intn){inti,k;doubles=0;for(i=3;i=n;i++){for(k=2;ki;k++)//判断素数if(i%k==0)break;//整除中止if(i==k)s+=sqrt(i);//是素数}returns;}(8)求出小于或等于lim的所有素数并放在a数组中,该函数返回所求的素数的个数。intfun(intlim,inta[MAX]){inti,k,j=0;for(i=2;i=lim;i++){for(k=2;ki;k++)if(i%k==0)break;if(k==i)a[j++]=i;//j++模式}returnj;}(9)将大于整数m且紧靠m的n个素数存入x所指的数组中。voidfun(intm,intn,intx[]){inti,k,j=0;for(i=m+1;jn;i++){for(k=2;ki;k++)if(i%k==0)break;if(k==i)x[j++]=i;//j++模式}}(10)求数组前n个数的小数部分的和,并返回。doublefun(intn,doublea[]){inti;doubles=0;for(i=0;in;i++)s+=a[i]-(int)a[i];//原数-整数returns;}(11)把a数组的n个数的平方值,与b数组中逆序的n个数的平方值一一对应相加,存放在c数组中。voidfun(inta[],intb[],intc[],intn){inti;for(i=0;in;i++)c[i]=a[i]*a[i]+b[n-1-i]*b[n-1-i];}⒈整数分离与合并⒊整除和素数问题⒋求总和均值极值⒉四舍五入Page2辽宁科技大学黄建公共信箱:v.c.6@163.com密码:123.456(12)计算并返回a数组中n门课程的平均分。doublefun(int*a,intn){inti;doubles=0;for(i=0;in;i++)s+=a[i];returns/n;}(13)返回a数组n个学生中低于平均分的人数,并将低于平均分的分数放在b所指的数组中。intfun(inta[],intn,intb[]){inti,j=0;doubles=0;for(i=0;in;i++)s+=1.0*a[i]/n;//平均分for(i=0;in;i++)if(a[i]s)b[j++]=a[i];//j++模式returnj;}(14)求N×N的二维数组周边元素的平均值并作为函数值返回给主函数。doublefun(inta[N][N]){inti,k;doubles=0;for(i=0;iN;i++)for(k=0;kN;k++)if(i==0||k==0||i==N-1||k==N-1)s+=a[i][k];returns/(4*N-4);//除以个数}(15)求出s数组t个元素中最大元素在数组中的下标,并存放在k所指的存储单元中。voidfun(int*s,intt,int*k){inti,m=0;for(i=1;it;i++)if(s[i]s[m])m=i;*k=m;}(16)求出数组a[M][N]里每列中的最小元素,并依次放入b[N]数组中。voidfun(inta[M][N],intb[N]){inti,k,m;for(k=0;kN;k++)//共N列{m=a[0][k];for(i=0;iM;i++)//每列M行if(a[i][k]m)m=a[i][k];b[k]=m;}}(17)求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中数列f(n)的定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)intfun(intt){inta=0,b=1,c=0;while(c=t){c=a+b;a=b;b=c;}returnc;}(18)根据以下公式求P的值,结果由函数值带回。floatfun(intm,intn){inti;floatx=1,y=1,z=1;for(i=1;i=m;i++)x*=i;//m!for(i=1;i=n;i++)y*=i;//n!for(i=1;i=m-n;i++)z*=i;//(m-n)!returnx/y/z;}(19)根据以下公式计算s,结果由函数值返回。doublefun(intm){inti;doubles=0;for(i=1;i=m;i++)s+=log(i);returnsqrt(s);//平方根}(20)计算下列级数和,结果由函数值返回。若x=0.3,n=10,则函数值为1.349859。doublefun(doublex,intn){inti;doubles=1,z=1,m=1;for(i=1;i=n;i++)s+=(z*=x)/(m*=i);returns;}(21)根据以下公式计算s,结果由函数值返回。floatfun(intn){inti,t=0;//t作分母floats=0;⒌数学公式求值全国计算机等级考试二级C语言考前辅导编程题型Page3for(i=1;i=n;i++){t+=i;s+=1.0/t;}returns;}(22)根据以下公式计算x的值,某项小于e时停止迭代:若e的值是0.0005,则返回3.14…doublefun(doublee){doublen=1,v=1,s=0;while(v=e){s+=v;v*=n++/(2*n+1);}returns*2;}(23)求给定10个数的方差,结果作为函数值返回:其中X'是10个数的平均值。doublefun(doublex[10]){inti;doublev=0,s=0;for(i=0;i10;i++)v+=x[i]/10;//v是平均值for(i=0;i10;i++)s+=(x[i]-v)*(x[i]-v);returnsqrt(s/10);}(24)求方程cos(x)-x=0的一个实根。步骤:①x1初值0.0;②x0=x1;③x1=cos(x0);④若x0-x1的绝对值小于0.000001,执行步骤5,否则执行步骤2;⑤x1就是实根,作为函数值返回。doublefun(){doublex1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)=1e-6);returnx1;}(25)把二维数组左下角元素全置为0。如:原来值为:492则返回:092357007816000voidfun(inta[N][N]){inti,k;for(i=0;iN;i++)for(k=0;k=i;k++)//循环至i列a[i][k]=0;}(26)矩阵转置,如:输入102030输出104070(即行列互换)405060205080708090306090voidfun(inta[N][N]){inti,k,t;for(i=0;iN;i++)for(k=0;ki;k++)//至i-1列{t=a[i][k];a[i][k]=a[k][i];a[k][i]=t;}}(27)将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如:s数组中存放'A''B''C''D''\0''E''F''G''H''\0'则a中应保存AEBFCGDH。voidfun(chars[M][N],char*a){inti,k,j=0;for(k=0;kN-1;k++)//跳过'\0'列for(i=0;iM;i++)a[j++]=s[i][k];//j++模式a[j]='\0';//串尾添'\0'}(28)一维数组a中有n个整数,把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。voidfun(inta[],intp,intn){inti,k,t;for(k=0;k=p;k++){t=a[0];for(i=1;in;i++)a[i-1]=a[i];//数据前移a[n-1]=t;}}(29)假定输入的字符串中只包含字母和*号,将字符串中的前导*号全部移到字符串的尾部。voidfun(char*a){inti,n=strlen(a);while(a[0]=='*'){for(i=1;in;i++)a[i-1]=a[i];a[n-1]='*';//尾部添*号}}⒍矩阵问题⒎移动数组元素Page4辽宁科技大学黄建公共信箱:v.c.6@163.com密码:123.456(30)统计一个长度为2的字符串a在另一个字符串b中出现的次数。intfun(char*a,char*b){inti,n=0;//计数器置0for(i=0;istrlen(b);i++)if(b[i]==a[0]&&b[i+1]==a[1])n++;returnn;}(31)统计字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定单词之间由若干空格隔开,一行的开始和结束都没有空格。intfun(chars[]){inti,n=0;//计数器置0for(i=0;istrlen(s);i++)if(s[i]!=''&&(s[i+1]==''||s[i+1]=='\0'))n++;returnn;}(32)判断字符串是否为回文数。若是则函数返回1,否则返回0。回文是指顺读和倒读都是一样的串。intfun(char*a){inti,m=strlen(a);for(i=0;im/2;i++)if(a[i]!=a[m-1-i])return0;return1;}(33)统计数组a中的各年龄段的人数(N个)。0~9岁的人数放在b[0]中,10~19岁的人数放在b[1]中,以此类推,100岁及以上的放在b[10]中。voidfun(int*a,intb[11]){inti;for(i=0;i11;i++)b[i]=0;//计数器置0for(i=0;iN;i++)if(a[i]=100)b[10]++;elseb[a[i]/10]++;}(34)统计在t字符串中26个字母'a
本文标题:全国计算机等级考试二级C语言上机编程题参考答案
链接地址:https://www.777doc.com/doc-2688652 .html