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

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

时间:2022-11-06 06:11:22浏览次数:47  
标签:std 函数 int void 45 题集 C语言 printf fun

第41套

1.程序填空题

给定程序中,函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。

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

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

#include  <stdio.h>
int fun(int  n)
{  
    int  i,j, count=1;
    printf("\nThe prime number between 2 to %d\n", n);
    printf("%5d",2);
    for (i=3; i<=n; i+=2) 
    {
    /**********found**********/
       for (___1___; j<i; j++)
    /**********found**********/
         if (___2___%j == 0)
            break;
    /**********found**********/
       if (___3___>=i)
       {  count++; printf( count%15? "%5d":"\n%5d",i);}
    }
    return  count;
}
int main()
{  
    int  n=20, r;
    r = fun(n);
    printf("\nThe number of prime is  :  %d\n", r);
    return 0;
}

2.程序修改题

给定程序中建立了一个带头结点的单向链表,并用随机函数为个结点数据域赋值。函数fun的功能是:求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。

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

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

#include <stdio.h>
#include <stdlib.h>
typedef  struct  aa
{  
    int  data;
    struct  aa  *next;
} NODE;
int  fun(NODE *h)
{ 
    int  max=-1;
    NODE  *p;
    /***********found**********/
    p=h ;
    while(p)
    {  
        if(p->data>max)
            max=p->data;
    /***********found**********/
        p=h->next ;
    }
    return  max;
}
NODE  *creatlink(int  n, int m)
{
    NODE  *h, *p, *s;
    int  i;
    h=p=(NODE *)malloc(sizeof(NODE));
    h->data=9999;
    for(i=1; i<=n; i++)
    {
        s=(NODE *)malloc(sizeof(NODE));
        s->data=rand()%m;  s->next=p->next;
        p->next=s;         p=p->next;
    }
    p->next=NULL;
    return  h;
}
void outlink(NODE *h)
{
    NODE  *p;
    p=h->next;
    printf("\nTHE  LIST :\n\n  HEAD ");
    while (p)
    {
        printf("->%d ",p->data);
        p=p->next;
    }
    printf("\n");
}
int main()
{
    NODE  *head;  int  m;
    head=creatlink(12,100);
    outlink(head);
    m=fun(head);
    printf("\nTHE  RESULT : %d\n",m);
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:将M行N列的二维数组中的数据,按行的顺序依次存放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,二维数组中的数据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应是:

33 33 33 33 44 44 44 44 55 55 55 55

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

#include <stdio.h>
void NONO(void);
void fun(int (*s)[10],int *b,int *n,int mm,int nn)
{

}
int main()
{
    int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ;
    int a[100] = {0}, n = 0 ;
    printf("The matrix:\n") ;
    for(i = 0 ; i < 3 ; i++)
    {
        for(j = 0 ; j < 4 ; j++)
            printf("%3d",w[i][j]) ;
        printf("\n") ;
    }
    fun(w, a, &n, 3, 4) ;
    printf("The A array:\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 i, j, k ;
    int w[10][10], a[100], n = 0, mm, nn ;
    rf = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(k = 0 ; k < 5 ; k++)
    {
       fscanf(rf, "%d %d", &mm, &nn) ;
       for(i = 0 ; i < mm ; i++)
          for(j = 0 ; j < nn ; j++)
              fscanf(rf, "%d", &w[i][j]) ;
       fun(w, a, &n, mm, nn) ;
       for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]);
       fprintf(wf, "\n") ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)j=2   (2)i   (3)j
2. p=h->next;
    p=p->next ;
3. void fun(int (*s)[10],int *b,int *n,int mm,int nn)
     {
         int i,j,k=0;
         for (i=0;i<mm;i++)
             for (j=0;j<nn;j++)
                   b[k++]=s[i][j];
         *n=k;
     }
第41套参考答案

第42套

1.程序填空题

给定程序中,函数fun的功能是:计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。

例如,N=3,有下列矩阵

1 2 3

4 5 6

7 8 9

fun函数首先累加1、5、9,再累加3、5、7,函数返回值为30。

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

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

#include <stdio.h>
#define N  4
int fun(int t[][N], int n)
{  
    int  i, sum;
    /**********found**********/
    ___1___;
    for(i=0; i<n; i++)
    /**********found**********/
        sum+=___2___ ;
    for(i=0; i<n; i++)
    /**********found**********/
        sum+= t[i][n-i-___3___] ;
    return sum;
}
int main()
{  
    int  t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
    printf("\nThe original data:\n");
    for(i=0; i<N; i++)
    {  
        for(j=0;j<N;j++) printf("%4d",t[i][j]);
        printf("\n");
    }
    printf("The result is:  %d",fun(t,N));
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。

例如,给字符串s输入:AaaaBBb123CCccccD,则应输出结果:upper=6,lower=8。

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

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

#include <stdio.h>
/**********found**********/
void fun (char *s,int a,int b)
{
   while (*s)
   {  
       if ( *s >= 'A' && *s <= 'Z' )
   /**********found**********/
          *a=a+1 ;
       if ( *s >= 'a' && *s <= 'z' )
   /**********found**********/
          *b=b+1;
       s++;
   }
}
int main()
{  
   char s[100];  
   int   upper = 0, lower = 0 ;
   printf( "\nPlease a string :  " );  
   gets ( s );
   fun(s, &upper, &lower);
   printf( "\n upper = %d  lower = %d\n", upper, lower );
   return 0;
}

3.程序设计题

编写函数fun,它的功能是:使实型数保留2位小数,并对第3位进行四舍五入(规定实型数为正数)。

例如,实型数为1234.567,则函数返回1234.57;实型数为1234.564,则函数返回1234.56。

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

#include <stdio.h>
void NONO(void);
float fun (float h)
{

}
int main()
{
    float  a;
    printf ("Enter  a:  ");
    scanf ( "%f", &a );
    printf ( "The original data is :   " );
    printf ( "%f \n\n", a );
    printf ( "The result :  %.2f\n", fun ( a ) );
    NONO();
    return 0;
}
void NONO(void)
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
    输出数据,关闭文件。 */
    int i ;
    float a ;
    FILE *rf, *wf ;
    rf = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(i = 0 ; i < 20 ; i++)
    {
       fscanf(rf, "%f", &a) ;
       fprintf(wf, "%f\n", fun(a)) ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)sum=0   (2)t[i][i]   (3)1
2. void fun (char *s,int *a,int *b)
    *a=*a+1 ;
    *b=*b+1;
3. float fun (float h)
     {
          float x;
          x=(int)(h*100+0.5)/100.0;
          return x;
     }
第42套参考答案

第43套

1.程序填空题

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

直到|xn/n!|<10-6

例如,若x=2.5,函数值为:12.182494。

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

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

#include <stdio.h>
#include <math.h>
double fun(double  x)
{
    double  f, t;
    int n;
    /**********found**********/
    f = 1.0+___1___;
    t = x;
    n = 1;
    do {
        n++;
    /**********found**********/
        t *= x/___2___;
    /**********found**********/
        f += ___3___;
    }while (fabs(t) >= 1e-6);
    return  f;
}
int 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);
    return 0;
}

2.程序修改题

给定程序中,函数insert的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,插入后前四个字符依然有序,……。

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

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

#include <stdio.h>
#include <string.h>
#define  N   80
void  insert(char *aa)
{  
    int  i,j,n;     
    char  ch;
    /**********found**********/
    n=strlen[aa];
    for( i=1; i<n ;i++ ) 
    {
    /**********found**********/
       c=aa[i];
       j=i-1;
       while ((j>=0) && ( ch<aa[j] ))
       {   
           aa[j+1]=aa[j];
           j--;        
       }
       aa[j+1]=ch;
    }
}
int main()
{   
    char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";
    printf("The original string :     %s\n",a);
    insert(a) ;
    printf("The string after sorting : %s\n",a);
    return 0;
}

3.程序设计题

N名学生的成绩已在主函数中放入一个带头结点的单向链表中,h指向链表的头结点。编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

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

#include <stdio.h>
#include <stdlib.h>
#define  N  8
void NONO(void);
struct  slist
{
    double   s;
    struct slist  *next;
};
typedef  struct slist  STREC;
double fun(STREC *h)
{

}
STREC * creat(double *s)
{
    STREC  *h,*p,*q;
    int  i=0;
    h=p=(STREC*)malloc(sizeof(STREC));
    p->s=0;
    while(i<N)
    {
       q=(STREC*)malloc(sizeof(STREC));
       q->s=s[i]; i++; p->next=q; p=q;
    }
    p->next=0;
    return  h;
}
void outlist(STREC *h)
{
    STREC  *p;
    p=h->next;
    printf("head");
    do
    {
        printf("->%2.0f",p->s);
        p=p->next;
    } while(p!=0);
    printf("\n\n");
}
int main()
{
    double s[N]={85,76,69,85,91,72,64,87},max;
    STREC  *h;
    h=creat( s );
    outlist(h);
    max=fun(h);
    printf("max=%6.1f\n",max);
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    FILE *in, *out ;
    int i,j ;
    double  s[N],max;
    STREC *h ;
    in = fopen("in.dat","r") ;
    out = fopen("out.dat","w") ;
    for(i = 0 ; i < 10 ; i++)
    {
        for(j=0 ; j < N; j++)
           fscanf(in, "%lf,", &s[j]);
        h=creat( s );
        max=fun( h );
        fprintf(out, "%6.1lf\n", max);
    }
    fclose(in) ;
    fclose(out) ;
}
1.(1)x   (2)n   (3)t
2. n=strlen(aa);
    ch=aa[i];
3. double fun(STREC *h)
     {
           double max=-1;
           STREC *p;
           p=h->next;
           while (p)
           {
                if (max<p->s) max=p->s;
                p=p->next;
           }
           return max;
      }
第43套参考答案

第44套

1.程序填空题

给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

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

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

#include <stdio.h>
typedef  struct
{  int  num;
   char  name[10];
}PERSON;
/**********found**********/
void fun(PERSON  ___1___)
{
   /**********found**********/
   ___2___  temp;
   if(std[0].num>std[1].num)
   { temp=std[0]; std[0]=std[1]; std[1]=temp;}
   if(std[0].num>std[2].num)
   { temp=std[0]; std[0]=std[2]; std[2]=temp;}
   if(std[1].num>std[2].num)
   { temp=std[1]; std[1]=std[2]; std[2]=temp;}
}
int main()
{  
   PERSON std[ ]={5,"Zhanghu",2,"WangLi",6,"LinMin"};
   int  i;
   /**********found**********/
   fun(___3___);
   printf("\nThe result is :\n");
   for(i=0; i<3; i++)
      printf("%d,%s\n",std[i].num,std[i].name);
   return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和,若high以内的素数不足10个,则将high以内所有的素数求和即可。

例如,若high的值为100,则函数返回值为732。

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

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

#include <stdio.h>
int fun(int  high)
{
    int sum=0, n=0, j, yes;
    /************found************/
    while (high >= 2 || n < 10)
    {
        yes = 1;
        for (j=2; j<=high/2; j++ )
    /************found************/
            if (high % j !=0 )
            {
               yes=0; break;
            }
        if (yes) { sum +=high; n++; }
        high--;
    }
    return sum ;
}
int main()
{
    printf("%d\n", fun (100));
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:利用以下所示的简单迭代法求方程cos(x)-x=0的一个实根。

迭代步骤如下:

    Xn+1=cos(Xn)

(1)取X1初值为0.0;

(2)X0=X1,把X1的值赋给X0;

(3)X1=cos(X0),求出一个新的X1;

(4)若X0-X1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);

(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。

程序运行后,将输出结果Root=0.739085。

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

#include <stdio.h>
#include <math.h>
void NONO(void);
float fun()
{

}
int main()
{
   printf("Root =%f\n", fun());
   NONO();
   return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
   FILE *wf ;
   wf = fopen("out.dat","w") ;
   fprintf(wf, "%f\n", fun()) ;
   fclose(wf) ;
}
1.(1)std[]   (2)PERSON   (3)std
2. while (high >= 2 && n<10)
    if (high % j ==0 )
3. float fun()
     {
         float x0,x1=0.0;
         do {
            x0=x1;
            x1=cos(x0);
         } while (fabs(x0-x1)>=0.000001);
         return x1;
     }
第44套参考答案

第45套

1.程序填空题

给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是:输出这位学生的信息。

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

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

#include  <stdio.h>
typedef  struct
{  
    int  num;
    char  name[9];
    char  sex;
    struct { int year,month,day;} birthday;
    float  score[3];
}STU;
/**********found**********/
void show(STU  ___1___)
{  
    int  i;
    printf("\n%d %s %c %d-%d-%d",tt.num,
       tt.name,tt.sex,tt.birthday.year,
       tt.birthday.month,tt.birthday.day);
    for(i=0; i<3; i++)
    /**********found**********/
       printf("%5.1f", ___2___);
    printf("\n");
}
int main( )
{  
    STU std={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};
    printf("\nA student data:\n");
    /**********found**********/
    show(___3___);
    return 0;
}

2.程序修改题

由N个有序整数组成的数列已放在一维数组中。给定程序中,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下部值,反之,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high或找到元素,查找结束。

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

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

#include <stdio.h>
#define  N  10
/************found************/
void fun(int  a[], int  m )
{  
   int  low=0,high=N-1,mid;
   while(low<=high)
   {  mid=(low+high)/2;
      if(m<a[mid])
        high=mid-1;
   /************found************/
      else If(m > a[mid])
        low=mid+1;
      else  return(mid);
   }
   return(-1);
}
int main()
{  
   int  i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m;
   printf("a数组中的数据如下:");
   for(i=0;i<N;i++) printf("%d ", a[i]);
   printf("Enter m: ");  
   scanf("%d",&m);
   k=fun(a,m);
   if(k>=0) printf("m=%d,index=%d\n",m,k);
   else  printf("Not be found!\n");
   return 0;
}

3.程序设计题

假定输入的字符串中只包含字母和*号。编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:*****A*BC*DEF*G***,删除后,字符串的内容应当为:ABCDEFG***。

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

#include <stdio.h>
void NONO(void);
void  fun( char *a, char *p)
{

}
int main()
{
    char  s[81],*t;
    printf("Enter a string:\n");gets(s);
    t=s;
    while (*t) t++;
    t--;
    while (*t=='*') t--;
    fun(s,t);
    printf("The string after deleted:\n");puts(s);
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    FILE *in, *out ;
    int i ;
    char s[81],*t ;
    in = fopen("in.dat","r") ;
    out = fopen("out.dat","w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       fscanf(in, "%s", s) ;
       t=s;
       while(*t) t++;
       t--;
       while(*t=='*') t--;
       fun(s,t);
       fprintf(out, "%s\n", s) ;
    }
    fclose(in) ;
    fclose(out) ;
}
1.(1)tt   (2)tt.score[i]   (3)std
2. int fun(int a[], int  m)
else if(m > a[mid])
3. void  fun( char *a, char *p)
{
    char *p1,*p2;
    p1=p2=a;
    while (*p1!='\0')
    {
        if ((p1<p && *p1!='*') || p1>=p)
        {
            *p2=*p1;
            p2++;
        }
        p1++;
    }
    *p2='\0';
}
第45套参考答案

标签:std,函数,int,void,45,题集,C语言,printf,fun
From: https://www.cnblogs.com/cs-whut/p/16861860.html

相关文章

  • 计算机等级考试二级C语言上机题集(第36~40套)
    第36套1.程序填空题给定程序中,函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并通过全局变量c1、c2、c3返回主函数。例如,当n=123114350时,结果为:c1=3 c2=1 ......
  • 计算机等级考试二级C语言上机题集(第31~35套)
    第31套1.程序填空题给定程序中,函数fun的功能是:有N*N矩阵,将矩阵中的外围元素顺时针旋转。操作顺序是:首先将第1行元素值存入临时数组r,然后使第1列成为第1行,最后1行成为第1列......
  • 计算机等级考试二级C语言上机题集(第26~30套)
    第26套1.程序填空题给定程序中,函数fun的功能是:计算 例如,若x=2.5,n=15时,函数值为:1.917915。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:......
  • 计算机等级考试二级C语言上机题集(第21~25套)
    第21套1.程序填空题给定程序中,函数fun的功能是:进行数字字符转换。若形参ch中是数字字符“0”~“9”,则0转换成9,1转换成8,…,9转换成0;若是其他字符则保持不变;并将转换后的结......
  • C语言版平凡之路
    #include<iostream>#include<Windows.h>#pragmacomment(lib,"winmm.lib")usingnamespacestd;enumScale{Rest=0,C8=108,B7=107,A7s=106,A7=105,G7s......
  • 2022.45 AIGC
    从语音到静态画面再到动态影像,AIGC(人工智能生成内容)对短视频完成了全面渗透。输入文案,自动合成语音,AI已成为当下短视频批量生产的标配;选一首大众熟悉的歌曲,让AI根据歌词生......
  • 实验3 C语言控制语句应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);voidprint_spaces......
  • 什么?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++)            //这里的红色字体表示的是一......