C期末题库2

1

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:把20个随机数存入一个数组,然后输出该数组中的
      最小值。其中确定最小值的下标的操作在fun函数中
      实现,请给出该函数的定义。
*********Begin**********和**********  End  **********不可删除

     
------------------------------------------------*/

#include "stdio.h"
#include "stdlib.h"
#define VSIZE 20     
  
int vector[VSIZE] ;     

int fun(int list[],int size)     
{
  /*********Begin**********/
  
  
  
  
  
  
  /**********  End  **********/     
  
} 

main()     
{     
  int i;     
  void NONO();     
  for (i=0;i<VSIZE;i++)
  {
    vector[i]=rand();     
    printf("Vector[%d]=%6d\n",i,vector[i]);     
  }     
  i=fun(vector,VSIZE);     
  printf("\nMininum: Vector[%d]=%6d\n",i,vector[i]);
  
  NONO();
     
}     

void NONO()     
{     
  int i,t;
  FILE *fp ;     
  fp = fopen("out.dat", "w") ;
  for (i=0;i<VSIZE;i++)
  {
    fprintf(fp,"Vector[%d]=%6d\n",i,vector[i]);
  }     
  t=fun(vector,VSIZE);
  fprintf(fp,"\nMininum: Vector[%d]=%6d\n",t,vector[t]);
  fclose(fp) ;     
}  

答案

int i,min=0;     
for(i=1; i <size; i++)
 if(list[min]>list[i])     
 min=i;     
return min;

2

/*------------------------------------------------
【程序设计】
--------------------------------------------------

题目:编写函数fun,函数的功能是:求5行5列矩阵的
      主、副对角线上元素之和。注意,两条对角线
      相交的元素只加一次。
      例如:主函数中给出的矩阵的两条对角线的和为45。

--------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main和其
      它函数中的任何内容,仅在函数fun的花括号中填
      入所编写的若干语句。
*********Begin**********和**********  End  **********不可删除

------------------------------------------------*/
#include "stdio.h"
#define M 5
int fun(int a[M][M])
{

/*********Begin**********/






/**********  End  **********/

}

main()
{
int a[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}};
int y;
y=fun(a);
printf("s=%d\n",y);
TestFunc();
}
TestFunc()
{
FILE *IN,*OUT;
int iIN[M][M],iOUT;
int i,j,k;
IN=fopen("16.in","r");
if(IN==NULL)
{printf("Please Verify The Currernt Dir..It May Be Changed");
}
OUT=fopen("16.out","w");
if(OUT==NULL)
{printf("Please Verify The Current Dir.. It May Be Changed");
}
for(k=0;k<10;k++)
{  for(i=0;i<M;i++)
   for(j=0;j<M;j++)
        fscanf(IN,"%d",&iIN[i][j]);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}

答案

int s=0;
   int i,j;
   for(i=0;i<M;i++)
   s=s+a[i][i]+a[i][M-1-i];
   s=s-a[(M-1)/2][(M-1)/2];
   return s;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值