首页 > 其他分享 >计算机等级考试二级C语言上机题集(第21~25套)

计算机等级考试二级C语言上机题集(第21~25套)

时间:2022-11-06 04:55:06浏览次数:54  
标签:25 函数 10 int void 题集 C语言 fun include

第21套

1.程序填空题

给定程序中,函数fun的功能是:进行数字字符转换。若形参ch中是数字字符“0”~“9”,则0转换成9,1转换成8,…,9转换成0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。

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

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

#include    <stdio.h>
/**********found**********/
___1___ fun(char  ch)
{
    /**********found**********/
    if (ch>='0' && ___2___)
    /**********found**********/
      return  '9'- (ch-___3___);
   return  ch ;
}
int main()
{  
    char  c1, c2;
    printf("\nThe result  :\n");
    c1='2';   c2 = fun(c1);
    printf("c1=%c    c2=%c\n", c1, c2);
    c1='8';   c2 = fun(c1);
    printf("c1=%c    c2=%c\n", c1, c2);
    c1='a';   c2 = fun(c1);
    printf("c1=%c    c2=%c\n", c1, c2);
    return 0;
}

2.程序修改题

已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。

例如,当n=10时,程序的输出结果应为:23.197745。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
#include <math.h>
/************found************/
fun(int n)
{
    double  sum, s0, s1, s2, s;
    int k;
    sum = 1.0;
    if (n <= 2) sum = 0.0;
    s0 = 0.0;  s1 = 0.0;  s2 = 1.0;
    for (k = 4; k <= n; k++)
    {
        s = s0 + s1 + s2;
        sum += sqrt(s);
        s0 = s1; s1 = s2; s2 = s;
    }
    /************found************/
    return sum
}
int main()
{
    int n;
    printf("Input N=");
    scanf("%d", &n);
    printf("%f\n", fun(n));
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:计算下列级数的和。

例如,当n=10,x=0.3时,函数值为1.349859。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
#include <math.h>
void NONO(void);
double fun(double x , int  n)
{

}
int main()
{
    printf("%f\n", fun(0.3,10));
    NONO();
    return 0;
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    FILE *fp, *wf ;
    int i, n ;
    double s, x ;
    fp = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       fscanf(fp, "%lf,%d", &x, &n) ;
       s = fun(x, n) ;
       fprintf(wf, "%f\n", s) ;
    }
    fclose(fp) ;
    fclose(wf) ;
}
1.(1)char   (2)ch<='9'   (3)'0'
2. double fun(int n)
     return sum;
3. double fun(double x , int  n)
     {
          double  f, t;
          int  i;
          f = 1.0;
          t = 1.0;
          for (i=1; i<n; i++)
          {
               t *= x/i;
               f += t;
          }
          return  f;
      }
第21套参考答案

第22套

1.程序填空题

甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。给定程序中,函数fun的功能是:根据形参提供的值,求出共听到多少次鞭炮声作为函数值返回。注意:当几个鞭炮同时炸响,只算一次响声,第1次响声是在第0秒。

例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。

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

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

#include    <stdio.h>
/**********found**********/
#define  OK(i, t, n)  ((___1___%t==0) && (i/t<n))
int fun(int  t1, int  t2, int  t3, int  t4, int  n)
{  
    int  count, t , maxt=t1;
    if (maxt < t2) maxt = t2;
    if (maxt < t3) maxt = t3;
    if (maxt < t4) maxt = t4;
    count=1;    
    /**********found**********/
    for(t=1; t< maxt*(n-1); ___2___)
    {
      if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) )
         count++;
    }
    /**********found**********/
    return ___3___;
}
int main()
{  
    int  t1=7, t2=5, t3=6, t4=4, n=10, r;
    r = fun(t1, t2, t3, t4, n);
    printf("The sound  :  %d\n", r);
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储器的首地址作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
#include <alloc.h>
#include <string.h>
#define    N  10
typedef  struct  ss
{  
    char  num[10];
    int  s;
} STU;
STU *fun(STU  a[], int  m)
{  
    STU  b[N], *t;
    int  i,j,k;
    /**********found**********/
    t=(STU *)calloc(sizeof(STU),m)
    for(i=0; i<N; i++)  b[i]=a[i];
      for(k=0; k<m; k++)
      {  
          for(i=j=0; i<N; i++)
             if(b[i].s > b[j].s)  j=i;
    /**********found**********/
          t(k)=b(j);
          b[j].s=0;
      }
    return  t;
}
void outresult(STU  a[], FILE  *pf)
{  
    int  i;
    for(i=0; i<N; i++)
      fprintf(pf,"No=%s Mark=%d\n",a[i].num,a[i].s);
    fprintf(pf,"\n\n");
}
int main()
{  
    STU  a[N]={ {"A01",81},{"A02",89},
                {"A03",66},{"A04",87},
                {"A05",77},{"A06",90},
                {"A07",79},{"A08",61},
                {"A09",80},{"A10",71}};
    STU  *pOrder;
    int  i, m;
    printf("***** The Original data *****\n");
    outresult(a, stdout);
    printf("\nGive the number of the students who have better score:  ");
    scanf("%d",&m);
    while( m>10 )
    { 
        printf("\nGive the number of the students who have better score:  ");
        scanf("%d",&m);
    }
    pOrder=fun(a,m);
    printf("***** THE  RESULT *****\n");
    printf("The top  :\n");
    for(i=0; i<m; i++)
      printf("%s  %d\n",pOrder[i].num , pOrder[i].s);
    free(pOrder);
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,一维数组中的数据为:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10,删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
#define N 80
void NONO(void);
int  fun(int  a[], int  n)
{

}
int main()
{
    int  a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
    printf("The original data :\n");
    for (i=0; i<n; i++) printf("%3d",a[i]);
    n=fun(a,n);
    printf("\n\nThe data after deleted :\n");
    for (i=0;i<n;i++) printf("%3d",a[i]);
    printf("\n\n");
    NONO();
    return 0;
}
void NONO(void)
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
    FILE *rf, *wf;
    int a[N], n, i, j ;
    rf = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for (i = 0 ; i < 5 ; i++)
    {
       fscanf(rf, "%d", &n) ;
       for (j = 0 ; j < n ; j++)
          fscanf(rf, "%d", &a[j]) ;
       n = fun(a, n) ;
       for (j = 0 ; j < n ; j++)
          fprintf(wf, "%4d", a[j]) ;
       fprintf(wf, "\n") ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)i   (2)t++   (3)count
2. t=(STU *)calloc(sizeof(STU),m);
     t[k]=b[j];
3. int  fun(int  a[], int  n)
     {
          int i,j;
          j=0;
          for (i=1;i<n;i++)
              if (a[i]!=a[j])
                  a[++j]=a[i];
          return j+1;
      }
第22套参考答案

第23套

1.程序填空题

给定程序中,函数fun的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

例如,若a所指数组中的数据依次为:1 2 3 4 5 6 7 8 9,则调换后为:6 7 8 9 5 1 2 3 4。

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

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

#include  <stdio.h>
#define    N    9
void fun(int  a[], int  n)
{  
    int  i, t, p;
    /**********found**********/
    p = (n%2==0)?n/2:n/2+___1___;
    for (i=0; i<n/2; i++)
    {
        t=a[i];
    /**********found**********/
        a[i] = a[p+___2___];
    /**********found**********/
        ___3___ = t;
    }
}
int main()
{  
    int  b[N]={1,2,3,4,5,6,7,8,9}, i;
    printf("\nThe original data  :\n");
    for (i=0; i<N; i++)  printf("%4d ", b[i]);
    printf("\n");
    fun(b, N);
    printf("\nThe data after moving  :\n");
    for (i=0; i<N; i++)  printf("%4d ", b[i]);
    printf("\n");
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第1个位置上,并将该字符前的原字符向后顺序移动。

例如,调用函数前字符串为:GABCDeFGH,调用函数后字符串为:eGABCDFGH。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
void fun(char *p)
{   
    char  max,*q;  
    int i=0;
    max=p[i];
    while (p[i]!=0)
    {  
        if (max<p[i])
        {  
            max=p[i];
    /************found************/
            p=q+i;
        }
        i++;
    }
    /************found************/
    while (q<p)
    {
        *q=*(q-1);
        q--;
    }
    p[0]=max;
}
int main()
{
    char str[80];
    printf("Enter a string:");
    gets(str);
    printf("\nThe original string:    ");
    puts(str);
    fun(str);
    printf("\nThe string after moving: ");
    puts(str);
    printf("\n\n");
    return 0;
}

3.程序设计题

M个学生的成绩存放在score数组中,编写函数fun,它的功能是:将低于平均分的成绩存放到数组below中,并将低于平均分的人数作为函数值返回。

例如,当score数组中的数据为:10 20 30 40 50 60 70 80 90时,函数返回值为4,below中的数据为:10 20 30 40。

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
void NONO(void);
int fun(int score[],int m,int below[])
{

}
int main()
{
    int i,n,below[9];
    int score[9]={10,20,30,40,50,60,70,80,90};
    n=fun(score,9,below);
    printf("\nBelow the average score are:");
    for(i=0;i<n;i++) printf("%d ",below[i]);
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
    int i, j, n, below[10], score[10];
    FILE *rf, *wf ;
    rf = fopen("in.dat", "r") ;
    wf = fopen("out.dat", "w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       for(j = 0 ; j < 10 ; j++)
          fscanf(rf, "%d", &score[j]) ;
       n = fun(score, 10, below) ;
       for(j = 0 ; j < n ; j++)
          fprintf(wf, "%d ", below[j]) ;
       fprintf(wf, "\n") ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)1   (2)i   (3)a[p+i]
2. q=p+i;
      while (q>p)
3. int fun(int score[],int m,int below[])
      {
           int s=0,i,k;
           for (i=0;i<m;i++)
                s+=score[i];
           s=s/m;
           k=0;
           for (i=0;i<m;i++)
               if (score[i]<s)
                   below[k++]=score[i];
           return k;
      }
第23套参考答案

第24套

1.程序填空题

给定程序中,函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把形参a所指数组中的次大值放在a[2]中,次小值放在a[3]中;其余以此类推。

例如,若a所指数组中数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。

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

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

#include <stdio.h>
#define N  9
/**********found**********/
void fun(int  ___1___, int  n)
{  
    int  i, j, max, min, px, pn, t;
    /**********found**********/
    for (i=0; i<n-1; i+=___2___)
    {  
        max = min = a[i];
        px = pn = i;
    /**********found**********/
        for (j=___3___; j<n; j++)
        {  
            if (max < a[j])
            {  max = a[j]; px = j;  }
            if (min > a[j])
            {  min = a[j]; pn = j;  }
        }
        if (px != i)
        {  
            t = a[i]; a[i] = max; a[px] = t;
            if (pn == i) pn= px;
        }
        if (pn != i+1)
        {   t = a[i+1]; a[i+1] = min; a[pn] = t; }
    }
}
int main()
{  
    int  b[N]={1,4,2,3,9,6,5,8,7}, i;
    printf("\nThe original data  :\n");
    for (i=0; i<N; i++)  printf("%4d ", b[i]);
    printf("\n");
    fun(b, N);
    printf("\nThe data after moving  :\n");
    for (i=0; i<N; i++)  printf("%4d ", b[i]);
    printf("\n");
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
int fun(int m)
{  
    int i, k ;
    for (i = m + 1 ; ; i++) 
    {
       for (k = 2 ; k < i ; k++)
    /**************found**************/
          if (i % k != 0)
             break ;
    /**************found**************/
         if (k < i)
            return i;
    }
}
int main()
{
    int m,t;
    scanf("%d",&m); 
    t=fun(m);
    printf("%d",t);
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

例如,若x=30,则有4个数符合要求,它们是:1,3,5,15。

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
void NONO(void);
void  fun(int x, int pp[], int *n)
{

}
int main()
{
    int  x, aa[1000], n, i ;
    printf( "\nPlease enter an integer number:\n" );
    scanf("%d", &x) ;
    fun(x, aa, &n ) ;
    for( i = 0 ; i < n ; i++ )
         printf("%d ", aa[i]) ;
    printf("\n") ;
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
    int x, aa[1000], n, i, j ;
    FILE *fp ;
    fp = fopen("out.dat","w") ;
    for (j = 0 ; j < 10 ; j++)
    {
       x = 30 + j ;
       fun(x, aa, &n) ;
       for (i = 0 ; i < n ; i++) fprintf(fp, "%d ", aa[i]) ;
       fprintf(fp, "\n") ;
    }
    fclose(fp) ;
}
1.(1)a[]  或 *a   (2)2   (3)i+1
2. if (i % k == 0)
      if (k >= i)
3. void  fun(int x, int pp[], int *n)
      {
          int k=0,i;
          for (i=1;i<=x;i+=2)
              if (x%i==0)  pp[k++]=i;
          *n=k;
      }
第24套参考答案

第25套

1.程序填空题

给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回。

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

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

#include  <stdio.h>
typedef  struct
{  
    char  name[10];
    int  age;
}STD;
STD fun(STD  std[], int  n)
{  
    STD  max;        
    int  i;
    /**********found**********/
    max= ___1___;
    for(i=1; i<n; i++)
    /**********found**********/
      if(max.age<___2___)  max=std[i];
    return max;
}
int main( )
{  
    STD  std[5]={"aaa",17,"bbb",16,
              "ccc",18,"ddd",17,"eee",15  };
    STD  max;
    max=fun(std,5);
    printf("\nThe result: \n");
    /**********found**********/
    printf("\nName:%s, Age:%d\n", __3__,max.age);
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:计算

S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。

f(x)函数定义如下:

              (x+1)/(x-2)    x>0且x!=2

f(x)=      0                   x=0或x=2

              (x-1)/(x-2)    x<0

例如,当n=5时,函数值应为:10.407143。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
#include <math.h>
/************found************/
f( double x)
{
   if (x == 0.0 || x == 2.0)
     return 0.0;
   else if (x < 0.0)
     return (x -1)/(x-2);
   else
     return (x +1)/(x-2);
}
double fun(int  n)
{  
    int i;  
    double  s=0.0, y;
    for (i= -n; i<=n; i++)
    { y=f(1.0*i); s += y; }
    /************found************/
    return s
}
int main ( )
{
    printf("%f\n", fun(5) );
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:计算

   的值。

例如,若m=20,函数值为:6.506583。

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
#include <math.h>
void NONO(void);
double  fun(int  m)
{

}
int main()
{
    printf("%f\n", fun(20));
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    FILE *fp, *wf ;
    int i, n ;
    double s ;
    fp = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       fscanf(fp, "%d", &n) ;
       s = fun(n) ;
       fprintf(wf, "%f\n", s) ;
    }
    fclose(fp) ;
    fclose(wf) ;
}
1.(1)std[0]   (2)std[i].age   (3)max.name
2. double f(double x)
      return s;
3. double  fun(int  m)
      {
          double s=0.0;
          int i;
          for (i=1;i<=m;i++)
              s+=log(i);
          s=sqrt(s);
          return s;
      }
第25套参考答案

标签:25,函数,10,int,void,题集,C语言,fun,include
From: https://www.cnblogs.com/cs-whut/p/16861852.html

相关文章

  • 2022-2023-1 20221425 《计算机基础与程序设计》第十周学习总结
    学期(如2022-2023-1)学号(如:20221425)《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这......
  • C语言版平凡之路
    #include<iostream>#include<Windows.h>#pragmacomment(lib,"winmm.lib")usingnamespacestd;enumScale{Rest=0,C8=108,B7=107,A7s=106,A7=105,G7s......
  • 实验3 C语言控制语句应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces......
  • 25. Reverse Nodes in k-Group
     Giventhe head ofalinkedlist,reversethenodesofthelist k atatime,andreturn themodifiedlist.  classSolution{publicListNodere......
  • 到2032年,AI平台市场将达到2541.4亿美元
    根据FutureMarketInsights的数据,全球人工智能平台市场预计将在2022年价值100亿美元,到2022-2032年预测期结束时,将以38.2%的CAGR增长,价值2541.4亿美元。2021年该市场价值96......
  • 什么?C语言还可以玩游戏?
    猜数字游戏#include<stdio.h>voidmenu() { printf("*******************\n"); printf("***1.进入 0.退出***\n"); printf("*******************\n"); } voi......
  • 「题集」Public NOIP Round #2 提高
    简单写一写题解,T3和T4还是值得一记的。恰钱注意到,\(10^9\)范围内的好数明显数量不多。我们甚至可以直接算出来:\[\sum_{k=1}^{14}\binom{30-(k+1)}{k-1}\]结合这个......
  • C语言输出9*9乘法口诀表
    #include<stdio.h>int main(){inti=0;for(i=1;i<10;i++)  //确定行数{int j=0;for(j=1;j<=i;j++)            //这里的红色字体表示的是一......
  • Linux共享内存通信的C语言Demo代码
    重点注明:本文代码来源于:https://blog.csdn.net/github_38294679/article/details/122360026  =====================================================  使用p......
  • c语言借助GNU创建对象和嵌套union使用
    #include<stdio.h>#include<stdlib.h>#include<string.h>/**枚举体占用内存*枚举有符号,根据数值分配内存。[1~4]*但是和编译器相关联,目前我看到的都是4by......