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

一、程序填空题

在此程序中,函数fun的功能是:将形参s所指字符串中下标为奇数的字符取出,并按ASCII码大小递增排序,将排序后的字符存入形参p所指字符数组中,形成一个新串。

例如,形参s所指的字符为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。

#include    <stdio.h>

void fun(char  *s, char  *p)

{  int  i, j, n, x, t;

   n=0;

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

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

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

      ___1___;

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

      for(j=___2___+2 ; j<n; j=j+2)

        if(s[t]>s[j]) t=j;

      if(t!=i)

      {  x=s[i]; s[i]=s[t]; s[t]=x; }

   }

   for(i=1,j=0; i<n; i=i+2, j++)  p[j]=s[i];

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

   p[j]=___3___;

}

void main()

{  char  s[80]="baawrskjghzlicda", p[50];

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

   fun(s,p);

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

}

答案:(1) t=i (2) i+2 (3) '\0'

二、程序修改题

在此程序中,函数fun的功能是:用下面公式求n的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。

例如,程序运行后,输入0.0001,则程序输出3.1414。

#include <math.h>

#include <stdio.h>

float fun ( float num )

{   int s ;

    float n, t, pi ;

    t = 1 ; pi = 0 ; n = 1 ;  s = 1 ;

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

    while(t >= num)

    {

        pi = pi + t ;

        n = n + 2 ;

        s = -s ;

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

        t = s % n ;

    }

    pi = pi * 4 ;

    return pi ;

}

void main( )

{   float n1, n2 ;

    printf("Enter a float number: ") ;

    scanf("%f", &n1) ;

    n2 = fun(n1) ;

    printf("%6.4f\n", n2) ;

}

答案:(1) while(fabs(t) >= num) (2) t = s/n ;

三、程序设计题

在此程序中,编写函数fun,其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指数组中,n中存指定的下标。

例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。

#include <stdio.h>

#include <string.h>

#define LEN 20

void fun (char a[], char b[], int n)

{

}

void main( )

{   char str1[LEN], str2[LEN] ;

    int n ;

    void NONO (  );

    printf("Enter the string:\n") ;

    gets(str1) ;

    printf("Enter the position of the string deleted:") ;

    scanf("%d", &n) ;

    fun(str1, str2, n) ;

    printf("The new string is: %s\n", str2) ;

    NONO() ;

}

void NONO ( )

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

  char str1[LEN], str2[LEN] ;

  int i, n ;

  FILE *rf, *wf ;

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

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

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

    fscanf(rf, "%s %d", str1, &n) ;

    fun(str1, str2, n) ;

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

  }

  fclose(rf) ;

  fclose(wf) ;

}

答案:

int i,k=0;

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

if(i!=n)     

b[k++]=a[i];

b[k]='\0';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值