支付宝人工客服在哪儿:第1套上机考试真题

来源:百度文库 编辑:中财网 时间:2024/05/04 11:45:17

第1套上机考试真题

1.程序填空

    给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做,若不同,则插在串的最后。

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

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

    试题程序:  

#include

#include

void fun(char*str, char ch )

{   while (  *str && *str != ch ) str++;

     if( *str   1    ch )

      {  str[0] =ch;

              2    = 0;

}

}

main( )

{    char  s[81],  c;

       printf( "\nPlease enter a string:\n" );  gets ( s );

       printf ("\n Please enter the character to search : " );

       c = getcharO;

       fun(  3   ) ;

       printf( "\nThe result  is %s\n",  s);

1.程序填空

【答案】

(1)!=

(2)str[1]

(3)s,c

【评析】

(1)fun函数中先设置了二个循环从字符串str中寻找字符ch,如果找到则中断循环并保留字符ch的地址,否则一直循环到串尾”。因此通过判断*str的内容即可判断是否已找到字符ch。

(2)如果没有找到字符ch,则在while循环后str指针指向串结束符Ox00,此时应将字符ch写入这里并在下一地址写入一个串结束符Ox00,所以应该是“str[1]。O;”语句。

(3)此句是调用fun()函数,括弧中是其实际参数。

 

 

 

 

 

 

 

 

2.程序修改

    给定程序modi.c中,函数fun的功能是:’根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。

  例如,若输入2        ︳若输入4

    则输出:            ︳则输出:

           1  2         ︳          1  2  3  4

           2  4         ︳          2  4  6  8

                        ︳          3  6  9  12

                        ︳          4  8  12 16

请改正程序中的错误,使它能得出正确结果。

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

试题程序:  

#include

#include

#define M 10

int a[M][M]={0};

fun(int **a, int m)

{ int j,k;

    for (j=0;j

       for (k=0;k

          a[j][k]=k*j;

}

main()

{   int i,j,n;

      clrscr0;

      printf("Enter n:");scanf("%d",&n);

      fun(a,n);

      for(i=0;i

      {   forO=O;j

               print f("%4d",a[i] [j] );

             printf("\n");

}

2.程序修改

【答案】

(1)错误:第5行fun(int**a,int m)  

    正确:fun(int a[][M],Int m)

(2)错误:第9行 a[j][k]=k*j;

    正确:a[j][k]=(k+1)*(j+1);

【评析】

第5行:第二个形参m是用户输入的维数,没有别的名堂,第一个形参是为了指明在函数fun()中要产生的多维数组,“**a”是不能正确表示一个多维数组的,我们应当使用“int a[M][M]”。

第9行:循环体的内容是给m维的多维数组赋值,这个多维数组在列方向是由1开始的自然数,在行方向上是行首第一数的n倍数,显然,“a[j][k]=k*j;”不符合题意,我们应当使用“a[j][k]=(k+1)*(j+1);”。

 

3.程序设计   

    已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。

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

    试题程序:  

#include

#include

#include

#define N 10

typedef struct ss

{ char num[10];int s;} STU;

fun(STU a[],STU *s)

{

}

main()

 {STU

    a[N]= { {"A01",81}, {"A02",89}, {"A03",66}, {"A04", 87}, {"A05",77}, {"A06",90}, {"A07",79}, {"A08",61}, {"A09",80 }, {"A10",71 }},m;

    int i;

    elrser();

    printf("***** The original data *****\n");

    for (i=0;i

    fun(a,&m);

    printf("***** THE RESULT *****\n");

    printfCThe top : %s, %d\n",m.num,m.s);

    NON0( );

}

NON0( )

{\*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

  FILE *rf, *wf;

  STU a[N], m ;

  Int i;

  rf = fopen("bc09.in", "r,) ;

  wf= fopen("bc09.out", "w") ;

  for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, &a[i].s) ;

  fun(a, &m) ;

  fprintf (wf, "The top : %s, %d\n", m.num, re.s) ;

  fclose(rf) ;

  fclose(wf) ;

}

3.程序设计

【答案】

    fun(STU a[],STU。s)

    {    int i;

    STU    *m;  

    re=a;

    for(i=1;i

    if(a[i].s>m[0].s)  m=&a[i];

    s[0].s=m[0].s;  

    strcpy(s[0].Num,m[0].num);/*将m指针中的学生学号复制给s数组中的学号变量*/

    }

【评析】

    从题目的要求来看,我们应建立一个循环来寻找成绩最高的学生记录。我们给出的参考函数中定义了一个指针存放学生记录中的最高成绩。