更多“执行下面程序段时,执行S语句的次数为____________。 for(int i=1; i<=n; i++) for(int j=1; j<=i; j++) S;”相关问题
  • 第1题:

    下面C程序段中count++语句执行的次数为(64)。

    for(int i=1;i<=11;i*=2)

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

    count++:

    A.15

    B.16

    C.31

    D.32


    正确答案:A
    解析:程序段中在第一层for循环内,每执行一次,count++就被执行i次,i从1每次翻倍直到8.所以,count++总共被执行的次数是:1+2+4+8=15次。

  • 第2题:

    请阅读下面程序

    public class Test {

    public static void main (String[] args) {

    int i,j;

    for (i=1;i<5;i++) {

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

    system.out.print (i+"X"+j+"="+i*j+" ");

    System.out.println();

    }

    }

    }

    程序执行完后,i循环和j循环执行的次数分别是【 】。


    正确答案:4和10
    4和10 解析:i的初始值为1,满足循环条件的i终值为4(i5),所以i在循环过程中的取值为1、 2、3、4;当i为1时,j初值为1,满足循环条件的终值也为1(j=i),j循环1次;同理,当i为2、3、 4时,j的循环次数分别为2、3、4,所以j的循环次数为:1+2+3+4=10次。

  • 第3题:

    求主次对角线之和。 main {static int a[ ][3]={9,7,5,1,2,4,6,8}; int I,j,s1=0,s2=0; for(I=0;I<3;I++) for(j=0;j<3;j++) {if(__________) s1=s1+a[I][j]; if( __________ ) s2=s2+a[I][j]; } printf(“%d\n%d\n”,s1,s2); }


    正确答案:
    I==j I+j==2

  • 第4题:

    以下程序执行时,输出“”号的个数是【】。 include vied main(){ int i, j; for(i=1;i<5

    以下程序执行时,输出“”号的个数是【 】。

    include <iostream.h>

    vied main(){

    int i, j;

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

    for(j=2;j<=i;j++)cout<<‘’;

    }


    正确答案:6
    6

  • 第5题:

    以下程序的执行结果是______。 main() { int i,j,m=O,n=0; for (i=0;i<2;i++) {for (j=0;j<2;j++) if(j>=i) m=1;n++; printf("%d\n",n); } }

    A.4

    B.2

    C.1

    D.0


    正确答案:C

  • 第6题:

    已知C源程序如下: include include void reverse(char S[]){ int C,i,J; f

    已知C源程序如下:

    include<stdio. h>

    include<string. h>

    void reverse(char S[]){

    int C,i,J;

    for(i=0,j=strlen(s)-1;i<j;i++,j++){

    c=s[i];

    s[i]=s[j];

    s[j]=c;

    }

    }

    void getHex(int number,char s[]){

    int I;

    i=0;

    while(number>0){

    if(number%16<10)

    s[i++]=number%16+'0';

    else

    switch(number%16){

    case 10:s[i++]='A';break;

    case 11:s[i++]='B';break;

    case 12:s[i++]='C';break;

    case 13:s[i++]='D';break;

    case 14:s[i++]='E';break;

    case 15:s[i++]='F';break;

    default:printf("Error");break;

    }

    number/=16;

    }

    s[i]:'\o';

    reverse(s);

    }

    int main(){

    unsigned int number;

    int i=0:

    char s[50];

    printf("%s","please input number;\n");

    scanf("%d",&number):

    getHex(number,s);

    i=0;

    while(s[i])

    printf("%c",s[i++]);

    return 0;

    }

    画出程序中所有函数的控制流程图。


    正确答案:流程图
    流程图

  • 第7题:

    有以下程序:includeincludevoid fun(char*s[],int n){char*t;int i,j;for(

    有以下程序: #include<stdio.h> #include<string.h> void fun(char*s[],int n) { char*t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;} } main() { Char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A

  • 第8题:

    下面程序段的执行结果是( )。 main() {int a[5][5],i,j; for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i); for(i=1;i<5;i++) { for(j=1;j<5;j++) printf("%2d",a[i][j]); printf("\n"); } }

    A.1111 1111 1111 1111

    B.0001 0010 0100 1000

    C.1000 0100 0010 0001

    D.0000 0000 0000 0000


    正确答案:C
    解析:本题使用一个双重循环对—个二维数组的一部分赋值(下标中含0的元素不赋值),赋值表达式是a[i][j]=(i/j)*(j/i)。因为i和j都是正整数,所以当i大于j时,j/i为0,当i小于j时,i/j为0,而0乘以任何数都为0,故表达式(i/j)*(j/i)在i和j不相等时的值为0。当i和j相等时,i/j和j/i的值都为1,所以表达式(i/j)*(j/i)的值为1。故二维数组中的a[1][1]、a[2][2]、 a[3][3]、a[4][4]被赋为1,其余下标不含0的元素被赋为0。故应该选择C。

  • 第9题:

    下面程序的运行结果是( )。 #inelude<stdio.h> void del(char*s) { int i,j; char*a; a=s: for(i=0,j=0;a[i]!=\0;i++) { if(a[i]>=0&&a[i]<=9) {s[j]=a[i]; j++; } s[j]=\0; } } main { char*s="aa89gggh"; del(s): printf("\n%s",s); }

    A.1

    B.2

    C.3

    D.4


    正确答案:D
    本题中del(char*s)函数实现的功能是:逐个读入S数组中的字符,如果遇到数字,则将数字存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串S中所有的数字的个数。

  • 第10题:

    有以下程序:int f(int b[][4]){int i, j, s=0;for(j=0; j<4; j++){i=j;if(i>2)i=3-j;S+=b[i][j];

    有以下程序: int f(int b[][4]) { int i, j, s=0; for(j=0; j<4; j++) { i=j; if(i>2)i=3-j; S+=b[i][j]; } return s; } main() { int a[4][4]={{1, 2, 3, 4}, {0, 2, 4, 6}, {3, 6, 9, 12}, {3, 2, 1, 0}}; printf("%d\n", f(a)); } 执行后的输出结果是______。

    A.12

    B.11

    C.18

    D.16


    正确答案:D
    解析:f(a)=a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。

  • 第11题:

    执行下列语句后,变量sum的值是【 】。

    int sum=0;

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

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

    sum++;


    正确答案:6
    6 解析:本题考查的知识点是:for循环的嵌套。题目中外循环会循环3次,每次循环变量i的值分别为1、2、3。而内循环会循环i次,故3次执行内循环,循环的次数分别为1、2、3次。那么,sum总共被增1了6次。故最终sum的值为6。

  • 第12题:

    以下程序的输出结果为( )。

    main( )

    { char s1[40]="country",s2[20]="side";

    int i=0,j=0;

    while(s1[i]!='\0') i++;

    while(s2[j]!='\0') s1[i++]=s2[j++];

    s1[i]=0;

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

    }

    A side

    B country

    C sidetry

    D countryside


    正确答案:D

  • 第13题:

    执行下面程序段,语句3的执行次数为______。for(i=0;ii;j++)state;A.n(n+2)/2B

    执行下面程序段,语句3的执行次数为______。 for(i=0;i<n-1;i++) for(j=n;j>i;j++) state;

    A.n(n+2)/2

    B.(n-1)(n+2)/2

    C.n(n+1)/2

    D.(n-1)(n+2)


    正确答案:B
    解析:本题考查如何衡量算法的复杂度,根据题目可以看出,两层循环每次执行的次数是不相等的,第一次循环执行了n次,第二次循环只执行了n-1次,直到最后一次循环,他执行了2次,这样就是一个等差数列的求和,可得到总的执行次数为(n-1)(n+2)/2。

  • 第14题:

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

    int sum=0;

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

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


    正确答案:6
    6

  • 第15题:

    现在有如下程序

    #include "stdio.h"

    main()

    {char s[80];

    int i,j;

    gets(s);

    for(i=j=0;s[i]!=′\0′;i++)

    if(s[i]!=′H′______)

    s[j]=′\0′;

    puts(s);}

    这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是

    A.s[j++]=s[i];j++;

    B.s[j]=s[i++];j++;

    C.s[j++]=s[i];

    D.s[j]=s[i];


    正确答案:C

  • 第16题:

    阅读下列函数说明和C代码,填入(n)处。

    [说明]

    以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:

    7 6 5 16

    8 1 4 15

    9 2 3 14

    10 11 12 13

    程序的变量说明如下:

    x1:矩阵上边界;

    x2:矩阵下边界;

    y1:矩阵左边界;

    y2:矩阵右边界;

    s:数组元素升降标记,s等于1为升,s等于-1为降;

    a[]:存放矩阵元素的数组。

    仔细阅读C语言程序源码,将(n)处的语句补充完整。(注:每处仅一个语句)

    [C程序]

    include<stdio.h>

    void main ( )

    {

    const int N=20;

    int i=0,j=0,a[N][N],n;

    int m,x1,x2,y1,y2,s;

    while (1)

    {

    Printf ("\ninput matrix row N( N>=2): ");

    scanf ("%d",&n);

    printf ("\n");

    if (n>=2)

    break;

    }

    m=n*n;

    x1=0; y1=0; x2=n; y2=n;

    if(n%2==0)

    {j=n-1; y2=n-1; s=1;}

    else

    {i=n-1; y1=1; s=-1; }

    while (1)

    {

    if (s==1)

    {

    for (i; i<x2; i++) a[i][j]=m--;

    i--;

    j--;

    (1)

    for (j;j>=y1;j--) a[i][j]=m--;

    j++;

    i--;

    y1++;

    (2)

    }

    else

    {

    for (i;i>=x1;i--)

    a[i][j]=m--;

    i++;

    j++;

    (3)

    for (j;j<y2;j++)

    (4)

    (5)

    i++;

    (6)

    S=i;

    }

    if (m<1) break;

    }

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

    {

    for (j=O;j<n;j++)

    printf ("%6d",a[i][j]);

    printf ("\n");

    }

    printf ("\n");

    }


    正确答案:(1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--;
    (1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--; 解析:自然数排列的回旋矩阵是一个经典程序设计题目。本题中生成的是一个从里到外是连续的自然数排列的回旋矩阵。仔细阅读代码,能够发现(1)处应该为矩阵下边界递减;(2)处应该为数组元素递减状态,即为降;(3)处应该为矩阵上边界递增;(4)处应该为存放矩阵元素的数组中的数据递减;(5)处应该为数组元素的列序号递减,即j--;(6)矩阵右边界递减。

  • 第17题:

    执行以下程序后,输出号的个数是【】。 include main() {int i, j;for(i=1; i<5; i++) for

    执行以下程序后,输出号的个数是【 】。

    include<stdio. h>

    main()

    { int i, j;

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

    for(j=2; j<=i; j++)putchar('');

    }


    正确答案:6
    6 解析:本题中i循环执行4次,当i=1时,j循环执行0次;当i=2时,j循环执行1次;当i=3时,j循环执行2次;当i=4时,j循环执行3次,所以输出#号的个数是0+1+2+3=6。

  • 第18题:

    执行下面程序后输出的结果是()。include using namespace std;int main(){ int a[4][4

    执行下面程序后输出的结果是( )。 #include <iostream> using namespace std; int main(){ int a[4][4]={{1,2,3,-4},{7,-12,-13,8},{-21,9,0,-24},{-31,10,-33,11}}; int i,j,s=0; for(i=0;i<4;i++){ for(j=0;j<4;j++){ if(a[i][j]>=0)continue; s+=a[i][j]; } } coat<<s<<endl; return 0; }

    A.141

    B.-138

    C.-1

    D.75


    正确答案:B
    解析:在内层循环中,遇到大于等于0的数,继续执行下次循环,否则执行s+=a[i][j],即把其值累加并保存在变量s中。所以本题双重循环的功能是:计算数组中所有负数的累加和。

  • 第19题:

    执行以下程序后,输出''号的个数是【 】。

    include

    main()

    { int i,j;

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

    for(j=2; j<=i; j++) putchar('');

    }


    正确答案:6
    6 解析:第一层循环条件成立时,i的值分别为1,2,3,4。而第二层循环条件成立时i的值只能是2,3,4。j<=i共执行6次。

  • 第20题:

    若有以下程序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。

  • 第21题:

    有以下程序: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来引用结构体成员,并把它们进行从小到大排序,最后输出。

  • 第22题:

    下面程序的运行结果是()。includevoid delch(char *s){ int i,j;char*a;a=s;for(i=0,j=

    下面程序的运行结果是( )。 #include<stdio.h> void delch(char *s) { int i,j; char*a; a=s; for(i=0,j=0;a[i]!='\0' ;i++) if(a[i]>='0' &&a[i]<='9') { s[j]=a[i]; j++;} s[j]='\0'; } main() { char*item="a34bc"; delch(item); printf("\n%s" ,item);}

    A.abc

    B.34

    C.a34

    D.a34bc


    正确答案:B
    解析:指针a通过数组元素下标来从头逐个的引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下34两个字符了。注意:形参为指针变量时,实参和形参之间的数据传递。

  • 第23题:

    以下程序段运行后s的值是( )。

    int a[3][3]={1,2,3,4,5,1,2,3,4};   

    int i,j,s=1;   

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

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

    s+=a[i][j];4

    A:6

    B:120

    C:7

    D:240


  • 第24题:

    ● 下面C程序段中count++语句执行的次数为 (64) 。

    for(int i = 1;i <= 11;i *= 2)

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

    count++;

    (64)

    A. 15

    B. 16

    C. 31

    D. 32


    正确答案:A