以下函数的功能是:计算a的n次方作为函数值返回。 double fun(double a,int n) { int i;double s=1.0; for(i=1;iA.s*iB.s*aC.s+i*iD.s+a*a

题目
以下函数的功能是:计算a的n次方作为函数值返回。 double fun(double a,int n) { int i;double s=1.0; for(i=1;i<=n;i++)s= ; return s; } 为实现上述功能,函数中下划线处应填入的是( )。

A.s*i

B.s*a

C.s+i*i

D.s+a*a


相似考题
更多“以下函数的功能是:计算a的n次方作为函数值返回。 double fun(double a,int n) { int i;double s=1.0; for(i=1;i<=n;i++)s= ; return s; } 为实现上述功能,函数中下划线处应填入的是( )。 ”相关问题
  • 第1题:

    函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。

    例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

    #include

    #include

    float fun (int m, int n)

    { int i;

    double p=1.0;

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

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

    for(i=1;i<=m-n;i++)p=p/i;

    return p;}

    main ()

    { clrscr();

    printf ("p=%f\n",fun (12,8));}


    正确答案:
    p=p*i;p=p/i

  • 第2题:

    请补充函数fun(),该函数的功能是:计算N×N维矩阵元素的方差,结果由函数返回。维数N在主函数中输入。例如:

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    include <conio.h>

    include <stdlib.h>

    include <math.h>

    define N 20

    double fun(【 】,int n)

    {

    int i,j;

    int k;

    double s=0.0;

    double f=0.0;

    double aver=0.0;

    double sd=0.0;

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

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

    s+=a[i][j];

    aver=【 】;

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

    for(j=0;i<n;j++)

    f+=(a[i][j]-aver)*(a[i][j]-aver);

    f/(n*n);

    sd=【 】;

    return sd;

    }

    main()

    {

    int a[N][N];

    int n;

    int i,j;

    double s;

    clrscr();

    printf("***+Input the dimension of

    array N*****\n");

    scanf("%d",&n);

    printf("***** The array *****\n");

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

    {

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

    {

    a[i][j]=rand()%50;

    while(a[i][j]=0)

    a[i][j]=rand()%60;

    printf("%4d",a[i][j]);

    }

    printf("\n\n");

    }

    s=fun(a,n);

    printf("******* THE RESULT *******\n");

    printf("%4.3f\n",s);

    }


    正确答案:int a[][N] s/(n*n) sqrt(f)
    int a[][N] s/(n*n) sqrt(f) 解析:第一空;由主函数main()中对函数fun()的调用格式,可以知道,函数fun()的第一个参数是N×N的二维整型数组。第二空:平均值等于所有元素的累加和除以个数。第三空;根据公式,方差sd等于对变量f开平方,这里注意对数学库函数的调用。

  • 第3题:

    以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回,请填空。(设N己定义)

    int fun(int x[N])

    {int i,k=0

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

    if(x[i]<x[k])k=_____;

    return x[k];

    }


    正确答案:i
    i 解析:循环语句依次查找数组的元素,下标从0到N-1,当x[i]的值小于k时,记录i值即此元素的下标,然后再将其余元素与新的k元素比较,最终求得最小值。所以填i。

  • 第4题:

    学生的记录由学号和成绩组成,N名学生的数据已存放在主函数的结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

    [注意] 部分源程序给出如下。

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

    [试题源程序]

    include<stdio.h>

    define N 8

    typedef struct

    {

    char num[10];

    double s;

    }STREC;

    double fun(STREC *a, STREC *b, int *n)

    {

    }

    void main()

    {

    STREC s[N]={{"GA05", 85},

    {"GA03", 76}, {"GA02", 69}, {"GA04", 85},

    {"GA01", 91}, {"GA07", 72}, {"GA08", 64},

    {"GA06", 87}};

    STREC h[N], t; FILE *out;

    int i, j, n;

    double ave;

    ave=fun(s, h, &n);

    printf("The %d student data which is lower than %7.3 f:\n", n, ave);

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

    printf("%s %4.1f\n", h[i]. num, h[i].s);

    printf("\n");

    ut=fopen("out.dat", "W");

    fprintf(out, "%d\n%7.3f\n", n, ave);

    for(i=0; 2<n-1; i++)

    for(j=i+1; j<n; j++)

    if(h[i]. s>h[j].s)

    {

    t=h[i];

    h[i]=h[j];

    h[j]=t;

    }

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

    fprintf(out, "%4.1f\n", h[i].s);

    fclose(out);

    }


    正确答案:int fun(STREC *a STREC *b int *n) { double ave=0.0; int i j=0; *n=0; for(i=0; iN; i++) ave+=a[i].s; ave/=N; for(i=0; iN; i++) if(a[i]. save) { b[j]=a[i]; (*n)++; j++; } return ave; }
    int fun(STREC *a, STREC *b, int *n) { double ave=0.0; int i, j=0; *n=0; for(i=0; iN; i++) ave+=a[i].s; ave/=N; for(i=0; iN; i++) if(a[i]. save) { b[j]=a[i]; (*n)++; j++; } return ave; } 解析:本题的设计思路是:(1)定义两个变量,分别用于保存总分和平均值,定义循环变量并赋初值:(2)利用循环语句遍历所有学生的分数,累加求和并计算初值;(3)再次遍历结构体数组,找出低于平均分的分数,把该学生的记录保存在形参数组b中,并记录其个数;(4)用return语句返回平均值。

  • 第5题:

    设在主函数中有以下定义和函数调用语句,且fun()函数为void类型,请写出fun()函数的首部______。

    int main()

    {

    double s[10][22];

    int n:

    ...

    fun (s):

    ...

    return 0;

    }


    正确答案:void fun(b[][22])
    void fun(b[][22]) 解析:此题考核的知识点是函数的定义形式与数组名作为函数的参数。函数头的定义形式是“存储类型说明符数据类型说明符函数名(形参列表)”,此题没有涉及到函数的存储类别。如果函数的参数是数组,其第1维的长度可以省略,因此本题的函数首部可以写成:void fun(b[] [22])。

  • 第6题:

    阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。

    [函数1.1说明]

    函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。

    所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。

    [函数1.1]

    int factors(int n)

    {

    int i,s;

    for(i=1,s=0;i<=n/2;i++)

    if(n%i==0) (1) ;

    if( (2) )return 0;

    return -1;

    }

    [函数1.2说明]

    函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。

    [函数1.2]

    int maxint(int a[],int k)

    {

    int t;

    if( (3) ) return (4) ;

    t=maxint(a+1, (5) );

    return (a[0]>t)?a[0]:t;


    正确答案:
                      

  • 第7题:

    若有以下函数首部 int fun(double x[lO],int *n) 则下面针对此函数的函数声明语句中正确的是______。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.iht fun(double*,int*);


    正确答案:D
    解析:函数声明可以照写已定义的函数的首部,再加一个号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的—致,即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选顶D正确。

  • 第8题:

    请编写函数fun(),它的功能是计算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

    s作为函数值返回。

    在C语言中可调用log(n)函数求In(n)。log函数的引用说明是double log(double x)。

    例如,若m的值为15,则fun()函数值为723.570801。

    注意:部分源程序给出如下。

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <math.h>

    double fun(int m)

    {

    }

    main()

    {

    clrscr();

    printf("%f\n",fun(15));

    }


    正确答案:double fun(int m) {   int i; double s=1.0; for(i=1;i=m;i++) s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/ return (s*s); /*对s求平方并返回*/ }
    double fun(int m) {   int i; double s=1.0; for(i=1;i=m;i++) s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/ return (s*s); /*对s求平方并返回*/ } 解析:首先,题目要求计算1依次减去1到M的对数,可用从1到M的循环,每次循环都减一个数的对数。该题需要注意,log()函数的形式参数应浩如烟海double型变量,用于循环的基数变量为整数,需要进行强制转换。最后在返回的时求平方。

  • 第9题:

    下列给定程序中,函数fun()的功能是:计算

    S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

    例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:

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

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

    试题程序:

    include <conio. h>

    include <stdio. h>

    include <math. h>

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

    f (double x)

    {

    if (x==0.0 || x==2.0)

    return 0.0;

    else if (x<0.0)

    return (x-1) / (x-2);

    else

    return (x+1) / (x-2);

    }

    double fun(int n)

    {

    int i; double s=0.0,y;

    for (i=-n; i<=n; i++)

    { y=f(1.0*i); s+=y;}

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

    return s

    }

    main()

    { clrscr();

    printf ("%f\n", fun (5));

    }


    正确答案:(1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s;
    (1)错误;(1)f(double x) 正确:double f (double x) (2)错误;return s 正确:return s; 解析:该程序的流程是,fun()程序对f (n)项循环累加,fun()程序采用条件选择语句计算函数f(x)的值。本题错误在于未定义函数f(double x)的返回值类型。C语言规定,在未显式声明的情况下,函数返回值默认为int 型。

  • 第10题:

    请补充函数fun(),该函数的功能是计算下面公式SN的值:

    例如:当N=50时,SN=71.433699。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    double fun(int n)

    {

    double s=1.0,S1=0.0;

    int k;

    for(【l】;k<=n;k++)

    {

    s1=s;

    【 】;

    }

    return【 】;

    }

    main()

    {

    int k=0;

    double S;

    clrscr();

    printf("\nPlease input N=");

    scanf("%d",&k);

    s=fun(k);

    printf("\ns=%lf",s);

    }


    正确答案:k=2 s+=(2*k-1)/s1 s
    k=2 s+=(2*k-1)/s1 s 解析:第一空:因为变量s初始化为1.0,也就是公式中的第—项,所以,for循环中,变量k从2开始,直到n。
    第二空:求出的s1就是公式中的SN-1,(2*K-1)/S1就是公式中的。第三空:变量s存放最后的结果,所以函数的返回值是s的值。

  • 第11题:

    阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。
    [说明1]
    函数f(double eps)的功能是:利用公式

    计算并返回π的近似值。

    [C函数1] double f(doubleeps) { double n=1.0, s=1.0, term=1.0, pi=0.0; while ( fabs(term) >=eps ){ pi=pi+term; n= ______; s= ______; term=s/n; } return pi*4; }

    [说明2]
    函数fun(char *str)的功能是:自左至右顺序取出非空字符串str中的数字字符,形成一个十进制整数(最多8位)。例如,若str中的字符串为"iyt?67kp f3g8d5.j4ia2e3p12",则函数返回值为67385423。

    [C函数2] long fun(char*str) { int i=0; long num: 0; char *p = str; while ( i<8 && ______) { if ( *p >= '0' && *p <= '9' ) { num= ______ + *p -'0'; ++i; } ______; } return num; }


    答案:
    解析:
    n+2
    -s或-1*s
    *p!='\0'或等价形式
    num*10或等价形式
    p++或等价形式

    【解析】

    本题考查C语言程序设计基本技能。考生需认真阅读题目中的说明,从而确定代码的运算逻辑,在阅读代码时,还需注意各变量的作用。
    函数f(double eps)的功能是计算兀的近似值。观察题中给出的计算公式,可知在循环中n每次递增2,因此空(1)处应填入"n+2"。由于公式中的各项是正负交替的,因此结合表达式"term=s/n"可知变量s就是起此作用的。空(2)处应填入"-s"或"-1*s"。
    对于函数fun(char *str]),从字符序列中取出数字并组合为一个整数时,对于每个数字,只需将之前获取的部分乘以10再加上该数字的值即可。
    以67385423为例。
    67385423=(((((((0+6)*10+7)*10+3)*10+8)*10+5)*10+4)*10+2)*10+3
    函数中的变量i是用来计算位数的,num用来计算所获得的整数值。显然,最多读取字符序列中的前8个数字,或者到达字符序列的末尾(*p!='\0')时,计算也需结束。因此,空(3)处应填入"*p!:'\0'"。
    根据num的作用,空(4)处应填入"num*10"。
    根据指针p的作用,空(5)处的代码应使得p指向下一个字符,因此应填入"p++"。

  • 第12题:

    单选题
    以下函数的功能是计算a的n次方作为函数值返回: double fun(double a,int n) {  int i;  double s=1.0;  for(i=1;i<=n;i++)s=______;  return s; } 为实现上述功能,函数中下画线处应填入的是(  )。
    A

    s*i

    B

    s*a

    C

    s+i*i

    D

    s+a*a


    正确答案: A
    解析:
    for循环语句,i=1时,s=s*a;i=2时,s=s*a*a=s*a2;i=n时,s=s*an。最后返回s。答案选择B选项。

  • 第13题:

    学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fjun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

    注意:部分源程序给出如下。

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

    试题程序:

    include <stdio.h>

    define N 12

    typede f struct

    { char num[10];

    double s;

    } STREC;

    double fun (STREC *a,STREC *b, int *n)

    {

    }

    main ( )

    STREC s IN] = { { "GA05", 85 }, { "GA03", 76 },

    {"GA02", 69}, {"GA04", 85}, {"GA01", 91},

    {"GA07", 72}, {"GA08", 64}, {"GA06", 87},

    {"GA09", 60}, { "GAll", 79 }, { "GA12", 73},

    {"GA10", 90 } };

    STREC h[N],t;

    FILE *out;

    int i ,j,n;

    double ave;

    ave=fun (s, h, &n);

    printf("The %d student data which is

    higher than %7.3f: In", n, ave);

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

    printf ("%s %4.1f\n",h[i] .num, h[i] .s);

    printf ("\n");

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

    fprintf(out, "%dkn %7.3f\n",n,ave);

    for(i=0; i<n-1; i++)

    for (j=i+l; j<n; j ++)

    if (h[i] .s<h[j ] .s)

    {t=h Ii] ;h[i]=h[j] ;h[j]=t; }

    /*分数从高到低排列*/

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

    fprintf(out, "%4.1f\n",h[i] .s);

    fclose (out);

    }


    正确答案:double fun (STREC *a STREC *b int *n) { int i; double ay=0.0; *n=0; for(i=0;iN;i++) av=av+a[i].s; ay=ay/N; /*求平均值*/ for(i=0;iN;i++) if(av=a[i].s) { b[*n]=a[i];*n-*n+l;} /*将高于等于平均分的学生存从所指存储单元中并统计人数*/ return ay; /*返回严均分*/ }
    double fun (STREC *a, STREC *b, int *n) { int i; double ay=0.0; *n=0; for(i=0;iN;i++) av=av+a[i].s; ay=ay/N; /*求平均值*/ for(i=0;iN;i++) if(av=a[i].s) { b[*n]=a[i];*n-*n+l;} /*将高于等于平均分的学生存从所指存储单元中,并统计人数*/ return ay; /*返回严均分*/ } 解析:本题中第1个循环的作用求出所有分数的总和,只有进行了av=av/N后才得到平均值(我们在前面的程序中碰到过类似问题)。第2个循环的作用是将高于等于平均分的学生存入b所指存储单元中。同一结构体变量之间可以互相赋值。
    本程序中直接用*n来表示b的下标,注意开始时要给,*n赋0,且使用时不能少*号。因为单独的n是一个指针变量,而我们要用的是它所指向的那个存储单元中的值。

  • 第14题:

    请补充函数fun,其功能是:计算并输出给定10个数的方差:

    例如,给定的10个数为15.0,19.0,16.0,15.0,18.0,12.0, 15.0,11.0,10.0,16.0,输出为s=2.758623。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<math. h>

    double fun (double x[10])

    {

    int i;

    double avg=0.0;

    double sum=0.0;

    double abs=0.0;

    double sd;

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

    【 】;

    avg=sum/10;

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

    【 】;

    sd=【 】;

    return sd;

    }

    main()

    {

    double s,x[10]={15.0,19.0,16.0,15.0,

    18.0,12.0,15.0,11.0,10.0,16.0};

    int i;

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

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

    printf("%6.1f",x[i]);

    printf("\n\n");

    s=fun(x);

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

    }


    正确答案:sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10)
    sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10) 解析:第一空:根据求方差的公式可知,首先要求出10个数的平均值,此处是利用for循环对10个数求累加和。第二空:使用for循环求出每个数与平均值之差的平方和。第三空:通过开方,求出10个数的方差,此处需要注意对库函数sqrt()的调用。

  • 第15题:

    下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:若a数组中的值为

    a= 0 1 2 7 9

    1 9 7 4 5

    2 3 8 3 1

    4 5 6 8 2

    5 9 1 4 1

    则返回土程序后s的值应为3.375。

    注意:部分源程序给出如下。

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

    试题程序:

    include <stdio.h>

    include<conio.h>

    include<stdlib.h>

    define N 5

    double fun (int w[] [N])

    {

    }

    main()

    {

    int a[N] [N]={0,1,2,7,9,1,9,7,4,5,2,

    3,8,3,1,4,5,6,8,2,5,9,1,4,1};

    int i, j;

    double s;

    clrscr();

    printf("*****The array*****\n ");

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

    { for (j=0;j<N;i++)

    {printf("%4d ",a[i] [j]);}

    printf("\n ");

    }

    s=fun(a);

    printf("*****THE RESULT*****\n ");

    printf("The sum is : %lf\n ",s);

    }


    正确答案:double fun (int w[][N]) { int ijk=0; double av=0.0; for(i=0;iN;i++) for(j=0;jN;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/ k++; } return av/k; /*求周边元素的平均值*/ }
    double fun (int w[][N]) { int i,j,k=0; double av=0.0; for(i=0;iN;i++) for(j=0;jN;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/ k++; } return av/k; /*求周边元素的平均值*/ } 解析:该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。计算周边元素个数的方式是当给av加一个值时,则k加1。k也可用2*N+2*N-4求得。

  • 第16题:

    阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    编写一个函数,输入为偶数时,调用函数求1/2+?/+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n (利用指针函数)。

    [函数]

    include "stdio. h",

    main()

    {

    float peven (),podd (),dcall ();

    float sum;

    int n;

    while (1)

    {

    scanf("%d",&n);

    if (n>1)

    break;

    }

    if(n%2==0)

    {

    printf("Even="):

    (1);

    }

    else

    {

    pfinff("Odd=");

    (2);

    }

    printf("%f",sum);

    }

    float peven (int n)

    {

    float s;

    int i

    s=1;

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

    (3);

    return (s);

    }

    float podd (n)

    int n;

    {

    float s;

    int i;

    s=0;

    for(i=1 i<=n;i+=2)

    (4);

    return (s);

    }

    float dcall(fp,n)

    float (*fp) ();

    int n;

    {

    float s;

    (5);

    returu (s);

    }


    正确答案:(1)array+10 (2)array+1 (3)*p>*max (4)k=*max (5)*p=array[0]
    (1)array+10 (2)array+1 (3)*p>*max (4)k=*max (5)*p=array[0]

  • 第17题:

    若有以下函数首部: int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是( )。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.int fun(double*, int*);


    正确答案:D
    解析:本题中的fun函数有两个参数,一个类型是double型一维数组,另—个是int型指针。而在C语言中,一维数组用作函数参数和该数组元素的指针类型是等价的。所以本题的正确答案是选项D。

  • 第18题:

    以下函数的功能是:求x的y次方,请填空。double fun(double x,int y){ int i; double z; for(i=1,z=x;i<y;i++) z=z*; return z;}


    正确答案:x
    本题中函数的功能是累积变量以求得变量的y次方,所以本题答案为x。

  • 第19题:

    请编写函数fun(),其功能是:计算并输出给定10个数的方差。

    其中

    例如,给定的10个数为95.0,89.0,76.0,65.0,88.0, 72.0,85.0,81.0,90.0,56.0,则输出为S=11.730729。

    注意;部分源程序给出如下.

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

    试题程序:

    include<math.h>

    include<stdio.h>

    double fun(double x[10])

    {

    }

    main()

    {

    double s,x[i0]={95.0,89.0,76.0,65.0,

    88.0,72.0,85.0,81.0,90.0,56.0};

    int i;

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

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

    printf("%6.1f ",x[i]);

    printf("\n\n ");

    s=fun(x);

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

    }


    正确答案:double fun(double x[10]) { double xl=0.0s=0.0; int i; for(i=0;i10;i++) xl=xl+x[i]; xl-xl/10;                        /*求10个数的平均值*/ for(i=0;il0;i++) s=s+(x[i]-xl)*(x[i]-x1); return sqrt(s/l0);                    /*求10个数的方差*/ }
    double fun(double x[10]) { double xl=0.0,s=0.0; int i; for(i=0;i10;i++) xl=xl+x[i]; xl-xl/10;                        /*求10个数的平均值*/ for(i=0;il0;i++) s=s+(x[i]-xl)*(x[i]-x1); return sqrt(s/l0);                    /*求10个数的方差*/ } 解析:又是一道算式表达题,程序中用第1个循环来完成求10个数的总和,接着再用x1=x1/10来求出平均值。

  • 第20题:

    以下sum函数的功能是计算下列级数之和:

    请给函数中的各变量正确赋初值。

    double sum(douLle x,int n)

    { int i;

    double a,b,s;

    【 】

    for(i=1;i<=n;i++) {a=a*x;b=b*i;s=s+a/b;}

    return s;

    }


    正确答案:a=1.0;b=1.0;s=1.0;
    a=1.0;b=1.0;s=1.0; 解析:各种数值型数据间进行混合运算时,不同类型的数据要先转换成同一类型,再进行运算。本题的结果为double型。

  • 第21题:

    请编写函数fun(),该函数的功能是:计算并输出

    S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)

    例如,若主函数从键盘给n输入20后,则输出为

    s=534.188884。

    注意;部分源程序给出如下。

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

    试题程序:

    include <math. h>

    include <stdio. h>

    double fun(int n)

    {

    }

    main()

    {

    int n;

    double s;

    printf("\n\nInput n: ");

    scanf ("%d", &n);

    s=fun (n)

    printf ("\n\ns=%f\n\n", s);

    }


    正确答案:double fun(int n) { int i; double s=0.0s1=0.0; for(i=1;i=n; i++) {s1=s1+pow(i0.5); /*求每—项*/ s=s+s1; /*按公式求出s*/ } return s; }
    double fun(int n) { int i; double s=0.0,s1=0.0; for(i=1;i=n; i++) {s1=s1+pow(i,0.5); /*求每—项*/ s=s+s1; /*按公式求出s*/ } return s; } 解析:我们先用数学的思路读懂该程序,并用1个字符表示“()”内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5次方(它还是1),第2项相当于第1项的值加上200.5次方,第3项相当于第2项的值加上30.5次方,…,依次类推。函数pow (x,y)的功能是求出x的y次方,该函数已在库函数math. h>中定义(即可直接使用)。要程序中用s来表示总的结果,每1次循环加1次s1即加1项。

  • 第22题:

    请补充函数fun(),该函数的功能是:输出一个N×N矩阵,N由键盘输入,矩阵元素的值为随机数,并计算出该矩阵四周边元素的平均值,结果由函数返回。例如:当N=4时:

    注章:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

    试题程序;

    include<stdio.h>

    include<conio.h>

    include<stdlib.h>

    define N 20

    double fun(int a[ ][N],int n)

    {

    int i,j;

    int k;

    double s=0.0;

    double aver=0.0;

    printf("*****The array*****\n");

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

    {

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

    {

    a[i][j]=rand()%10;

    printf("%4d",a[i][j]);

    if(【 】)

    s+=a[i][j];

    }

    printf("\n");

    }

    k=【 】;

    aver=【 】;

    return aver;

    }

    main( )

    {

    int a[N][N];

    int n;

    double S;

    Clrscr( );

    printf("*****Input the dimension Of array N*****\n");

    scanf(“%d”,&n);

    S=fun(a,n);

    printf(“***** THE RESULT *****\n”);

    printf(“The average is %2,3f\n”,S);

    }


    正确答案:i==0||i==n-1||j==0||j==n—1 4*n-4 s/k
    i==0||i==n-1||j==0||j==n—1 4*n-4 s/k 解析:第一空:用二维数组表示n×n矩阵时,周边元素是行下标为0或n-1,列下标为0或n-1的元素,判断时四个条件中只要有一个条件满足,则该元素就是周边元素,所以用“厂运算符。第二空:变量k记录周边元素的个数,在四个顶角上的元素会重复加入,所以要减去4。第三空:变量s保存周边元素的累加和,平均值等于周边元素的累加和除以个数。

  • 第23题:

    单选题
    若有以下函数首部int fun(double x[10],int*n)则下面针对此函数的函数声明语句中正确的是(  )。
    A

    int fun(double*,int*);

    B

    int fun(double,int);

    C

    int fun(double *x,int n);

    D

    int fun(double x,int*n);


    正确答案: C
    解析:
    函数声明应该和函数调用的参数保持一致,声明时的参数(形参)名字可以省略,数组在参数传递过程中变成指针。答案选择A选项。