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

本文介绍了两个C语言程序,分别涉及数组的输出和数值处理。第一个程序实现了一个函数,用于按行打印数组的前n个元素,每行显示5个数。第二个程序实现了一个中值替换算法,遍历数组,每次取三个连续数,找到中值并替换中间元素,最后输出处理后的数组。这些程序展示了基本的数组操作和数值比较技巧。

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

一、程序填空题

在此程序中,函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。

#include  <stdio.h>

#include  <stdlib.h>

void fun( int *a,  int n )

{  int  i;

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

   {

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

     if( ___1___==0 )

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

           printf("___2___");

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

      printf("%d  ",___3___);

   }

}

void main()

{  int  a[100]={0}, i,n;

   n=22;

   for(i=0; i<n;i++) a[i]=rand()%21;

   fun( a, n);

   printf("\n");

}

答案:(1) i%5 (2) \n (3) a[i]

二、程序修改题

在此程序中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该数组对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。

例如,有10个正整数如下:

#include  <stdio.h>

#define   N   10

int findmid(int  a, int  b, int  c)

{  int  t;

   t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));

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

   return  b;

}

void fun(int  x[])

{  int  i,a,b,c,t[N];

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

   for(i=0;i<N;i++) t[i]=x[i]

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

   {  a=t[i];b=t[i+1];c=t[i+2];

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

      t[i+1]=findmid(a,b,c);

   }

}

void main()

{  int  i, x[N]={6,5,7,23,18,5,8,21,45,38};

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

   printf("\n");

   fun(x);

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

   printf("\n");

}

答案:(1) return  t; (2) for(i=0;i<N;i++) t[i]=x[i]; (3) x[i+1]=findmid(a,b,c);

三、程序设计题

在此程序中,编写函数fun,函数的功能是查找x在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回-1。

#include  <stdio.h>

#include  <stdlib.h>

#define   N   15

void NONO();

int  fun( int *s, int x)

{

}

void main()

{  int a[N]={ 29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;

   printf("a数组中的数据 :\n");

   for(i=0; i<N; i++) printf("%4d",a[i]);  printf("\n");

   printf("给x输入待查找的数 :  ");   scanf("%d",&x);

   index=fun( a, x );

   printf("index=%d\n",index);

   NONO();

}

void NONO()

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

  FILE *fp, *wf ;

  int i, j, a[10], x, index;

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

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

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

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

      fscanf(fp, "%d ", &a[j]);

    }

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

    index = fun(a, x);

    fprintf(wf, "%d\n", index);

  }

  fclose(fp);

  fclose(wf);

}

答案:

int i;

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

if(x==s[i]) return i;

return -1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值