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

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

时间:2022-11-07 06:22:05浏览次数:47  
标签:函数 int void 题集 C语言 char 61 fun include

第61套

1.程序填空题

给定程序中,函数fun的功能是:找出100~x(x<=999)之间所有整数中各位上数字之和为15的整数,然后输出;符合条件的整数个数作为函数值返回。

例如,若x=500时,100~500之间各位上数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。

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

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

#include <stdio.h>
fun(int  x)
{ 
    int  n, s1, s2, s3, t;
    /**********found**********/
    n=__1__;
    t=100;
    /**********found**********/
    while (t<=__2__)
    { 
        s1=t%10;  s2=(t/10)%10;  s3=t/100;
        if(s1+s2+s3==15)
        {  
            printf("%d ",t);
            n++;
        }
    /**********found**********/
        __3__;
    }
    return n;
}
int main()
{ 
    int  x=-1;
    while(x>999||x<0)
    {  
       printf("Please input(0<x<=999): ");  
       scanf("%d",&x);  
    }
    printf("\nThe result is: %d\n",fun(x));
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。

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

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

#include <stdio.h>
#include <string.h>
#define  N   5
#define  M   81
/**********found**********/
fun(char  (*sq)[M])
{  
    int  i;     
    char  *sp;
    sp=sq[0];
    for(i=0;i<N;i++)
      if(strlen( sp)<strlen(sq[i]))
         sp=sq[i] ;
    /**********found**********/
    return  sq;
}
int main()
{  
    char   str[N][M], *longest;    
    int   i;
    printf("Enter %d lines :\n",N);
    for(i=0; i<N; i++) gets(str[i]);
    printf("\nThe N string  :\n",N);
    for(i=0; i<N; i++) puts(str[i]);
    longest=fun(str);
    printf("\nThe longest string :\n"); 
    puts(longest);
    return 0;
}

3.程序设计题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

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

#include <stdio.h>
#define  N  16
typedef  struct
{
    char  num[10];
    int   s;
} STREC;
void fun(STREC  a[])
{

}
int main()
{
    STREC  s[N]={{"GA005",85},{"GA003",76},
        {"GA002",69},{"GA004",85},{"GA001",91},
        {"GA007",72},{"GA008",64},{"GA006",87},
        {"GA015",85},{"GA013",91},{"GA012",64},
        {"GA014",91},{"GA011",66},{"GA017",64},
        {"GA018",64},{"GA016",72}};
    int  i;
    FILE *out ;
    fun(s);
    printf("The data after sorted :\n");
    for(i=0;i<N; i++)
    {
        if( (i)%4==0 )printf("\n");
        printf("%s  %4d  ",s[i].num,s[i].s);
    }
    printf("\n");
    out = fopen("out.dat","w") ;
    for(i=0;i<N; i++)
    {
        if( (i)%4==0 && i) fprintf(out, "\n");
        fprintf(out, "%4d  ",s[i].s);
    }
    fprintf(out,"\n");
    fclose(out) ;
    return 0;
}
1.(1)0   (2)x   (3)t++
2. char * fun(char  (*sq)[M])
    return  sp;
3. void fun(STREC  a[])
    {
        int i,j,k;
        STREC t;
        for (i=0;i<N-1;i++)
        {
            k=i;
            for (j=i+1;j<N;j++)
                if (a[k].s<a[j].s) k=j;
            t=a[i]; a[i]=a[k]; a[k]=t;
        }
    }
第61套参考答案

第62套

1.程序填空题

给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩下的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。

例如,输入一个数:27638496,新的数为:739。

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

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

#include  <stdio.h>
void fun(unsigned long  *n)
{ 
    unsigned long  x=0, i;    
    int  t;
    i=1;
    while(*n)
    /**********found**********/
    { 
        t=*n % __1__;
    /**********found**********/
        if(t%2!= __2__)
        { x=x+t*i;  i=i*10;  }
        *n =*n /10;
    }
    /**********found**********/
    *n=__3__;
}
int main()
{ 
    unsigned long  n=-1;
    while(n>99999999||n<0)
    { 
        printf("Please input(0<n<100000000): "); 
        scanf("%ld",&n); 
    }
    fun(&n);
    printf("\nThe result is: %ld\n",n);
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。

例如,当字符串中的内容为:abcdabfabcdx,t中的内容为ab时,输出的结果应为:abcdx。

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

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

#include  <stdio.h>
#include  <string.h>
char * fun (char  *s,  char *t )
{
    char   *p , *r, *a;
    /************found************/
    a = Null;
    while ( *s )
    {   
        p = s;   r = t;
        while ( *r )
    /************found************/
          if ( r == p )
          { r++;  p++; }
          else  break;
        if ( *r == '\0' ) a = s;
        s++;
    }
    return  a ;
}
int main()
{
    char   s[100], t[100], *p;
    printf("\nPlease enter string S :"); 
    scanf("%s", s);
    printf("\nPlease enter substring t :"); 
    scanf("%s", t);
    p = fun(s, t);
    if (p) printf("\nThe result is : %s\n", p);
    else   printf("\nNot found !\n" );
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:将s所指字符串中除了下标为偶数,同时ASCII码值也为偶数的字符外,其余的字符全部删除;串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:ABCDEFG123456,则t所指数组中的内容应为:246。

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

#include <stdio.h>
#include <string.h>
void NONO(void);
void fun(char *s, char t[])
{

}
int main()
{
    char   s[100], t[100];
    printf("\nPlease enter string S:"); scanf("%s", s);
    fun(s, t);
    printf("\nThe result is: %s\n", t);
    NONO();
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    char s[100], t[100] ;
    FILE *rf, *wf ;
    int i ;
    rf = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       fscanf(rf, "%s", s) ;
       fun(s, t) ;
       fprintf(wf, "%s\n", t) ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)10   (2)0   (3)x
2. a = NULL;
    if ( *r == *p )
3. void fun(char *s, char t[])
    {
        int i,k;
        for (i=k=0; s[i]!='\0';i++)
            if (i%2==0 && s[i]%2==0)
                t[k++]=s[i];
        t[k]='\0';
    }
第62套参考答案

第63套

1.程序填空题

给定程序中,通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是:重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。

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

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

#include  <stdio.h>
#define  N  5
typedef struct  student 
{
    long  sno;
    char  name[10];
    float  score[3];
} STU;
void fun(char  *filename, STU  n)
{ 
    FILE  *fp;
    /**********found**********/
    fp = fopen(__1__, "rb+");
    /**********found**********/
    fseek(fp, -1L*sizeof(STU), __2__);
    /**********found**********/
    fwrite(__3__, sizeof(STU), 1, fp);
    fclose(fp);
}
int main()
{ 
    STU  t[N]={ {10001,"MaChao", 91, 92, 77}, 
              {10002,"CaoKai", 75, 60, 88},
              {10003,"LiSi", 85, 70, 78},    
              {10004,"FangFang", 90, 82, 87},
              {10005,"ZhangSan", 95, 80, 88}};
    STU  n={10006,"ZhaoSi", 55, 70, 68}, ss[N];
    int  i,j;      
    FILE  *fp;
    fp = fopen("student.dat", "wb");
    fwrite(t, sizeof(STU), N, fp);
    fclose(fp);
    fp = fopen("student.dat", "rb");
    fread(ss, sizeof(STU), N, fp);
    fclose(fp);
    printf("\nThe original data :\n\n");
    for (j=0; j<N; j++)
    {  
      printf("\nNo:%ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
      for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);
      printf("\n");
    }
    fun("student.dat", n);
    printf("\nThe data after modifing :\n\n");
    fp = fopen("student.dat", "rb");
    fread(ss, sizeof(STU), N, fp);
    fclose(fp);
    for (j=0; j<N; j++)
    {  
      printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
      for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);
      printf("\n");
    }
    return 0;
}

2.程序修改题

给定程序中,函数Craetlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0~m-1的值。

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

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

#include <stdio.h>
#include <stdlib.h>
typedef  struct  aa
{  
    int  data;
    struct  aa  *next;
} NODE;
NODE *Creatlink(int  n, int  m)
{  
    NODE  *h=NULL, *p, *s;
    int  i;
    /**********found***********/
    p=(NODE )malloc(sizeof(NODE));
    h=p;
    p->next=NULL;
    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;
    }
    /**********found***********/
    return  p;
}
void outlink(NODE *h)
{  
    NODE  *p;
    p=h->next;
    printf("\n\nTHE  LIST :\n\n  HEAD ");
    while(p)
    {  
        printf("->%d ",p->data);
        p=p->next;
    }
    printf("\n");
}
int main()
{  
    NODE  *head;
    head=Creatlink(8,22);
    outlink(head);
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

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

#include <stdio.h>
#include <string.h>
#define  N  80
void NONO(void);
int  fun( char  *s)
{
    int  flag=0,n=0;
    for ( ; *s; s++)
    {
      if (flag)
      {
          if (*s==' ') flag=0;
      }
      else  if (*s!=' ')
      {
          flag = 1;
          n++;
      }
    }
    return n;
}
int main()
{
    char  line[N];
    int  num=0;
    printf("Enter a string :\n");
    gets(line);
    num=fun( line );
    printf("The number of word is : %d\n",num);
    NONO();
    return 0;
}
void NONO(void)
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
    FILE *rf, *wf ; int i, num ; char line[N], *p ;
    rf = fopen("in.dat", "r") ;
    wf = fopen("out.dat", "w") ;
    for(i = 0 ; i < 10 ; i++)
    {
       fgets(line, N, rf) ;
       p = strchr(line, '\n') ;
       if (p != NULL) *p = 0 ;
       num = fun(line) ;
       fprintf(wf, "%d\n", num) ;
    }
    fclose(rf) ;
    fclose(wf) ;
}
1.(1)filename    (2)SEEK_END   (3)&n
2. p=(NODE *)malloc(sizeof(NODE));
    return  h;
3. int  fun( char  *s)
    {
        int  flag=0,n=0;
        for ( ; *s; s++)
        {
           if (flag)
           {
               if (*s==' ') flag=0;
           }
           else  if (*s!=' ')
           {
                flag = 1;
                n++;
           }
        }
        return n;
    }
第63套参考答案

第64套

1.程序填空题

给定程序中,函数fun的功能是:将形参所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。

例如,形参s所指的字符串为:Abc@1x56,程序执行后t所指字符数组中的字符串应为:A@156。

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

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

#include <stdio.h>
int fun(char  *s, char  *t)
{ 
    int  n=0;
    while(*s)
    { 
        if(*s < 97) 
        {
    /**********found**********/
            *(t+n)= __1__ ;  n++;  
        }
    /**********found**********/
        __2__ ;
    }
    *(t+n)=0;
    /**********found**********/
    return  __3__ ;
}
int main()
{ 
    char  s[81],t[81];    
    int  n;
    printf("\nEnter a string:\n");  gets(s);
    n=fun(s,t);
    printf("\nThere are %d letter which ASCII code is less than 97: %s\n",n,t);
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。

例如,n=8时,输入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763,所得平均值为:195.838745,在平均值以上的实数个数应为:5。

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

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

#include <stdio.h>
int fun(float x[], int n)
{
    /************found************/
    int j, c=0, float xa=0.0;
    for (j=0; j<n; j++ )
       xa += x[j]/n;
    printf("ave =%f\n",xa);
    for (j=0; j<n; j++ )
    /************found************/
       if (x[j] => xa)
          c++;
    return c;
}
int main()
{  
    float x[100]={193.199,195.673,195.757,196.051,
               196.092, 196.596, 196.579, 196.763};
    printf("%d\n", fun (x, 8));
    return 0;
}

3.程序设计题

编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。

P=m!/(n!(m-n)!)

例如:m=12,n=8时,运行结果为495.000000。

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

#include <stdio.h>
void NONO(void);
float  fun(int m, int n)
{

}
int main()
{
   printf("P=%f\n", fun (12,8));
   NONO();
   return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
   FILE *fp, *wf ;
   int i, m, n ;
   float s;
   fp = fopen("in.dat","r") ;
   wf = fopen("out.dat","w") ;
   for(i = 0 ; i < 10 ; i++)
   {
      fscanf(fp, "%d,%d", &m, &n) ;
      s = fun(m, n) ;
      fprintf(wf, "%f\n", s) ;
   }
   fclose(fp) ;
   fclose(wf) ;
}
1.(1)*s   (2)s++    (3)n
2. int j, c=0; float xa=0.0;
    if (x[j] >= xa)
3. float  fun(int m, int n)
    {
        float a1=1,a2=1,a3=1;
        int i;
        for (i=1;i<=m;i++) a1*=i;
        for (i=1;i<=n;i++) a2*=i;
        for (i=1;i<=m-n;i++) a3*=i;
        return a1/a2/a3;
    }
第64套参考答案

第65套

1.程序填空题

给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。

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

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

#include <stdio.h>
#include <stdlib.h>
#define  N  20
void  fun( int  *a)
{ 
    int  i, x, n=0;
    x=rand()%20;
    /**********found**********/
    while (n<__1__)
    {  
        for(i=0; i<n; i++ )
    /**********found**********/
           if( x==a[i] ) __2__;
    /**********found**********/
        if( i==__3__) { a[n]=x; n++; }
        x=rand()%20;
    }
}
int main()
{ 
    int  x[N]={0} ,i;
    fun( x );
    printf("The result :  \n");
    for( i=0; i<N; i++ )
    { 
        printf("%4d",x[i]);
        if((i+1)%5==0)printf("\n");
    }
    printf("\n");
    return 0;
}

2.程序修改题

给定程序中,函数fun的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。

例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。

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

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

#include <stdio.h>
#include <math.h>
double funx(double  x)
{   return(2*x*x*x-4*x*x+3*x-6);  }
double fun( double  m, double  n)
{
    /************found************/
    int  r;
    r=(m+n)/2;
    /************found************/
    while(fabs(n-m)<0.001)
    {   
        if(funx(r)*funx(n)<0)  m=r;
        else  n=r;
        r=(m+n)/2;
    }
    return  r;
}
int main( )
{  
    double  m,n, root;
    printf("Enter  m  n :  \n"); 
    scanf("%lf%lf",&m,&n);
    root=fun( m,n );
    printf("root = %6.3f\n",root);
    return 0;
}

3.程序设计题

假定输入的字符串中只包含字母和*号。编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。

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

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

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

}
int main()
{
    char s[81],*t,*f;
    printf("Enter a string:\n");
    gets(s);
    t=f=s;
    while(*t) t++;
    t--;
    while (*t=='*') t--;
    while (*f=='*') f++;
    fun(s,f,t);
    printf("The string after deleted:\n");puts(s);
    NONO();
    return 0;
}
void NONO(void)
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
    输出数据,关闭文件。 */
    char s[81],*t,*f;
    int i;
    FILE  *rf,*wf;
    rf = fopen("in.dat","r");
    wf = fopen("out.dat", "w") ;
    for (i=0;i<4;i++)
    {
        fscanf(rf,"%s",s);
        t=f=s;
        while(*t) t++;
        t--;
        while (*t=='*') t--;
        while (*f=='*') f++;
        fun(s,f,t);
        fprintf(wf,"%s\n",s);
    }
    fclose(rf);
    fclose(wf) ;
 }
1.(1)N  或 20   (2)break   (3)n
2. double  r;
    while(fabs(n-m)>=0.001)
3. void fun(char *a,char *h,char *p)
    {
         char *t1,*t2;
         for (t1=t2=h;*t1!='\0';t1++)
             if ((t1<=p && *t1!='*') || t1>p)
             {
                 *t2=*t1;
                  t2++;
             }
        *t2='\0';
    }
第65套参考答案

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

相关文章

  • 计算机等级考试二级C语言上机题集(第56~60套)
    第56套1.程序填空题给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,......
  • 计算机等级考试二级C语言上机题集(第51~55套)
    第51套1.程序填空题给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6......
  • 初学C语言(3)
    由于疫情原因在学校无法更新。常量:1.字面常量:直接输入即可。如图:2.const修饰的常量:intmain(){constintnum=3;//语法形式为const+数据类型+变量名+=+变......
  • 嵌入式-C语言基础:联合体和共用体的概念
    有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间。结构体和共用体的区别:(1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定。(2)结构体元......
  • c语言学习--静态函数
    静态函数 #include<stdio.h>//这是静态函数,静态函数只能在当前文件调用,其他文件下面的函数是没法调用到这个函数的staticvoidfun1(){printf("helloworld"......
  • C语言学习---星花与取地址&----以及多级指针
    #include<stdio.h>intmain{//对一个表达式加*,就会对表达式减一级星花*,//如果对表达式取&,就会加一级*int*p;int**q;q......
  • 数据分析面试题集锦(四)
    大家好,今天整理数据分析面试题集锦(四),经常会被问到,“数据分析需要学习什么技能?”,“针对实际的业务场景,如何使用数据分析工具去分析?”基于此作者总结数据分析面试常用的问题......
  • C语言_03
    Video4回顾define不是关键字,只是一种指令。while循环中不能出现continue,但是可以出现if指针&-取地址操作符int*或者double*等代表后面的变量为指针变量比如:inta=10,int*......
  • C语言数据结构 -BST 树的常规操作
       #include<iostream>#include<queue>//bst树structnode{node*lchild;node*rchild;intdata;};voidinsert(node**root,intval)......
  • c语言的判断与循环
    前言:C语言所编写的程序是一个结构化程序我们的生活中时时刻刻都离不开三种结构:1.顺序结构;2.选择;3.循环。我们的世界就是由这三种结构组成,无时无刻我们都在作出选择,每一天的......