知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

32套: 

给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。 

请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

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

给定源程序: 

#include <stdio.h> 

#include <string.h> 

#define N 5 

#define M 10 

/ **********found**********/ 

void fun(char (*ss) __1__, int k) 

{ int i=0 ; 

/ **********found**********/ 

while(i< __2__) { 

 

/ **********found**********/ 

ss[i][k]=__3__; i++; } 

main() 

{ char x[N][M]={"Create","Modify","Sort","skip","Delete"}; 

int i; 

printf("\nThe original string\n\n"); 

for(i=0;i<N;i++)puts(x[i]); printf("\n"); 

fun(x,4); 

printf("\nThe string after deleted :\n\n"); 

for(i=0; i<N; i++) puts(x[i]); printf("\n"); 

解题思路: 

本题是根据给定的字符串数组中删除串长大于某个值的右边字符串。 

第一处:函数的定义,试题中已用M作为字符串的长度,所以应填:M。 

第二处:利用while循环,分别对字符串数组中的每个字符串置字符串结束符,程序中已经给定了N个字符串,所以应填:N。 

第三处:置字符串结束符,所以应填:0(或'\0')。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。 

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。 

π 1 1 2 1 2 3 1 2 3 4 

=1+ ─ ─×─ ─×─×─ ─×─×─×─+…… 2 3 3 5 3 5 7 3 5 7 9 

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

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

给定源程序: 

#include <math.h> 

#include <stdio.h> 

double fun(double eps) 

{ double s,t; int n=1; 

s=0.0; 

/ ************found************/ 

t=0; 

while( t>eps) 

{ s+=t; 

t=t * n/(2*n+1); 

n++; 

/ ************found************/ 

return(s); 

main() 

{ double x; 

printf("\nPlease enter a precision: "); scanf("%lf",&x); 

printf("\neps=%lf, Pi=%lf\n\n",x,fun(x)); 

 

解题思路: 

第一处初始化t的值,根据程序中的计算程序和试题的要求得出,t应为1。 

第二处根据公式π/2得出,所以返回时应原有s的基础上乘以2作为返回值。 

*************************************************** 

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n;若多于n个,则删除多余的*若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。 

例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****n的值在主函数中输入。 在编写函数时,不得使用C语言提供的字符串函数。 

注意部分源程序在文件PROG1.C文件中。 

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

给定源程序: 

#include <stdio.h> 

void fun( char *a, int n ) 

/ * 以下代码仅供参考 */ 

int i=0,j,k=0; 

while(a[k]=='*') k++; / * k为统计*字符个数 */ 

if(k>n) 

i=n;j=k; 

/ * 以下完成将下标为k至串尾的字符前移k-n个位置 */ 

main() 

{ char s[81]; int n; 

printf("Enter a string:\n");gets(s); 

printf("Enter n : ");scanf("%d",&n); 

fun( s,n ); 

printf("The string after deleted:\n");puts(s); 

NONO(); 

 

解题思路: 

本题是考察字符串的操作。 

利用for循环来判断a[j]的字符是否是字符串结束符,如果不是字符串结束符,则把a[j] 的字符依次存放到a[i]。其中,变量in的初始值,变量j是字符串前导的*号数。 

参考答案: 

void fun( char *a, int n ) 

/ * 以下代码仅供参考 */ 

int i=0,j,k=0; 

while(a[k]=='*') k++; / * k为统计*字符个数 */ 

if(k>n) 

i=n;j=k; 

/ * 以下完成将下标为k至串尾的字符前移k-n个位置 */ 

for(; a[j] !=0 ; j++) 

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

a[i] = 0; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多