itgle.com

阅读以下说明和C语言函数,将应填入(n)处。[说明]函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。[函数]int find_Max_

题目

阅读以下说明和C语言函数,将应填入(n)处。

[说明]

函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。

[函数]

int find_Max_Min(int a[],int n)

{/*找出n个元素的数组a的最大、最小元素并输出,返回查找过程元素中的比较次数*/

int i,Count=0;

int temp,Maxnum,Minnum;

for(i=0; i<n/2; i++){

Count=Count+1 /*元素比较次数计数*/

if(a[i]>a[(1)])

{/*数组元素交换代码略*/}

}

Maxnum=a[n-1]; Minnum=a[0];

for(i=1;i<n/2+n%2;i++){

Count=(2); /*元素比较次数计数*/

Minnum=(3)? a[i]:Minnum; /*找最小元素*/

Maxnum=(4)?(5):Maxnum; /*找最大元素*/

}

printf("Max=%d\n",Maxnum);

printf("Min=%d\n",Minnum);

return Count;

}


相似考题
更多“阅读以下说明和C语言函数,将应填入(n)处。[说明] 函数int find_Max_Min(int a[],int n)的功能是: ”相关问题
  • 第1题:

    若有以下函数首部

    int fun (double x[10],int *n)

    则下面针对此函数的函数声明语句中正确的是

    A.int fun(double x, int *n);

    B.int fun(double , int);

    C.int fun(double *x, int n);

    D.int fun(double *, int *);


    正确答案:C
    解析:函数首部int fun(double x[10],int *n)表示这个函数的返回值是整型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在C语言中,一维数组的名字表示的是一维数组的地址,所以选项C)是正确的。

  • 第2题:

    若有以下函数首部 int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是

    A.int fun(double x,int *n);

    B.int fun(double ,int);

    C.int fun(double *x,int n);

    D.int fun(double *,int *);


    正确答案:C
    解析: 函数首部int fun(double x[10],int *n)表示这个函数的返回值是整型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在C语言中,一维数组的名字表示的是一维数组的地址,所以选项C)是正确的。

  • 第3题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明1]

    函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

    [C函数1]

    void fun(char*W,char x,int*n)

    { int i,P;

    p=0;

    w[*n]=x;

    while(x>w[p]) (1) ;

    for(i=*n,i>p;i--)w[i]=(2);

    w[p]=x;

    ++*n;

    }

    [说明2]

    函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

    [C函数2]

    void revstr(char*s)

    { char*p,c;

    if(s==NULL)return;

    p=(3); /*p指向字符串s的最后一个有效字符*/

    while(s<p){ /*交换并移动指针*/

    C=*s;

    (4)=*p;

    (5)=c;

    }

    }


    正确答案:(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)
    (1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--) 解析:函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
    对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。

  • 第4题:

    若有以下函数首部 int fun(double x[lO],int *n) 则下面针对此函数的函数声明语句中正确的是______。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.iht fun(double*,int*);


    正确答案:D
    解析:函数声明可以照写已定义的函数的首部,再加一个号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的—致,即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选顶D正确。

  • 第5题:

    阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。

    [函数2.1说明]

    函数void find(int *a, int n, int * max, int * min)的功能是在长度为n的整型数组a中,查找最大元素和最小元素的下标。main()中给出了调用find函数的一个实例。

    [函数2.1]

    include<stdio.h>

    void find(int *a, int n,int *max,int * min)

    { int i;

    *max =* min=0;

    for(i=1;i<n;i+ +)

    if(a[i]>a[* max]) (1);

    else if(a[i]<a[*min]) (2);

    return;

    main()

    { int a[]={4,6,8,9,0,6},max,min;

    find(a,6,(3));

    printf("%5d%5d\n", max,min);

    }

    [函数2.2说明]

    以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串前端的公共部分。例如:输入的两个字符串分别是abcdefg和abceef,则输出为abc。

    [函数2.2]

    include <stdio.h>

    main()

    { char str1[100],str2[100],str[100],c;

    int i=0,s;

    printf("\nInput string 1:");gets(str1);

    printf("\nInput string 2:");gets(str2);

    while(((4))&&(str1[i]!='\0')&&(str2[i]!='\0')){

    (5);

    i++;

    }

    printf("%s\n",str);

    }


    正确答案:(1) * max=i (2) * min=i (3) &max&min (4) str1[i]= =sir2[i] (5) str[i]=str1[i]或str[i]=str2[i]
    (1) * max=i (2) * min=i (3) &max,&min (4) str1[i]= =sir2[i] (5) str[i]=str1[i]或str[i]=str2[i] 解析:(1)若下标i的数大于当前的最大值,则更新最大元的下标;
    (2)若下标i的数小于当前的最小值,则更新最小元的下标;
    (3)根据find函数对形参的要求,此处应传递max和 min的地址;
    (4)此循环用于获取str1和str2从前端起的公共部分,一旦两字符串在某位置上不等即刻退出循环;
    (5)所求的公共子串应保存于str,因此在循环过程中应不断取出公共部分的每一个字符。

  • 第6题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明1]

    函数int function(int a)的功能是判断指定的正整数是否为素数,若是,返回1,否则返回0。

    [C函数1]

    int function(int a)

    { int yes,i;

    i=2;yes=1;

    while(i<=a/2 && (1) ){

    if( (2) ) yes=0;

    i++;

    }

    return yes;

    }

    [说明2]

    函数int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。

    [C函数2]

    int deleteARR(int*arr,int n)

    { int k,j;

    k=0;j=1;

    while(j<n){

    if( (3) )

    (4)=arr[j];

    j++;

    }

    return (5);

    }


    正确答案:(1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k
    (1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k 解析:对于函数1,增加了一个判断的标志yes,开始进入素数判别循环时置yes=1,则(1)应填“yes”或“yes==1”或“yes !=0”;一旦数n能被某个不等于零的真因子整除,退出循环,则(2)应填“a/i[*]i==a”或“a%i==0”或“!(a%i)”。
    对于函数2,用k记录数组arr[]中不同元素的个数,同时设置工作指针j,将arr[j]与已得到的互不相同元素的最后一个元素进行比较,若不相等,则将其作为已比较的互不相同元素的最后一个元素,所以(3)填“arr[k]!=art[j]”,(4)填“arr[++k]”。最后返回互不相同的元素个数k+1,即(5)填“k+1”或“++k”。