二级C语言操作例题(四十)

一、程序填空题

在此程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。

例如,若s所指字符串”baacda”,中c的字符为a,执行后s所指字符串为”baaaacdaa”。

#include    <stdio.h>

void fun(char  *s, char  c)

{  int  i, j, n;

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

  for(i=0; s[i]!=___1___ ; i++)

     if(s[i]==c)

     {

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

        n=___2___ ;

        while(s[i+1+n]!='\0')  n++;

        for(j=i+n+1; j>i; j--)  s[j+1]=s[j];

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

        s[j+1]=___3___ ;

        i=i+1;

     }

}

void main()

{  char  s[80]="baacda", c;

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

   printf("\nInput a character:  ");  scanf("%c",&c);

   fun(s,c);

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

}

答案:(1) 0 (2) 0 (3) c

二、程序修改题

在此程序中,主函数从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。

例如,数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。

#include <stdio.h>

double fun ( int x[])

{

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

  int sum = 0.0;

  int c=0, i=0;

  while (x[i] != 0)

  { if (x[i] > 0) {

       sum += x[i]; c++; }

    i++;

  }

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

  sum \= c;

  return sum;

}

void main( )

{  int x[1000];  int i=0;

   printf( "\nPlease enter some data (end with 0): " );

   do

     {  scanf("%d", &x[i]);  }

   while (x[i++] != 0);

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

}

答案:(1) double sum = 0.0; (2) sum /= c;

三、程序设计题

在此程序中,编写函数fun,其功能是:根据以下公式计算s,并计算结果作为函数值返回,n通过形参传入。

例如,若n的值为11时,函数的值为1.833333。

#include <stdio.h>

float fun(int  n)

{

}

void main()

{  int n; float s;

   void NONO (  );

   printf("\nPlease enter N:"); scanf("%d", &n);

   s = fun(n);

   printf("the result is: %f\n", s);

   NONO();

}

void NONO (  )

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

  FILE *fp, *wf ;

  int i, n ;

  float s;

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

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

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

    fscanf(fp, "%d", &n) ;

    s = fun(n) ;

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

  }

  fclose(fp) ;

  fclose(wf) ;

}

答案:

int i,s1=0;

float s=0.0;

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

{s1=s1+i;        /*求每一项的分母*/

s=s+1.0/s1;     /*求多项式的值*/

}

return s;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值