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

该博客包含三个程序题目,分别涉及幻方判定、数学公式的计算以及删除字符串中的空格。在幻方判定中,函数检查矩阵每行、每列、主对角线和副对角线的元素和是否相等;在公式计算题中,函数计算给定整数的特定数学公式;最后,程序设计题则要求编写一个函数来移除字符串中的所有空格。

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

一、程序填空题

在此程序中,函数fun的功能是:判定形参a所指的N*N(规定N为奇数)的矩阵是否是”幻方”,若是,函数返回值为1;若不是,函数返回值为0。”幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

例如,以下3*3的矩阵就是一个”幻方”:

#include  <stdio.h>

#define   N   3

int fun(int  (*a)[N])

{ int  i,j,m1,m2,row,colum;

  m1=m2=0;

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

  { j=N-i-1;  m1+=a[i][i];  m2+=a[i][j];  }

  if(m1!=m2) return  0;

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

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

     row=colum= __1__;

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

     {  row+=a[i][j];  colum+=a[j][i];  }

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

     if( (row!=colum) __2__ (row!=m1) ) return 0;

  }

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

  return  __3__;

}

void main()

{ int  x[N][N],i,j;

  printf("Enter number for array:\n");

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

    for(j=0; j<N; j++)  scanf("%d",&x[i][j]);

  printf("Array:\n");

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

  {  for(j=0; j<N; j++)  printf("%3d",x[i][j]);

     printf("\n");

  }

  if(fun(x)) printf("The Array is a magic square.\n");

  else printf("The Array isn't a magic square.\n");

}

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

二、程序修改题

在此程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。

例如,若输入5,则应输出-0.283333。

#include  <stdlib.h>

#include  <conio.h>

#include  <stdio.h>

double fun(int m)

{

  double t=1.0;

  int i;

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

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

      t=1.0-1/i;

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

           ;

}

void main()

{int m;

 system("CLS");

 printf("\nPlease enter 1 integer numbers:\n");

 scanf("%d",&m);

 printf("\n\nThe result is %1f\n",

 fun(m));

}

答案:(1) t-=1.0/i; (2) return t;

三、程序设计题

在此程序中,编写一个函数,用来删除字符串中的所有空格。

例如,输入asd af aa z67,则输出为asdafaaz67。

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <stdlib.h>

void fun (char *str)

{

  

}

void main()

{

  char str[81];

  char Msg[]="Input a string:";

  int n;

  FILE *out;

  printf(Msg);

  gets(str);

  puts(str);

  fun(str);

  printf("*** str: %s\n",str);

  /******************************/

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

  fun(Msg);

  fprintf(out,"%s",Msg);

  fclose(out);

  /******************************/

}

答案:

int i=0;

char *p=str;

while(*p)

{

if(*p!=' ')               /*删除空格*/

{

str[i]=*p;

i++;

}

p++;

}

str[i]='\0';                   /*加上结束符*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值