niusouti.com

●试题四【说明】下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。例如:若输入2857848328则应输出The max:8Total:4∥最大数出现次数The positions:1469【函数】#include<stdio.h>#define M 10int fun(int*a,int*n,int pos[]){int i,k max=-32767;(1)for(i=0;i<M;i++)if( (2) )max=a[i];for(i=0;i<M;i

题目

●试题四

【说明】

下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。

例如:若输入

2857848328

则应输出

The max:8

Total:4∥最大数出现次数

The positions:1469

【函数】

#include<stdio.h>

#define M 10

int fun(int*a,int*n,int pos[])

{

int i,k max=-32767;

(1)

for(i=0;i<M;i++)

if( (2) )max=a[i];

for(i=0;i<M;i++)

if( (3) )pos[k++]=i;

*n=k;

return max;

}

main()

{

int a[M],pos[M],i=0,j,n;

printf("Enter 10 number:");

for(i=0;i<M;i++)scanf("%d", (4) );

j=fun( (5) );

printf("The max:%d\n",j);

printf("Total:%d",n);

printf("The position:");

for(i=0;i<n;i++)printf("%4d",pos[i]);

printf("\n");

}


相似考题
更多“●试题四 【说明】 下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标 ”相关问题
  • 第1题:

    第四题 阅读以下说明、C函数和问题,回答问题1和问题2将解答填入答题纸的对应栏内。
    【说明】
    当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。

    【C函数1】
    int biSearch(int r[],int low,int high,int key)
    //r[low..high] 中的元素按非递减顺序排列
    //用二分查找法在数组r中查找与key相同的元素
    //若找到则返回该元素在数组r的下标,否则返回-1
    {
    int mid;
    while((1)) {
    mid = (low+high)/2 ;
    if (key ==r[mid])
    return mid;
    else if (key (2);
    else
    (3);
    }/*while*/
    return -1;
    }/*biSearch*/

    【C 函数 2】
    int biSearch_rec(int r[],int low,int high,int key)
    //r[low..high]中的元素按非递减顺序排列
    //用二分查找法在数组r中查找与key相同的元素
    //若找到则返回该元素在数组r的下标,否则返回-1
    {
    int mid;
    if((4)) {
    mid = (low+high)/2 ;
    if (key ==r[mid])
    return mid;
    else if (key return biSearch_rec((5),key);
    else
    return biSearch_rec((6),key);
    }/*if*/
    return -1;
    }/*biSearch_rec*/ 问题:4.1 (12分)
    请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 问题:4.2 (3分)
    若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。
    (7)备选答案:
    A.[log2(n+1)] B.[n/2] C.n-1 D.n


    答案:
    解析:
    low<=high
    (2)high=mid-1
    (3)low=mid+1
    (4)low<=high
    (5)low,mid-1
    (6)mid+1,high
    (7)A
    【解析】

    本题考察折半查找。二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
    二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x。
    总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。

  • 第2题:

    3、有程序段: int a[10], i; for(i=1; i<=10; i++) scanf("%d", &a[i]); 则以下说法正确的是()。

    A.该程序段的功能是从键盘接收10个数赋值给数组各元素

    B.该程序段的功能是输出10个数组元素

    C.该程序段运行将会出现错误,因为数组a的下标应从0到9,而循环中数组下标从1到10,会发生数组下标越界问题

    D.该程序段只能给数组a中从1到9的9个元素赋值


    C

  • 第3题:

    8、将一个三对角矩阵A[100][100]中的元素按行存储在一维数组B[298]中,矩阵A中的元素A[55][56]在数组B中的下标为()。 (说明:矩阵及数组的下标均从0开始)

    A.164

    B.165

    C.166

    D.167


    A 解析:前65行共有64×3+2(第一行2个元素):194个,元素A是第66行的第一个元素,所以它在数组B中的下标为195。

  • 第4题:

    编写程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。


    D

  • 第5题:

    将一个三对角矩阵A[100][100]中的元素按行存储在一维数组B[298]中,矩阵A中的元素A[55][56]在数组B中的下标为()。 (说明:矩阵及数组的下标均从0开始)

    A.164

    B.165

    C.166

    D.167


    A 解析:前65行共有64×3+2(第一行2个元素):194个,元素A是第66行的第一个元素,所以它在数组B中的下标为195。