计算机二级C语言的注意事项及相应真题-4-程序填空

发布时间:2024年01月22日

31.对整数倒序输出

给定程序BLANK1.C中函数fun的功能是:将整数n的值进行逆序转换,其结果通过函数值返回。

例:输入: 123,则输出:321

输入: -810,则输出:-18

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include <stdio.h>

int fun(int n)
{
    int m, y;
    y = 0;
    if (n >= 0)//他这里把n为正数和负数作两种处理了
        m = n;
    else
        m = -n;//若为负数先转为正数进行倒序处理
    while (m != 0) {//m为0时跳出循环
/**********found**********/
        y = ____(1)____ + m % 10;//倒序处理,也就是取余先得到的数后面在循环进位
/**********found**********/
        m = ____(2)____//每次循环去掉被取余的数
    }
    y = (n >= 0) ? y : -y;//对于前面的还原处理
/**********found**********/
    ____(3)____//把经过倒序处理的数返回main函数
}
int main()
{
    int m1, m2;
    scanf("%d %d", &m1, &m2);
    printf("%d的逆向是%d\t", m1, fun(m1));
    printf("%d的逆向是%d\n", m2, fun(m2));
    return 0;
}

解题思路:
简单的对整数进行倒序处理的程序,如果数过大,这段代码就不适用了,就要用字符数组存储数据

答案:

#include <stdio.h>

int fun(int n)
{
    int m, y;
    y = 0;
    if (n >= 0)
        m = n;
    else
        m = -n;
    while (m != 0) {
/**********found**********/
        y = y*10 + m % 10;
/**********found**********/
        m = m/10;
    }
    y = (n >= 0) ? y : -y;
/**********found**********/
    return y;
}
int main()
{
    int m1, m2;
    scanf("%d %d", &m1, &m2);
    printf("%d的逆向是%d\t", m1, fun(m1));
    printf("%d的逆向是%d\n", m2, fun(m2));
    return 0;
}

测试:

输入:

123 -810

输出:

123的逆向是321	-810的逆向是-18


32.

函数fun的功能是:计算

直到
。若x=2.5,函数值为: 1.917915。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include   <stdio.h>
#include   <math.h>
#pragma warning (disable:4996)
double fun(double  x)
{  double  f, t;      int  n;
   f = 1.0 + x;//f就是最后要得出的函数值,这里初始已经加上了第0项和第1项
/**********found**********/
   t = ___1___;//t是每一项
   n = 1;//n就是题目中公式的n
   do {
      n++;
/**********found**********/
      t *= (-1.0)*x/___2___;//这个空你看下面的解题思路的图,应该就懂了
      f += t;
   }
/**********found**********/
    while (___3___ >= 1e-6);//t是double类型的要用fabs()
   return  f;
}
main()
{   double x, y;
   x=2.5;
   y = fun(x);
   printf("\nThe result is :\n");
   printf("x=%-12.6f y=%-12.6f\n", x, y);
}

解题思路:
要注意在do-while循环的限制条件,也就是第三个空,题目要求的是绝对值的项与10-6比较

讲一下绝对值函数:
int abs(int t) //对int类型的做绝对值处理

long labs(long int t) //对长整型的

double fabs(double t) //对浮点类型的,float也是这个

在题目的公式中可以看出

这个图中的变化就是代码中do-while循环中的 t 的变化
看这个图应该就能理解代码中的do-while循环了

答案:

#include   <stdio.h>
#include   <math.h>
#pragma warning (disable:4996)
double fun(double  x)
{  double  f, t;      int  n;
   f = 1.0 + x;
/**********found**********/
   t = x;
   n = 1;
   do {
      n++;
/**********found**********/
      t *= (-1.0)*x/n;
      f += t;
   }
/**********found**********/
    while (fabs(t) >= 1e-6);
   return  f;
}
main()
{   double x, y;
   x=2.5;
   y = fun(x);
   printf("\nThe result is :\n");
   printf("x=%-12.6f y=%-12.6f\n", x, y);
}

测试:

输出:


The result is :
x=2.500000     y=1.917915    


33.

给定程序中,N名学生的数据已存入类型为STU的结构体数组,函数fun的作用是:计算出

N名学生的平均成绩,将高于平均分的学生的学号存入p所指的存储单元中,高于平均分的人数由函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在文件BLANK1. C中,不得增行或删行,也不得更改程序的结构!

BLANK1. C:

#include <stdio.h>
#include <string.h>
#define N 6
typedef struct
{ char num[5];
  double s;
} STU;

int fun(STU x[N], char p[][5])
{
  int n=0,i;
  double ave=0.0;
  for(i=0; i<N; i++) 
/**********found**********/
        ave+= ____(1)____;//累加所有学生成绩
  ave/=N;//除以学生数得平均成绩
  for(i=0; i<N; i++)
/**********found**********/
       if(x[i].s ____(2)____) //筛出大于平均分的学生
         {
             strcpy(p[n],x[i].num);//字符串复制
/**********found**********/
              ____(3)____;//数组p后移
         }
    return(n); 
}
 main()
{ int i,k;
 STU a[N]={ "z100",78,"z101",92,"z102",77,"z103",87,"z104",66,"z105",85};
 char b[N][5];
 k=fun(a,b);
 for(i=0; i<k;i++)
        puts(b[i]);
}

解题思路:
还好,没什么难点ヾ(?ω?`)o
strcpy(x,y) :记住是字符串y复制给x就好了

答案:

#include <stdio.h>
#include <string.h>
#define N 6
typedef struct
{ char num[5];
  double s;
} STU;

int fun(STU x[N], char p[][5])
{
  int n=0,i;
  double ave=0.0;
  for(i=0; i<N; i++) 
/**********found**********/
        ave+= x[i].s;
  ave/=N;
  for(i=0; i<N; i++)
/**********found**********/
       if(x[i].s >ave) 
         {
             strcpy(p[n],x[i].num);
/**********found**********/
              n++;
         }
    return(n); 
}
 main()
{ int i,k;
 STU a[N]={ "z100",78,"z101",92,"z102",77,"z103",87,"z104",66,"z105",85};
 char b[N][5];
 k=fun(a,b);
 for(i=0; i<k;i++)
        puts(b[i]);
}

测试:

输出:

z101
z103
z105


34.求解平方根(也可以理解为sqrt()函数的实现)

给定程序BLANK1. C中主函数的功能是:输入一个实数a,根据迭代公式x1= (x0+a/x0)/2,计算并输出其平方根。要求误差不超过1e-6 (即0. 000001)。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

BLANK1. C:

#include  <stdio.h>
main( )
{
	double a,x0,x1;
	printf("输入一个实数, 本程序计算并输出其平方根\n");
	do
/**********************found***********************/
	____(1)____//这里应该一眼就看得出是接收输入的
	while(a<=0);//当输入的a大于0时跳出循环
	x1=a/2.0;
	do
	{
/**********************found***********************/
		____(2)____//更新猜测值x0
		x1=(x0+a/x0)/2.0;
/**********************found***********************/
	}while((x1-x0)>1e-6  ____(3)____  );//误差不超过1e-6,应该是|x1-x0|>1e-6,这里先给出了正的差值,还有个负的差值留了个空
	printf("%f 的平方根是 %f\n",a,x1);
}

解题思路:
题目给的代码中使用了牛顿迭代法,
其实求解平方根可以这么想,我们希望找到一个数 x,使得 x * x = a。牛顿迭代法的思想是通过不断改进猜测值x来逼近真实的平方根。
初始猜测值x一般设置为输入的数a的一半,因为对于大多数的数,它们的平方根通常接近于它们的一半,我们要改进猜测值,就需要基于初始猜测值的另一个猜测值x=a/x,
从x到a/x就是一个区间,真实的平方根就在区间内(包括两端),当x等于a/x也就是真实的平方根,
那么改进猜测值就是对猜测值x和猜测值a/x取平均值。通过取平均值,可以得到更接近真实平方根的新的猜测值x1

答案:

#include  <stdio.h>
main( )
{
	double a,x0,x1;
	printf("输入一个实数, 本程序计算并输出其平方根\n");
	do
/**********************found***********************/
	{scanf("%lf",&a);}
	while(a<=0);
	x1=a/2.0;
	do
	{
/**********************found***********************/
		x0=x1;
		x1=(x0+a/x0)/2.0;
/**********************found***********************/
	}while((x1-x0)>1e-6  ||(x0-x1)>1e-6  );//这里是或就行,只要有一个符合,也可以写||x1-x0<-1e-6
	printf("%f 的平方根是 %f\n",a,x1);
}

测试:

输入:

166

输出:

输入一个实数, 本程序计算并输出其平方根
166.000000 的平方根是 12.884099


35.

给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。

例如,有9个正整数: 1 5 7 23 87 5 8 21 45,按升序排列时的中间数为:8,处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include  <stdio.h>
#define    N    9
int fun(int  x[])
{  int  i,j,k,t,mid,b[N];
   for(i=0;i<N;i++) b[i]=x[i];
   for(i=0;i<=N/2;i++)
   {  k=i;
      for(j=i+1;j<N;j++) if(b[k]>b[j])  k=j;//选择排序
      if(k != i )
      {  
/**********found**********/
        t=b[i]; b[i]=___1___; b[k]=t;//交换赋值
      }
   }
/**********found**********/
   mid=b[___2___];//把按照升序排序的中间的数赋给mid
   for(i=0; i<N; i++)
/**********found**********/
     if(x[i] ___3___ mid) x[i]=mid;//把小于中间数mid的数组x的元素,赋mid
   return  mid;
}
main()
{  int  i, x[N]={1,5,7,23,87,5,8,21,45};
   for(i=0; i<N; i++)  printf("%d ",x[i]);
   printf("\nThe mid data is: %d\n",fun(x));
   for(i=0; i<N; i++)  printf("%d ",x[i]);
   printf("\n");
  getchar();
}

解题思路:
注意他这里并没有对原数组作排序,原数组仍旧是原来的顺序,不要理解错了

答案:

#include  <stdio.h>
#define    N    9
int fun(int  x[])
{  int  i,j,k,t,mid,b[N];
   for(i=0;i<N;i++) b[i]=x[i];
   for(i=0;i<=N/2;i++)
   {  k=i;
      for(j=i+1;j<N;j++) if(b[k]>b[j])  k=j;
      if(k != i )
      {  
/**********found**********/
        t=b[i]; b[i]=b[k]; b[k]=t;
      }
   }
/**********found**********/
   mid=b[N/2];
   for(i=0; i<N; i++)
/**********found**********/
     if(x[i] < mid) x[i]=mid;
   return  mid;
}
main()
{  int  i, x[N]={1,5,7,23,87,5,8,21,45};
   for(i=0; i<N; i++)  printf("%d ",x[i]);
   printf("\nThe mid data is: %d\n",fun(x));
   for(i=0; i<N; i++)  printf("%d ",x[i]);
   printf("\n");
  getchar();
}

测试:

输出:

1 5 7 23 87 5 8 21 45 
The mid data is: 8
8 8 8 23 87 8 8 21 45 


36.找出字符串中出现频率最高的字母(不区分大小写)

给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。

例如,形参s所指的字符串为: abcAbsmaxless,程序执行后的输出结果为:

letter 'a’: 3 times

letter 's’: 3 times

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include  <stdio.h>
#include  <string.h>
#include  <ctype.h>
void fun(char  *s)
{ int  k[26]={0},n,i,max=0;    char  ch;
  while(*s)
  { if( isalpha(*s) ) {
/**********found**********/
      ch=tolower(__1__);//这个函数看不懂没事,看数组k应该知道存储的是26字母出现频率,下面的n也就是数组序号,字符ch减去字符'a'得出字符ch的字母序,在对应序号的元素加1,题目说不区分大小写,所以这里这个函数是转化为小写字母
      n=ch-'a';
/**********found**********/
      k[n]+= __2__ ;//在对应序号的元素加1
    }
    s++;
/**********found**********/
    if(max<k[n]) max= __3__ ;//筛出出现频率最大值
  }
  printf("\nAfter count :\n");
  for(i=0; i<26;i++)
     if (k[i]==max) printf("\nletter  \'%c\' :  %d times\n",i+'a',k[i]);
}
main()
{ char  s[81];
  printf("\nEnter a string:\n\n");  gets(s);
  fun(s);
   getchar();
}

解题思路:
int tolower(char c) //把给定的字母转化为小写字母,如果 c 有相对应的小写字母,则该函数返回 c 的小写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。

这个函数不知道没关系,猜也猜得出来,注释有推断

既然有这个函数,那应该也有转化为大写字母:
int toupper(char c) //把给定得字母转化为大写字母,如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。

答案:

#include  <stdio.h>
#include  <string.h>
#include  <ctype.h>
void fun(char  *s)
{ int  k[26]={0},n,i,max=0;    char  ch;
  while(*s)
  { if( isalpha(*s) ) {
/**********found**********/
      ch=tolower(*s);
      n=ch-'a';
/**********found**********/
      k[n]+= 1 ;
    }
    s++;
/**********found**********/
    if(max<k[n]) max= k[n] ;
  }
  printf("\nAfter count :\n");
  for(i=0; i<26;i++)
     if (k[i]==max) printf("\nletter  \'%c\' :  %d times\n",i+'a',k[i]);
}
main()
{ char  s[81];
  printf("\nEnter a string:\n\n");  gets(s);
  fun(s);
   getchar();
}

测试:

输入:

abcAbsmaxless

输出:


Enter a string:


After count :

letter  'a' :  3 times

letter  's' :  3 times


37.判断回文数

给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome) ,若是,函数返回值为1;不是,函数返回值为0。"回文"是正读和反读都一样的字符串(不区分大小写字母)。

例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include  <stdio.h>
#include  <string.h>
#include  <ctype.h>
int fun(char  *s)
{ char  *lp,*rp;
/**********found**********/
  lp= __1__ ;//指向字符串开头,下面简称头指针
  rp=s+strlen(s)-1;//指向字符串末尾,下面简称尾指针
  while((toupper(*lp)==toupper(*rp)) && (lp<rp) ) {//将头指针和尾指针指向字符都转化为大写字母,相同且头指针地址小于尾指针进入循环
/**********found**********/
     lp++; rp __2__ ; }//头指针后移,尾指针前移
/**********found**********/
  if(lp<rp) __3__ ;//若尾指针地址大于头指针,则不是回文数,反之是
  else   return 1;
}
main()
{ char  s[81];
  printf("Enter a string:  ");  scanf("%s",s);
  if(fun(s)) printf("\n\"%s\" is a Palindrome.\n\n",s);
  else printf("\n\"%s\" isn't a Palindrome.\n\n",s);
  getchar();
}

解题思路:
这段代码用得是检测回文字符串的双指针法

int toupper(char c) //将字母转换为大写字母,如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。

答案:

#include  <stdio.h>
#include  <string.h>
#include  <ctype.h>
int fun(char  *s)
{ char  *lp,*rp;
/**********found**********/
  lp= s ;
  rp=s+strlen(s)-1;
  while((toupper(*lp)==toupper(*rp)) && (lp<rp) ) {
/**********found**********/
     lp++; rp -- ; }
/**********found**********/
  if(lp<rp) return 0 ;
  else   return 1;
}
main()
{ char  s[81];
  printf("Enter a string:  ");  scanf("%s",s);
  if(fun(s)) printf("\n\"%s\" is a Palindrome.\n\n",s);
  else printf("\n\"%s\" isn't a Palindrome.\n\n",s);
  getchar();
}

测试:

输入:

LEVEL

输出:

Enter a string:  
"LEVEL" is a Palindrome.



38.

围绕山顶一圈有N个山洞,编号为0、1、2、3、……、N-1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为0的洞)中找;再隔1个洞,即到编号为2的个洞中找;再隔2个洞,即到编号为5的洞中找;下次再隔3个洞;即到编号为9的洞中找;限定狐狸只找一圈,请为兔子指出所有不安全的洞号。例如n的值为30时,不安全的洞号是0、2、5、9、14、20、27。程序中用a数组元素模拟山洞,数组元素的下标即为洞号,数组元素中的值为0时,表示该洞安全,为1时表示该洞不安全。函数中变量t存放当前所隔洞数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

BLANK1.C:

#include   <stdio.h>
#define   N    100 
void  fun( int *a , int  n )
{  int  i, t;
   for( i=0; i<n; i++ )
/**********found**********/
     a[i]=__(1)__;//这里main函数数组a未初始化,从下面的while循环中a[i]=1,可看出这里初始化全部赋0
   i=0;  
/**********found**********/
   t=__(2)__;//t 就是不安全洞号的变化,
   while( i<n )//这个循环是筛出所有不安全洞号,赋为1
   {  a[i]= 1;//一开始 i 为0,是不安全洞号,赋为1,然后在循环中加上t,给后面的不安全洞号赋为
      t++;
/**********found**********/
      i=__(3)__;
   }
}
main()
{  int  a[N], i, n=30;//有n个山洞
   fun( a, n);
   for(i=0; i<n; i++)
     if( a[i]==1 )  printf("不安全的洞号是 :   %d\n",i );
  getchar();
}

解题思路:
这题主要是找出不安全洞号变化的规律,也没有什么坑,比较好做

答案:

#include   <stdio.h>
#define   N    100 
void  fun( int *a , int  n )
{  int  i, t;
   for( i=0; i<n; i++ )
/**********found**********/
     a[i]=0;
   i=0;  
/**********found**********/
   t=1;
   while( i<n )
   {  a[i]= 1;
      t++;
/**********found**********/
      i=i+t;
   }
}
main()
{  int  a[N], i, n=30;
   fun( a, n);
   for(i=0; i<n; i++)
     if( a[i]==1 )  printf("不安全的洞号是 :   %d\n",i );
  getchar();
}

测试:

输出:

不安全的洞号是 :   0
不安全的洞号是 :   2
不安全的洞号是 :   5
不安全的洞号是 :   9
不安全的洞号是 :   14
不安全的洞号是 :   20
不安全的洞号是 :   27


39.

给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中

均存入字符,函数fun()的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中

不得增行或删行,也不得更改程序的结构

BLANK1.C:

#include  <stdio.h>
typedef  struct  list
{  char  data;
   struct list  *next;
} Q;
void fun( Q *pa, Q *pb, Q *pc)//以三个指针参数收取传过来的值
{  Q  *p;
/**********found**********/
   pa->next=___1___;//结合下一句话,可以知道是要把这三个节点连起来,所以这里应该是把pb的地址存入pa的指针域
   pb->next=pc;
   p=pa;//上面三个节点连起来后也就成了链表,把头节点地址给p
   while( p )//遍历链表
   {
/**********found**********/
      printf("  %c",____2_____);//输出链表节点数据,
/**********found**********/
      p=____3____;//指针p后移
   }
   printf("\n");
}
main()
{  Q  a, b, c;//定义三个结构体变量,
   a.data='E';  b.data='F';  c.data='G';  c.next=NULL;//定义了a,b,c的数据域的值,c的指针域为空
   fun( &a, &b, &c );
  getchar();
}

解题思路:
主要是考链表的建立,还有定义,节点和结构体指针在输出成员时是一样的

答案:

#include  <stdio.h>
typedef  struct  list
{  char  data;
   struct list  *next;
} Q;
void fun( Q *pa, Q *pb, Q *pc)
{  Q  *p;
/**********found**********/
   pa->next=pb;
   pb->next=pc;
   p=pa;
   while( p )
   {
/**********found**********/
      printf("  %c",p->data);
/**********found**********/
      p=p->next;
   }
   printf("\n");
}
main()
{  Q  a, b, c;
   a.data='E';  b.data='F';  c.data='G';  c.next=NULL;
   fun( &a, &b, &c );
  getchar();
}

测试:

输出:

  E  F  G


40.统计偶数元素和奇数元素的个数,将统计结果以结构变量返回主函数

给定程序BLANK1.C中,函数fun的功能是:根据形参c中存储的整数序列,分别统计偶数
元素和奇数元素的个数,将统计结果以结构变量返回主函数,结构变量的类型由程序中定义的struct pair给出,它包含两个整数变量成员,依次对应偶数个数、奇数个数。形参d中存储的是序列的长度。

例如:若c中存储的数值依次为3,5, 14, 27, 12,d为5,则函数返回的结构变量中,第一个成员的值为2,第二个成员的值为3。主函数输出n1=2, n2=3。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!
BLANK1.C:

#include  <stdio.h>
struct pair {
	int n1, n2;
};

struct pair fun(int* c, int d) {//函数的返回值是结构体类型的
	int i;
/**********************found***********************/
	___(1)____;//总的看这个的函数的内容,你会发现缺少了定义结构体变量p
	p.n1 = p.n2 = 0;//结构体成员赋初值
/**********************found***********************/
	for (i=0; i<d; ____(2)____) {//for循环的表达式,嘛,在循环遍历中,i自增后移
		if (c[i] % 2 == 0)
			p.n1++;//计数偶数元素
		else
/**********************found***********************/
			____(3)____//计数奇数元素
	}
	return p;
}

int main( ) {
	int i, c[100], d;
	struct pair p;

	printf("请输入数值的个数:");
	scanf("%d", &d);

	printf("请输入%d个数值:", d);
	for (i = 0; i < d; i++)
	scanf("%d", &(c[i]));//不必在意这里c[i]多打了括号,这样也是可以,我们一般写的都是没打括号的

	p = fun(c, d);
	printf("n1=%d,n2=%d", p.n1, p.n2);
	return 0;
}

解题思路:
主要考查结构体变量定义,结构体成员的调用,没什么具有迷惑性的地方

答案:

#include  <stdio.h>
struct pair {
	int n1, n2;
};

struct pair fun(int* c, int d) {
	int i;
/**********************found***********************/
	struct pair p;
	p.n1 = p.n2 = 0;
/**********************found***********************/
	for (i=0; i<d; i++) {
		if (c[i] % 2 == 0)
			p.n1++;
		else
/**********************found***********************/
			p.n2++;
	}
	return p;
}

int main( ) {
	int i, c[100], d;
	struct pair p;

	printf("请输入数值的个数:");
	scanf("%d", &d);

	printf("请输入%d个数值:", d);
	for (i = 0; i < d; i++)
	scanf("%d", &(c[i]));

	p = fun(c, d);
	printf("n1=%d,n2=%d", p.n1, p.n2);
	return 0;
}

测试:

输入:

5
3 5 14 27 12

输出:

请输入数值的个数:请输入5个数值:n1=2,n2=3

文章来源:https://blog.csdn.net/fengbizhe/article/details/135658538
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。