计算机二级考试C 语言试题10

时间:2011-09-20 13:19:31

微信搜索关注"91考试网"公众号,领30元,获取事业编教师公务员等考试资料40G

10输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。

 

方法:在主函数中调用一个max_4函数来求4个整数中的最大数。然后在max_4函数中再调用一个max_2函数来求2个整数中的最大数。最后在主函数中输出结果。

 

#include <stdio.h>

 

void main()

 

{

 

    int max_4(int a,int b,int c,int d);  /* max_4函数的声明 */

 

    int a,b,c,d,max;

 

    printf("Please enter 4 interger numbers:");

 

    scanf("%d %d %d %d ",&a,&b,&c,&d);

 

    max=max_4(a,b,c,d);                    /* 调用max_4函数 */

 

    printf("max=%d n",max);

 

} 

 

int max_4(int a,int b,int c,int d)  /* max_4函数的定义 */

 

{int max_2(int,int);  /* max_2函数的声明 */

 

 int m;

 

 m=max_2(a,b);    /* 调用max_2函数 */

 

 m=max_2(m,c);   /* 调用max_2函数 */

 

 m=max_2(m,d);   /* 调用max_2函数 */

 

 return(m);     /* 函数返回值是4个数中的最大者 */

 

}

 

int max_2(int a,int b)          

 

{if(a>b)

 

   return a;             

 

 else

 

 return b;      /* 函数返回值是ab中的大者 */

 

}               运行结果:Please enter 4 interger numbers:11 45 –54 0       max=45

 

11用递归方法求n!

 

求n!也可以用递归方法,即5!等于4!×5,而4!=3!×4…1!=1。

 

可用下面的递归公式表示:

 

 n!= (n=0,1)

 

       n·(n-1)!     (n>1)

 

程序如下:

 

 #include <stdio.h>

 

void  main()

 

 {long fac(int n);                /* fac函数的声明 */

 

  int n;

 

  long y;

 

  printf("input an integer number:");

 

  scanf("%d",&n);

 

  y=fac(n);

 

  printf("%d!=%ldn",n,y);

 

}

 

long fac(int n)                       /* 定义fac函数 */  

 

 {

 

  long f;

 

  if(n<0)

 

        printf("n<0,data error!");

 

  else if(n==0||n==1)                      运行结果:Input an integer number10

 

        f=1;                                           10!=3628800

 

  else  f=fac(n-1)*n;

 

     return(f);

 

 }

 

12有两个数组a和b,各有10个元素,将它们对应地逐个相比(即a[0]与b[0]比,a[1]与b[1]比……)。如果a数组中的元素大于b数组中的相应元素的数目多于b数组中元素大于a数组中相应元素的数目(例如,ai>bi6次,bi>ai3次,其中i每次为不同的值),则认为a数组大于b数组,并分别统计出两个数组相应元素大于、等于、小于的次数。

 

void main()

 

   int large(int xint y)         /*  函数声明 */

 

       int [10],[10],i,n=0,m=0,k=0

 

       printf”enter array a:n”);

 

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

 

       scanf(”%d”,&a[i])

 

        printf”n”);

 

        printf” enter array b:n”);

 

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

 

       scanf(”%d”,&b[i])

 

        printf”n”);

 

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

 

           {  if(large ([i],[i] )== 1)  n=n+1

 

              else if( large ([i],[i] )==0) m=m+1

 

                  else k=k+1}

 

    printf("a[i]>b[i] %d timesna[i]=b[i] %d 

 

             timesna[i]<b[i] %d timesn",n,m,k);

 

if(n>k) printf("array a is larger than array bn");

 

    else if (n<k) printf("array a is smaller than array bn");

 

         else  printf("array is equal to array bn");

 

 

largeint  xint  y

 

{  int  flag

 

   ifx>yflag=1;

 

 else ifx<yflag=-1;

 

  else flag=0;

 

   returnflag);

 

 

运行情况如下:

 

     enter array a 1 3 5 7 9 8 6 4 2 0     

 

enter array b5 3 8 9 –1 –3 5 6 0 4

 

      a[i]>b[i] times

 

      a[i]=b[i] times

 

      a[i]<b[i] times

 

      array a is smaller thann array b

 


微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G
【省市县地区导航】【考试题库导航】

电脑版  |  手机版  |  返回顶部