已知线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态。() void f30(SeqList *L) { int i,j; for (i=j=0;i<L->length; i++) if(L->data[i]>=0) { if(i!=j) L->data[j]=L->data[i]; j++;} L->length=j; }A.L=(-7,-8,0,-11,-10)B.L=(21,19,34,30)C.L=(21,19,0,34,30)D.L=(-7,

题目

已知线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态。() void f30(SeqList *L) { int i,j; for (i=j=0;i<L->length; i++) if(L->data[i]>=0) { if(i!=j) L->data[j]=L->data[i]; j++;} L->length=j; }

A.L=(-7,-8,0,-11,-10)

B.L=(21,19,34,30)

C.L=(21,19,0,34,30)

D.L=(-7,-8,-11,-10)


相似考题

1.阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。【程序】include <iostream.h>include <stdio.h>include <string.h>class string{int length;char *data;public:int get_length() {return length;}char *get_data() {return data;}~string() {delete data;}int set data(int in_length, char *in_data);int set_data(char *data);void print() {cout<<data<<endl;}};class edit_string: public string{int cursor;public:int get_cursor() {return cursor;}void move_cursor(int dis) {cursor=dis;}int add_data(string *new_data);void delete_data(int num);};int string::set_data(int in_length,char *in_data){length=in_length;if(!data)delete data;(1)strcpy(data,in_data);return length;}int string::set data(char *in_data){(2)if(!data)delete data;(1)strcpy(data,in_data);return length;}int edit_string::add_data(string *new_data){int n,k,m;char *cp,*pt;n=new_data->get_length();pt=new_data->get_data();cp=this->get_data();m=this->get_length();char *news=new char[n+m+1];for(int i=0; i<cursor; i++)news[i]=cp[i];k=i;for(int j=0; j<n; i++,j++)news[i]=pt[j];cursor=i;for(j=k; j<m; j++,i++)(3)news[i]='\0';(4)delete news;return cursor;}void edit string::delete_data( int num){int m;char *cp;cp=this->get_data();m=this->get_length();for(int i=cursor; i<m; i++)(5)cp[i]='\0';}

更多“已知线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态。() void f30(SeqList *L) { int i,j; for (i=j=0;i<L->length; i++) if(L->data[i]>=0) { if(i!=j) L->data[j]=L->data[i]; j++;} L->length=j; }”相关问题
  • 第1题:

    执行下列语句后,变量n的值是______。

    int n=0;

    for(int i=1;i<=3;i++)

    for(int j=1;j<<=i;j++)

    n++;


    正确答案:6
    6 解析:当i=1时,内循环中的i的值为1,n目加一次,n=1;当i=2时,内循环中的j的值为i和2,n自加两次,n=3,当i=3时,内循环中的i的值为1、2、3,n自加三次,n=6。

  • 第2题:

    下面的程序段运行后,输出结果是

    int i,j,x=0;

    static int a[8][8];

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

    for(j=0;j<3;j++)

    a[i][j]=2*i+j;

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

    x+=a[i][j];

    printf("%d",x);

    A.9

    B.不确定值

    C.0

    D.18


    正确答案:C
    解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:
    0  1  2
    2  3  4
    4  5  6
    由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

  • 第3题:

    下列程序的输出结果是 include void main( ) {int a[3],i,j,k=2; for(i=

    下列程序的输出结果是 #include<iostream.h> void main( ) { int a[3],i,j,k=2; for(i=0;i<3;i++)a[i]=i; for(i=0;i<k;i++) for(j=0;j<k;j++) a[j]=a[i]; cout<<a[2];}

    A.2

    B.3

    C.1

    D.0


    正确答案:A
    解析:本题里有三个for循环,但要分清楚,第一个是单独的给三个元素赋值,赋完值后三个a[0]=0,a[1]=1,a[2]=2;后面的两个for是嵌套循环,对数组元素的赋值,但由于k=2,初值已定for里的条件是小于k,所以不管怎么处理都影响不到a[2],故答案为2。

  • 第4题:

    以下程序的输出结果是( )。 main { int a[3][3]=“l,2),{3,4),{5,6)},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j]; printf(”%d\n”,s); }

    A.18

    B.19

    C.20

    D.21


    正确答案:A
    循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。

  • 第5题:

    有下列程序:

    void sort(int a[],int n)

    { int i,j,t;

    for(i=0;i<n-l;i++)

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

    if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;}

    }

    main

    { int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;

    sort(aa+2,5);

    for(i=0;i<10;i++)printf("%d,",aa[i]);

    printf("\n");

    }

    程序运行后的输出结果是( )。

    A.1,2,3,4,5,6,7,8,9,l0,

    B.1,2,7,6,3,4,5,8,9,10,

    C.1,2,7,6,5,4,3,8,9,10,

    D.1,2,9,8,7,6,5,4,3,10,


    正确答案:C
    本题考查排序的使用由sort函数的两层for循环语句可知,其二々能是把数组a口中的元素按照从大到小的顺序进行排列。在main函数中首先定义了一维整型数组aa[10],然后调用sort(aa+2,5)实现从数组aa中下标为2的元素“3”开始.其后连续的5个元素从大到小进行排列,其余元素不变。

  • 第6题:

    请完成下列Java程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为10的数组,里面按照数组下标顺序存放0~9,输出交换位置后的数组。

    注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。

    程序运行结果如下:

    9173546280

    public class ex20_2 {

    private int[] a=new int[10];

    public static void main(String[] args)

    ex20_2 obj20_2=new ex20_2 );

    obj20_2. method ( );

    }

    public void init () {

    for(int i=0;i<a.length;i++) {

    a[i] =i;

    }

    }

    public void method() {

    int c,i,j;

    i=0;

    j=a.length-1;

    init();

    while(i<j){

    while((a[i]%2==1)&&i<j)

    i++;

    while((a[j]%2==0)&&i<j)

    j--

    if(i<j){

    c=a [i];

    ______________;

    a[j]=c;

    _______________;

    }

    }

    for(i=0;i<a.length;i++){

    System.out.print(Integer.toString(a[i]));

    }

    }

    }


    正确答案:a[i]=a[j] i++
    a[i]=a[j] i++ 解析:本题主要考查数组操作while语句的嵌套。解题关键是会使用双向查找方法查找数组中的数,使用2个下标变量i,j分别从数组的第一个和最后一个元素开始向中间进行搜索,提高搜索效率,若a[i]为偶数,a[j]为奇数,则交换,同时i++,j--,即 i向右、j向左扫描;若a[i]为奇数,a[j]为偶数,则i++,j--;若a[i]为奇数,a[j]为奇数,则j不变,i++;若a[i]为偶数,a[j]为偶数,则i不变,j--;当i=j 时结束扫描。本题中,第1个空,交换a[i]和a[j],是上述算法中的第一种情况;第2个空, i++下标变量i向右移动。

  • 第7题:

    下面程序用于计算矩阵的两条对角线上的元素之和。补充下列语句,实现该功能。

    include<iostream.h>

    void main(){

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

    int sum1=0,sum2=0,i,j;

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

    for(j=0;j<3;j++)

    if(i==j)sum1+=a[i][j];

    for(i=0;i<3:i++)

    for(j=2;【 】;j--)

    if(i+j==2)sum2+=a[i][j];

    }


    正确答案:j>=0
    j>=0

  • 第8题:

    有以下程序:struct S{int n;int a[20];};void f(struct S*P){int i,j,t;for(i=0;in-1;i++)fo

    有以下程序: struct S{int n;int a[20];}; void f(struct S*P) { int i,j,t; for(i=0;i<P->n-1;i++) for(j=j+1;j<P->n-1;j++) if(p->a[i]>p->a[j]) {t=P->a[i];p->a[i]=P->a[j];p->a[j]=t} } main() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。

    A.3

    B.4

    C.5

    D.6


    正确答案:A
    解析:在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体指针类型的指针p,外层循环变量i表示数组的第i个元素,内层循环j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员,并把它们进行从小到大排序,最后输出。

  • 第9题:

    阅读下面求质数的程序 import java.lang.Math.*: public class MorePrimesTest { public static void main(String[] args) { long[] primes=new long[20]; primes[0]=2L; primes[0]=3L; long number=5L; outer: for(int count=2;count<primes.length;number+=2L) { long limit=(long)Math.ceil(Math.sqrt((double)number)); for(int i=1;i<count&&primes[i]<=limit;i++) { if(number primes[i]==OL)continue outer; } primes[count++]=number; } for(int J=0;j<primes.length;j++) { long n=primes[j]; System.out.println(n); } } } 程序下画线处应填入的正确选项是

    A.&

    B.*

    C./

    D.%


    正确答案:D

  • 第10题:

    若有以下程序: #include〈iostream〉 using namespace std; int main() { int data[4],i,j,temp; for (i=O; i<4; i++) cin>>data[i]; for (i=1; i<4; i++) { j = i-1; temp = data[i]; while (data [j ] >temp&&j >=0) { data[j+1] = data[j]; j--; } data[j+1] = temp; } for(i=O;i<4;i++) cout〈〈data[i]〈〈" "; cout〈〈end1; return 0; }

    A.2843

    B.2348

    C.8243

    D.8432


    正确答案:B
    解析:本题属于综合题,考查数组和循环语句两方面的知识。此题看起来很复杂,其实不然,根据程序逐步分析:①在程序第1个for语句中,为数组data赋输入的值,即2,8,4,3。②第2个for语句是嵌套式循环,循环次数是3次,即从1到3。第1次循环时,i=1,执行“j=i-1”后,j=0,然后把data[1]的值赋给temp,再进入while循环。③while后的条件表达式“data[j]〉temp&&j〉=0”,就是当data刚大于temp,同时j不小于0时执行while循环体。当while条件表达式成立时,执行“data[j+1]=data[j]”,即当data刚大于data[j]大于data[j+1]时,把它们俩的值交换一下,以此类推,最后实现把数组中的数从小到大排列起来。④最后一个for语句用于打印经过程序处理后数组中的元素。

  • 第11题:

    写出算法的功能。intfun(sqstring*s,sqstring*t,intstart){inti=start-1,j=0;while(ilen&&jlen)if(s->data[i]==t->data[j]){i++;j++;}else{i=i-j+1;j=0;}if(j>=t->len)returni-t->len+1;elsereturn-1;}


    正确答案: 串的模式匹配算法

  • 第12题:

    问答题
    写出算法的功能。intfun(sqstring*s,sqstring*t,intstart){inti=start-1,j=0;while(ilen&&jlen)if(s->data[i]==t->data[j]){i++;j++;}else{i=i-j+1;j=0;}if(j>=t->len)returni-t->len+1;elsereturn-1;}

    正确答案: 串的模式匹配算法
    解析: 暂无解析

  • 第13题:

    ( 7 )执行下列语句后,变量 sum 的值是 ___________ 。

    int sum=0;

    for(int i=1;i<=3;i++)

    for(int j=1;j<=i;j++)

    sum++;


    正确答案:

  • 第14题:

    以下程序的输出结果是()。includevoid main(){int a(5),b(6),i(0),j(0);switch(a) {

    以下程序的输出结果是( )。 #include<iostream.h> void main() { int a(5),b(6),i(0),j(0); switch(a) { case 5:switch(b) { case 5:i++;break; case 6:j++;break; default:i++;j++; } case 6:i++; j++; break; default:i++;j++; } cout<<i<<","<<j<<endl; }

    A.1,2

    B.1,3

    C.2,2

    D.2,3


    正确答案:A

  • 第15题:

    有以下程序

    include<stdio.h>

    main( )

    {int n[2l,ij;

    for(i=0;i<2;i++)n[i]=0;

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

    for(j=0;j<2;j++)n[j]=n[i]+1;

    printf(”%d\n”,n[1]);

    }

    程序运行后的输出结果是________ 。


    正确答案:3
    3 解析:初始化后:
    N[0]=0,n[1]=0
    i=0,j=0,n[0]=n[0]+1=1
    j=1,n[1]=n[0]+1=1=2
    i=1,j=0,n[0]=n[1]+1=3
    j=1,n[1]=n[1]+1=3

  • 第16题:

    下列程序执行后的结果是______。

    public class ex24

    {

    public static void main(String[] args)

    {

    int j=10;

    a1: for(int i=3;i>0;i--)

    {

    j-=i;

    int m=l;

    a2: while (m<j)

    {

    if (i<=m)

    continue a1;

    j/=m++;

    }

    }

    System.out.println(j);

    }

    }

    下列嵌套的循环程序执行后,结果是______。 public class ax25 { public static void main(String[] args) { int sum=0; for(int i=0;i<=5;i++) { for(int j=10;j>3*i;j--) { sum+=j*i; } } System.out.println(sum); } }

    A.136

    B.127

    C.147

    D.153


    正确答案:C

  • 第17题:

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

    [函数2.1说明]

    函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。

    [函数2.1]

    fun1 (int m, int k, int xx [] )

    {

    inti, j, s=0;

    for ( i=m+1; k>0; i++ )

    {for (j=2; j<i; j++ )

    if ( i %j=0 )

    (1)

    if( i==j )

    {

    (2)

    k--; }

    }

    }

    [函数2.2说明]

    函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。

    [函数2.2]

    void fun2 ( )

    {

    int i, j;

    int a[10][10];

    printf ("\n" );

    for (i=0; i<10; i++

    {a [i] [0]=1;

    (3))

    for (i=2; i<l0; i++ )

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

    (4)

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

    {for (j=0; j<=i; j++ )

    (5)

    printf ( "\n" );

    }

    }


    正确答案:(1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d"a[i] [j]);
    (1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d",a[i] [j]);

  • 第18题:

    若有以下程序main(){ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s +=a[i][j]; } } printf("%d\n",s);}程序执行后的输出结果是


    正确答案:58
    在本题程序中,首先定义了一个4*4的二维数组a,并进行了初始化操作,然后定义了三个整型变量,i和j分别作为循环变量,而s作用一个记录和的变量被初始化为0。然后开始循环,第一层循环的循环变量i被初始化为0,循环结束条件是i<4,即循环执行四次,而第二层循环同样是4次,总循环此时为4´4=16次,如果逐次循环分析,工作量和花费时间太多,且一不小心容易出错,这种情况下,我们应该找出一个更简便的方法。
    从循环体中的if(a[i][j]<0) continue;我们可以知道,只要数组元素小于0,结束本次循环,即不参与求和运算,由if(a[i][j]==0) break;我们可以知道,只要数组元素等于0,结束本层循环,即同一行的数组元素都不用参加求和运算,从数组a的初始化情况我们可以看到,在第二行的第一个元素为0,即第二行都不参加求和运算,而第三行的第三个元素为0,即该行最后一个元素不参加求和运算。这样,参与求和运算的数组元素必须满足大于0,且其前面的该行元素无0出现。由此可以知道,变量s的最后结果应该为1+2+23+32=58。因此,程序最后的输出结果为58。

  • 第19题:

    有以下程序: #include<stdio.h> main( ) {int b[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l; for(i=0;i<3;i++) for(j=1;j<=i;j++)t+=b[i][b[j][i]]; printf("%d\n",t); } 程序运行后的输出结果是( )。

    A.1

    B.3

    C.4

    D.0


    正确答案:C
    本题考查了两层for循环。外层循环增量i的值作为内层循环执行次数的值使用。

  • 第20题:

    以下程序的输出结果是 main() { int b[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d\n",t); }

    A.3

    B.4

    C.1

    D.9


    正确答案:B
    解析:本题中定义了一个二维数组b并初始化,定义了一个变量t并赋初值1。接着通过一个二重循环将若干个元素的值加到变量t中。循环的执行步骤是:外层循环变量i=0时,内层循环变量j=i,执行语句“t=t+b[i][b][j][j]]”,相当于t=t+b[0][b][0][0]],由于b[0][0]的值为0,得到t的值为1;依次类推,循环共执行了3次,最后输出t的值为4。所以,4个选项中B为所选。

  • 第21题:

    写出模板函数实现数值型数组元素值按从小到大排序的程序。

    include<iostream>

    using namespace std;

    template <class T>

    void sort(T b[],int n)

    {

    T temp;

    int i,j;

    T *a=new T[n];

    for (i=0;i<n;i++){a[i]=b[i];}

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

    {

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

    { if(a[i]>a[j])

    {temp=a[i];

    a[i]=a[j];

    a[j]=temp;

    }

    }

    }

    for(i=0;i<n;i++){cout<<a[i]<<" ";}

    cout<<endl;

    delete []a;

    }

    void main()

    {

    int i,n=6;

    int a[]={5,1,9,10,3,8};

    ____________;

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

    {cout<<a[i]<<" ";}

    cout<<endl;

    }


    正确答案:
    template<classT><int>(a,6)

  • 第22题:

    下面的程序段运行后,输出结果是 int i,j,x=0; static int a[8][8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x);

    A.9

    B.不确定值

    C.0

    D.18


    正确答案:C
    解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:

    由于数组的下标是从。开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

  • 第23题:

    假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。voidf2(SeqList*L){inti,j,k;k=0;for(i=0;ilength;i++){for(j=0;jdata[i]!=L->data[j];j++);if(j==k){if(k!=i)L->data[k]=L->data[i];k++;}}L->length=k;}


    正确答案: (3,7,2,1,8)删除顺序表中重复的元素

  • 第24题:

    问答题
    已知gi,j=102,gi+1,J=112,gi+1,j+1=126,k-i =Δ/4,l-Δj=Δ/4, 为采样间隔,用双线性插值计算gk,l。

    正确答案: g(k,l)=W(i,j) g(i,j)+W(i+1,j) g(i+1,j)+W(i,j+1) g(i,j+1)+W(i+1,j+1)        
    =(1-Δ/4)(1-Δ/4)*102+(1-Δ/4) /4*112+Δ/4(1-Δ/4)*118+(Δ/4)*(Δ/4)*126
    =102+13/2*Δ -1/8*Δ2
    解析: 暂无解析