下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #include<conio.h> #include<stdio.h> int fun(int *s,int t,int *k) { int i; *k=0; for(i=0;i<t;i++) if(s[*k]<s[i])*k=i; return s[*k];} main() { int a[10]={876,675,896,101,301,401,980,431

题目

下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #include<conio.h> #include<stdio.h> int fun(int *s,int t,int *k) { int i; *k=0; for(i=0;i<t;i++) if(s[*k]<s[i])*k=i; return s[*k];} main() { int a[10]={876,675,896,101,301,401,980,431,45l,777},k; clrscr(); fun(a,10,&k); printf("%d,%d\n",k,a[k]);} 则输出结果为

A.7,431

B.6

C.980

D.6,980


相似考题
更多“下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #include<conio.h> #include<stdio.h> int fun(int *s,int t,int *k) { int i; *k=0; for(i=0;i<t;i++) if(s[*k]<s[i])*k=i; return s[*k];} main() { int a[10]={876,675,896,101,301,401,980,431”相关问题
  • 第1题:

    有以下程序inclUdevoidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i

    有以下程序 #inclUde <stdio.h> void fun(int *s,int n1,int n2) { int i,j,t; i=n1; j=n2; while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4

    A.0987654321

    B.4321098765

    C.5678901234

    D.0987651234


    正确答案:C
    解析: 函数fun(int*s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第2题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B

  • 第3题:

    有以下程序: include using namespace std; int f(int); int main() {int i;for(i=0;

    有以下程序:

    include <iostream>

    using namespace std;

    int f(int);

    int main()

    {

    int i;

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

    cout<<f(i)<<" ";

    return 0;

    }

    int f(int i)

    {

    static int k=1;

    for(;i>0;i--)

    k+=i;


    正确答案:1 2 5 11 21
    1 2 5 11 21 解析:函数f()中定义了一个内部静态变量k,其作用域仍在定义它的函数内。但该类型变量采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤销,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值0,并且只在编译时初始化一次。

  • 第4题:

    下列程序是用来判断数组中特定元素的位置所在,则输出结果为includeinclude

    下列程序是用来判断数组中特定元素的位置所在,则输出结果为 #include<conio.h> #include<iostream.h> int fun(int * s,int t,int * k) { int i; *k=0; for(i=0;i<t;i++) if(s[ * k] <s[i] ) *k=i; retum s[ * k] ;} void main( ) { int a[10] ={876,675,896,101,301,401,980,431,451,777},k; fun(a,10,&k) ; cout < < k < < ',' < < a[k] ;}

    A.7,431

    B.6

    C.980

    D.6,980


    正确答案:D
    解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应认为
    * k的值为数组中的某一下标值,即 * k=0。

  • 第5题:

    下列程序是用来判断数组中特定元素的位置所在的。includeincludeint fun(int

    下列程序是用来判断数组中特定元素的位置所在的。 #include<conio.h> #include<stdio.h> int fun(int *s,int t,int *k) {int i; *k=0; for(i=0;i<t;i++) if(s[*k]<s[i])*k=i; returns[*k];} main() { int a[10]={876,675,896,101,301,401,980,431,451,777},k; fun

    A.7,431

    B.6

    C.980

    D.6,980


    正确答案:D
    解析: 本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

  • 第6题:

    有以下程序#include <stdio.h>int fun(int (*s)[4],int n, int k){ int m, i; m=s[0][k]; for(i=l; i<n; i++) if(s[i][k]>m) m=s[i][k]; return m;}main(){ int a[4][4]={{1,2,3,4},{11,12,13,14},{2l,22,23,24},{31,32,33,34}}; printf("%d\n", fun(a,4,0));}程序的运行结果是A.4 B.34C.31 D.32


    正确答案:C
    本题考查的重点还是二维数组的操作。题目将二维数组与函数相结合,考查了函数对二维数组的调用。程序主体分为两个部分:主函数main和函数fun。main函数结构较简单,功能很明确,首先初始化了一个二维数组,随后将fun(a,4,0)作为printf函数的实参输出。下面分析一下fun函数的作用,fun函数包括三个形参,其中一个形参为用指针定义的二维数组,另外两个为整型常量n和k。在fun函数中,先定义了一个整型变量m=s[0][k],表示m为s中第1行第k+1列的数据。下面的for循环是题目的关键,该for循环的意义是令m为数组s中k+1列从第1行到第n行的数据中最大的数值。题目中m的初始值为a[0][0],即m=1,从第1行到第4行第1列上的数值分别为1,11,21,31。最大的数为31,令m=31,返回m,并将m作为结果输出。

  • 第7题:

    有以下程序 include int fun(int (*s)[4],int n,int k) {int m,i;

    有以下程序 #include <stdio.h> int fun(int (*s)[4],int n,int k) {int m,i; m=s[0][kl; for(i=1;i<n;i++) if(s[i][k]>m) m=s[i][k]; return m; } main() { int a[4][4]={{1,2,3,4},{11,12,13,14}, {21,22,23,24}, {31,32,33,34}}; printf("%d\n",fun(a,4,0)); } 程序的运行结果是______。

    A.4

    B.34

    C.31

    D.32


    正确答案:C
    解析:在主函数中,定义并初始化了4行4列的二维数组a,并通过调用fun函数,将fun函数中指向一维数组的指针变量s指向了二维数组a的首地址,使得指针变量s与数组a共用同一存储单元。在fun函数中,通过for循环,求得了数组a第0列中最大的值,并赋给m返回主函数。由于数组a第0列的值分别为1、11、21、31,故其最大值是31。

  • 第8题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); }

    A.k=p

    B.*k=p-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第9题:

    请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

    例如,输入如下整数:

    876 675 896 101 301 401 980 431 451 777

    则输出结果为6,980。

    注意:部分源程序给出如下。

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    int fun(int *s,int t,int *k)

    {

    }

    main()

    {

    int a[10]={ 876,675,896,101,301,401,

    980,431,451,777},k;

    clrscr();

    fun(a, 10, &k);

    printf("%d, %d\n ", k, a[k]);

    }


    正确答案:int fun(int *sint tint *k) { int i; *k=0; /*k所指的数是数组的下标值*/ for(i=0;it;i++) if(s[*k]s[i]) *k=i; /*找到数组的最大元素把该元素的下标赋给k所指的数*/ return s[*k]; /*返回数组的最大元素*/ }
    int fun(int *s,int t,int *k) { int i; *k=0; /*k所指的数是数组的下标值*/ for(i=0;it;i++) if(s[*k]s[i]) *k=i; /*找到数组的最大元素,把该元素的下标赋给k所指的数*/ return s[*k]; /*返回数组的最大元素*/ } 解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。

  • 第10题:

    有以下程序

    #include <stdio.h>

    void fun(int *s,int n1,int n2)

    { int i,j,t;

    i=n1; j=n2;

    while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

    }

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,0},k;

    fun(a,0,3); fun(a,4,9); fun(a,0,9);

    for(k=0;k<l0;k++)printf("%d",a[k]); printf("\n");

    }

    程序的运行结果是

    A.0987654321

    B.4321098765

    C.5678901234

    D.0987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第11题:

    下列程序是用来判断数组中特定元素的位置所在的。includeincludeint fun(int

    下列程序是用来判断数组中特定元素的位置所在的。 #include<conic.h> #include<stdio.h> int fun(int *s,int t,int *k) { int i; *k=0; for(i=0;i<t;i++) if(s[*k]<s[i])*k=i; returns[*k];} main() { int a[10]={876,675,896,101,301,401,980,431,451,777},k; fun(a,10,&k); printf("%d,%d\n",k,a[k]);} 如果输入如下整数:876 675 896 101 301 401 980431 451 777 则输出结果为

    A.7,431

    B.6

    C.980

    D.6,980


    正确答案:D
    解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即。k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

  • 第12题:

    试题14

    以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的个数。请填空。

    #include <stdio.h>

    void fun(int s[], int *n, int k, int x)

    { int i;

    for(i=*n-1; i>=k; i- - ) s[ ___ ]=s[i];

    s[k]=x;

    *n=*n+______;

    }

    main()

    { int a[20]={1,2,3,4,5,6,7,8,9,10,11}, i, x=0, k=6, n=11;

    fun(a, &n, k, x);

    for(i=0; i<n; i++) printf(“%4d”,a[i]); printf(“\n”);

    }


    正确答案:
    试题14分析
    因为是把x中的值插入到a数组下标为k的数组元素中,所以首先要将k及其后的元素往后移一位,方法是s[i+1]=s[i],插入之后,因为多了一个元素,要将n中值增1。
    试题14答案
     【14】i+1
    【15】1

  • 第13题:

    以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

    include<iostream.h>

    void fun(int * s,int t,int * k)

    { int i;

    * k=【 】;

    【 】

    if(s[ * k] < s[i]) * k=i;}

    void main( )

    { int a[l0]={ 876,675,896,101,301,401,980,431,451,777 },k;

    fun(a,10,&k);


    正确答案:0 for(i=0;t;i++)
    0 for(i=0;t;i++) 解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应认 * k的值为数组中的某一下标值,即 * k=0。注意:本题采用冒泡法查找一次。

  • 第14题:

    #include <conio.h>

    #include <stdio.h>

    int fun(int *s, int t, int *k)

    { int i;

    *k=0;

    【15】

    if(s[*k]<s[i])*k=i;

    return【16】;

    }

    main()

    {

    int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;

    clrscr();

    fun(a, 10, &k);

    printf("%d, %d\n ", k, a[k]);

    }


    正确答案:
    for(i=0;i<t;i++);0

  • 第15题:

    有以下程序 include int a=1; int f(int c) { stati

    有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

    A.14

    B.15

    C.16

    D.17


    正确答案:A
    解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

  • 第16题:

    以下程序的输出结果是【 】。include int fun(int x) {static int t=0; return(t+=x); }

    以下程序的输出结果是【 】。

    include <stdio.h>

    int fun(int x)

    { static int t=0;

    return(t+=x);

    }

    main()

    int s,i;

    for(i=1 ;i<=5;i++) s=fun(i);

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


    正确答案:15
    15 解析:static类型的变量是静态变量,本题中的静态变量t为静态局部变量。静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用时的值。本题在多次调用fun函数的过程中,只在第一次调用时t的初值为0,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值,所以本程序的作用相当于将1到5数字进行累加,故输出结果为15。

  • 第17题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,( )中需填写的内容是。 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d%d\n" ,k,a[k]);}

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B
    解析:数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。注意:通过数组的首地址引用数组元素。

  • 第18题:

    有以下程序 include void fun(int a[],int n) { int i,t; for(i=0;

    有以下程序 #include <stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;} } main() {int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是______。

    A.345678

    B.876543

    C.1098765

    D.321678


    正确答案:D
    解析:在主函数中,定义了一维数组k,并通过调用fun函数将形参数组a指向实参数组k所在的存储单元,这样,a和 k共用同一存储单元,所以对数组a的元素值的改变相当于对相应数组k的元素值的改变。在fun函数中,通过for循环对数组元素a[0]与a[4]、a[1]与a[3]的值分别作了交换,也即相当于主函数中k[0]与k[4]、k[1]与k[3]的值分别作了交换,此时k中各元素的值为5,4,3,2,1,6,7,8,9,10,故输出k[2]到k[7]的值为321678。

  • 第19题:

    有下列程序: include void fun(int * s,int n1,int n2) { int i,j,

    有下列程序: #include <stdio.h> void fun(int * s,int n1,int n2) { int i,j,t; i=n1;j=n2; while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是( )。

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a[0]-a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]-a[9]这6个元素逆序;调用fun(a,0,9)是将数组中a[0]-a[9]这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。

  • 第20题:

    下述程序的输出结果是()。includevoid main(){int a[20],*p[4];int i,k=0;for(i=0;i<20

    下述程序的输出结果是( )。 #include<stdio.h> void main() {int a[20],*p[4]; int i,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*i+1]; for(i=0;i<4;i++) {k=k+*p[i];} printf("%d",k); }

    A.10

    B.18

    C.6

    D.数组元素引用不合法,输出结果不定


    正确答案:B
    解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

  • 第21题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,括号中需填写的内容是

    #include<stdio.h>

    findmax(int*s,int t,int *k)

    { int p;

    for(p=0, *k=p; p<t; p++)if(s[p]>s[*k])( ); }

    main()

    { int a[10],i,k;

    for(i=0; i<10;i++)scanf(" %d",&a[i]);

    findmax(a,10,&k);

    printf(" %d%d\n",k,a[k];) }

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B
    解析:考查通过指针来引用一维数组的方法。数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。 通过数组的首地址引用数组元素。

  • 第22题:

    若有如下程序: include using namespaee std; int fun() { static int i=0; int s=1;

    若有如下程序: #include<iostream> using namespaee std; int fun() { static int i=0; int s=1; s+=i; i++; return s; } int main() { int i,a=0; for(i=0;i<5;i++) a+=fun(); cout<<a<<end1; return 0; } 程序运行后,输出的结果是( )。

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:由主函数入手,在for循环中调用fun函数,其中调用次数为5次。fun中i为静态变量,有效到文件结束。第一次调用fun后为s=1,a=1;第二次调用后s=2,a=3;第三次s=3,a=6;第四次 s=4,a=10;第五次s=5,a=15。

  • 第23题:

    有以下程序includevoidfun(int*s,intn1,intn2){inti,j,t; i=n1j=n2; while(i

    有以下程序 #include <stdio.h> void fun(int *s,int n1,int n2) { int i,j,t; i=n1 j=n2; while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]); printf("\n"); } 程序的运行结果是

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当 fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5.6,7,8,9,01;再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。