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

一、程序填空题

在此程序中,函数fun的功能是:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计符合条件的字符个数作为函数值返回。

例如,形参s所指的字符串为:Abc@1x56*,程序执行后t所指字符数组中的字符串应为A@156*。

#include  <stdio.h>

int fun(char  *s, char  *t)

{ int  n=0;

  while(*s)

  { if(*s < 97) {

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

     *(t+n)= __1__ ;  n++;  }

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

     __2__ ;

  }

  *(t+n)=0;

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

  return  __3__ ;

}

void main()

{ char  s[81],t[81];    int  n;

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

  n=fun(s,t);

  printf("\nThere are %d letter which ASCII code is less than 97: %s\n",n,t);

}

答案:(1) *s (2) s++ (3) n

二、程序修改题

在此程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。

例如,n=8时,输出193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763。所得平均值为195.838745,在平均值以上的实数个数应为5。

#include  <stdlib.h>

#include  <conio.h>

#include  <stdio.h>

int fun(float x[], int n)

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

   int j, c=0; float xa=0.0;

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

     xa += x[j]/n;

   printf("ave =%f\n",xa);

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

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

     if (x[j] => xa)

       c++;

   return c;

}

void main ()

{float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763};

 system("cls");   

 printf("%d\n", fun (x, 8));

}

答案:(1) {int j, c=0; float  xa=0.0; (2) if(x[j]>=xa)

三、程序设计题

在此程序中,编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。

例如,m=12,n=8时,运行结果为495.000000。

#include <stdio.h>

float  fun(int m, int n)

{

}

void main()   /* 主函数 */

{  void NONO ();

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

   NONO();

}

void NONO ()

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

  FILE *fp, *wf ;

  int i, m, n ;

  float s;

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

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

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

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

    s = fun(m, n) ;

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

  }

  fclose(fp) ;

  fclose(wf) ;

}

答案:

float p1=1,p2=1,p3=1;

int i;

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

p1*=i;

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

p2*=i;

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

p3*=i;

return p1/(p2*p3);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值