文档库 最新最全的文档下载
当前位置:文档库 › C语言机试100套试题

C语言机试100套试题

C语言机试100套试题
C语言机试100套试题

第一套:

1、下列给定程序中,函数fun的功能是:计算如下公式

直到0.001,并且把计算结果作为函数值返回。

#include

double fun(double e)

{ int i, k; double s, t, x;

s=0; k=1; i=2;

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

x=__1__/4;

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

while(x __2__ e)

{ s=s+k*x;

k=k* (-1);

t=2*i;

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

x=__3__/(t*t);

i++;

}

return s;

}

main()

{ double e=1e-3;

printf("\nThe result is: %f\n",fun(e));

}

答案:(1)3.0或(double)3(2)>(3) (t+1)

2、下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。2/1,3/2,5/3,8/5……

和值通过函数值返回。

例如,若n=5,则应输出8.391667。

#include

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

void fun ( int n )

{ int a, b, c, k; double s;

s = 0.0; a = 2; b = 1;

for ( k = 1; k <= n; k++ ) {

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

s = s + (Double)a / b;

c = a; a = a + b; b = c;

}

return s;

}

main( )

{ int n = 5;

printf( "\nThe value of function is: %lf\n", fun ( n ) );

}

答案:(1)double fun(int n)

(2)s=s+(double)a/b;

3、请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

#include

#define M 4

int fun (int a[][M])

{

}

main( )

{ int arr[2][M]={5,8,3,45,76,-4,12,82} ;void NONO ();

printf("max =%d\n", fun(arr)) ;

NONO( ) ;

}

void NONO ()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ;

int arr[][M]={5,8,3,90,76,-4,12,82} ;

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

fprintf(wf, "max=%d\n", fun(arr)) ;

fclose(wf) ;

}

答案:

int fun (int a[][M])

{

int i,j,max=a[0][0];

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

for(j=0;j

if(max

max=a[i][j];

return max;

}

第二套:

1、下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。

例如,当形参n的值为10时,函数返回值为9.612558。

#include

double fun(int n)

{ int i; double s, t;

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

s=__1__;

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

for(i=1; i<=__2__; i++)

{ t=2.0*i;

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

s=s+(2.0*i-1)*(2.0*i+1)/__3__;

}

return s;

}

main()

{ int n=-1;

while(n<0)

{ printf("Please input(n>0): "); scanf("%d",&n); }

printf("\nThe result is: %f\n",fun(n));

}

答案:(1) 0(2) n(3) (t*t)

2、下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。

例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。

#include

int fun (char *str,char *substr)

{ int i,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;

}

return num;

}

main()

{

char str[80],substr[80];

printf("Input a string:") ;

gets(str);

printf("Input a substring:") ;

gets(substr);

printf("%d\n",fun(str,substr));

}

答案:(1)for(i=0;str[i];i++)

(2)if(substr[k+1]== '\0')

3、编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。

程序运行后,若输入精度0.0005,则程序应输出为3.14…。

#include

#include

double fun ( double eps)

{

}

main( )

{ double x;void NONO ();

printf("Input eps:") ;

scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));

NONO();

}

void NONO ()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;

int i ;

double x ;

fp = fopen("in.dat","r") ;

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

for(i = 0 ; i < 10 ; i++) {

fscanf(fp, "%lf", &x) ;

fprintf(wf, "%lf\n", fun(x)) ;

}

fclose(fp) ;

fclose(wf) ;

}

答案:double fun ( double eps)

{

double s=1.0,s1=1.0;

int n=1;

while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/

{s1=s1*n/(2*n+1); /*求多项式的每一项*/

s=s+s1; /*求和*/

n++;

}

return 2*s;

}

第三套

1、给定程序中,函数fun的功能是:统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,若形参s所指的字符串为"abcdef35adgh3kjsdf7",则输出结果为4。

#include

void fun(char *s, int *t)

{ int i, n;

n=0;

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

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

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

if(s[i]>='0'&&s[i]<= ___2___ ) n++;

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

___3___ ;

}

main()

{ char s[80]="abcdef35adgh3kjsdf7";

int t;

printf("\nThe original string is : %s\n",s);

fun(s,&t);

printf("\nThe result is : %d\n",t);

}

【参考答案】

(1) s[i](2) '9'(3)*t=n

2、下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。

例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。

#include

int fun(int *x,int y)

{

int t ;

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

t = x ; x = y ;

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

return(y) ;

}

main()

{

int a = 3, b = 8 ;

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

b = fun(&a, b) ;

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

}

【参考答案】

(1)t = *x ; *x = y ;

(2)return(t) ;或return t;

3、编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

#include

void fun (int *a, int *n)

{

}

main( )

{ int aa[1000], n, k ;

void NONO ( );

fun ( aa, &n ) ;

for ( k = 0 ; k < n ; k++ )

if((k + 1) % 10 == 0) printf("\n") ;

else printf("%5d", aa[k]) ;

NONO( );

}

void NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

int aa[1000], n, k ;

FILE *fp ;

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

fun ( aa, &n ) ;

for ( k = 0 ; k < n ; k++ )

if((k + 1) % 10 == 0) fprintf(fp, "\n") ;

else fprintf(fp, "%5d", aa[k]) ;

fclose(fp) ;

}

【参考答案】

void fun (int *a, int *n)

{

int i,j=0;

for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/

if((i%7==0||i%11==0)&&i%77!=0)

a[j++]=i;

*n=j;

}

第四套

1、下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。

#include

#define N 9

int fun(int a[], int n)

{ int i,j;

for (i=0; i

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

if (a[i]%2==___1___)

{

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

a[j] = a[i]; ___2___;

}

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

return ___3___;

}

main()

{ int b[N]={9,1,4,2,3,6,5,8,7}, i, n;

printf("\nThe original data :\n");

for (i=0; i

printf("\n");

n = fun(b, N);

printf("\nThe number of odd : %d \n", n);

printf("\nThe odd number :\n");

for (i=0; i

printf("\n");

}

【参考答案】

(1)1(2) j++(3)j

2、下列给定程序中函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。

例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。

#include

int fun(int a,int b)

if(a

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

t=a; b=a; a=t;

}

r=a%b;

while(r!=0)

{ a=b; b=r; r=a%b; }

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

return(a);

}

main()

{ int num1, num2,a;

printf("Input num1 num2: "); scanf("%d%d",&num1,&num2);

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

a=fun(num1,num2);

printf("The maximun common divisor is %d\n\n",a);

}

【参考答案】

(1)t=a;a=b;b=t;

(2)return(b);或return b;

3、规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。

#include

void fun( char *a )

{

}

main()

{ char s[81];

void NONO ( );

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

fun( s );

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

NONO();

}

void NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ;

int i ; char s[81] ;

in = fopen("in.dat","r") ;

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

for(i = 0 ; i < 10 ; i++) {

fscanf(in, "%s", s) ;

fun(s) ;

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

}

fclose(in) ;

fclose(out) ;

}

【参考答案】

void fun( char *a )

{

int i,j=0;

for(i=0;a[i]!='\0';i++)

if(a[i]!='*')

a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/

a[j]='\0';

}

第五套

1、下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。

例如,输入一个整数27638496,函数返回值为64862。

#include

unsigned long fun(unsigned long n)

{ unsigned long x=0; int t;

while(n)

{ t=n%10;

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

if(t%2==____1____)

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

x=____2____+t;

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

n=____3____;

}

return x;

}

main()

{ unsigned long n=-1;

while(n>99999999||n<0)

{ printf("Please input(0

printf("\nThe result is: %ld\n",fun(n));

}

【参考答案】

(1)0(2) 10*x (3)n/10

2、下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为87653142时,t中的数为7531。

#include

void fun (long s, long *t)

{ int d;

long sl=1;

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

t = 0;

while ( s > 0)

{ d = s%10;

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

if (d%2 == 0)

{ *t = d * sl + *t;

sl *= 10;

}

s /= 10;

}

}

main()

{ long s, t;

printf("\nPlease enter s:"); scanf("%ld", &s);

fun(s, &t);

printf("The result is: %ld\n", t);

}

【参考答案】

(1)*t=0;

(2)if(d%2!=0)或if(d%2==1)

3、编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。

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

FirstString--

SecondString

程序输出:

FirstString--SecondString

#include

void fun(char p1[], char p2[])

{

}

main()

{ char s1[80], s2[40] ;void NONO ();

printf("Enter s1 and s2:\n") ;

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

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

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

printf("Invoke fun(s1,s2):\n") ;

fun(s1, s2) ;

printf("After invoking:\n") ;

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

NONO() ;

}

void NONO ()

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i ;

FILE *rf, *wf ;

char s1[80], s2[40] ;

rf = fopen("in.dat","r") ;

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

for(i = 0 ; i < 10 ; i++) {

fscanf(rf, "%s", s1) ;

fscanf(rf, "%s", s2) ;

fun(s1, s2) ;

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

}

fclose(rf) ;

fclose(wf) ;

}

【参考答案】

void fun(char p1[], char p2[])

{

int i,j;

for(i=0;p1[i]!='\0';i++) ;

for(j=0;p2[j]!='\0';j++)

p1[i++]=p2[j];

p1[i]='\0';

}

第六套

1、下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。

例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。

规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。

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

# include

#define N 9

void fun(int a[], int n)

{ int i,j, max, min, px, pn, t;

for (i=0; i

{

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

max = min = ___1___;

px = pn = i;

for (j=i+1; j

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

if (max<___2___)

{ max = a[j]; px = j; }

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

if (min>___3___)

{ min = a[j]; pn = j; }

}

if (pn != i)

{ t = a[i]; a[i] = min; a[pn] = t;

if (px == i) px =pn;

}

if (px != i+1)

{ t = a[i+1]; a[i+1] = max; a[px] = t; }

}

}

main()

{ int b[N]={9,1,4,2,3,6,5,8,7}, i;

printf("\nThe original data :\n");

for (i=0; i

printf("\n");

fun(b, N);

printf("\nThe data after moving :\n");

for (i=0; i

printf("\n");

}

【参考答案】

(1) a[i](2) a[j](3) a[j]

2、下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、

3、5、8、13、21、……

例如,若给n输入7,则该项的斐波拉契数值为13。

#include

long fun(int g)

{

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

switch(g);

{ case 0: return 0;

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

case 1 ;case 2 : return 1 ;

}

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

}

{ long fib; int n;

printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);

fib=fun(n);

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

}

【参考答案】

(1)去掉分号

(2)case 1:case 2:return 1;

3、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

#include

#define N 8

typedef struct

{ char num[10];

double s[N];

double ave;

} STREC;

void fun(STREC *a)

{

}

main()

{ STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

相关文档