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

本文介绍了两个C语言程序,第一个程序在字符串中每个数字字符后插入星号,第二个程序计算特定公式并输出结果。此外,还提供了一个函数用于将矩阵A加上A的转置并存储在矩阵B中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、程序填空题

在此程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。

例如,形参s所指字符串为”def35adh3kjsdf7”,执行后结果为”def3*5*adh3*kjsdf7*”。

#include     <stdio.h>

void fun(char  *s)

{  int  i, j, n;

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

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

     if(s[i]>='0' ___1___ s[i]<='9')

     {  n=0;

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

        while(s[i+1+n]!= ___2___)  n++;

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

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

           s[j+1]= ___3___;

        s[j+1]='*';

        i=i+1;

     }

}

void main()

{  char  s[80]="def35adh3kjsdf7";

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

   fun(s);

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

}

答案:(1) && (2) 0 (3) s[j]

二、程序修改题

在此程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。

例如,若m的值为5,则应输出1.463611。

#include <stdio.h>

double  fun ( int   m )

{ double  y = 1.0 ;

   int i;

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

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

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

      y += 1 / (i * i) ;

   return( y ) ;

}

void main( )

{  int n = 5 ;

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

}

答案:(1) for(i = 2 ; i <= m ; i++) (2) y += 1.0 / (i * i) ;

三、程序设计题

在此程序中,编写函数fun,其功能是:实现B=A+A’,即将矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

例如,输入下面的矩阵:其转置矩阵为:

程序输出:

#include <stdio.h>

void  fun ( int a[3][3], int b[3][3])

{

}

void main( )   /* 主程序 */

{  int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;

   int i, j ;

   void NONO (  );

   fun(a, t) ;

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

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

        printf("%7d", t[i][j]) ;

      printf("\n") ;

   }

   NONO () ;

}

void NONO ( )

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

  int i, j, k, a[3][3], t[3][3] ;

  FILE *rf, *wf ;

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

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

  for(k = 0 ; k < 5 ; k++) {

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

      fscanf(rf, "%d %d %d", &a[i][0], &a[i][1], &a[i][2]) ;

    fun(a, t) ;

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

      for(j = 0 ; j < 3 ; j++) fprintf(wf, "%7d", t[i][j]) ;

      fprintf(wf, "\n") ;

    }

  }

  fclose(rf) ;

  fclose(wf) ;

}

答案:

int i,j;

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值