niusouti.com

单选题有如下程序: #include main() {int i, array[5]={3,5,10,4};for(i=0;iprintf(); } 程序运行后的输出结果是(  )。A 3,1,2,0,0,B 3,5,10,4,0,C 3,3,3,3,0,D 3,2,2,2,0,

题目
单选题
有如下程序: #include  main() {  int i, array[5]={3,5,10,4};  for(i=0;i  printf(); } 程序运行后的输出结果是(  )。
A

3,1,2,0,0,

B

3,5,10,4,0,

C

3,3,3,3,0,

D

3,2,2,2,0,


相似考题
参考答案和解析
正确答案: A
解析:
在对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值0,则array={3,5,10,4,0}。按位与运算“&”,当参加运算的两个二迸制数的对应位都为1,则该位的结果为1,否则为0。将数组元素与3=11B按位与,即3&3=3,5&3=1,10&3=2,4&3=0,0&3=0。for循环输出与运算结果:3,1,2,0,0,。答案选择A选项。
更多“有如下程序: #include  main() {  int i, array[5]={3,5,10,4};  for(”相关问题
  • 第1题:

    有以下程序: include include usingnamespacestd; intmain() {intarrays

    有以下程序: #include <iostream> #include <cstdlib> using namespace std; int main() { int arraysize; int *array; cout<<"Please input the size of the array:"; cin>>arraySiZe; array=new int[arraysize]; if(array==NULL) { cout<<"allocate Error\n"; exit(1); } for(int i=0;i<arraysize;i++) array[i]=i*i; int j; cout<<"which element you want to check:"; cin>>j; cout<<array[j]<<end1; return 0; } 执行程序输入:10<空格>5,则输出结果为( )。

    A.allocate Error

    B.1

    C.0

    D.25


    正确答案:D
    解析:程序中利用new()申请动态分配数组。利用for循环给数组array赋值。最后输出想要检查元素的值。程序输10,即数组array元素个数为10。程序输入5,即检查元素array[5]的值。由for循环的赋值运算可知array[5]的值为25,所以程序最后输出25。

  • 第2题:

    有以下程序: 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,并且只在编译时初始化一次。

  • 第3题:

    以下程序的输出结果是【】。 include using namespace std; int main(){ int sum,i; for(

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

    include<iostream>

    using namespace std;

    int main(){

    int sum,i;

    for(sum=0,i=1;i<5;i++)sum+=i;

    cout<<sum<<endl;

    return 0;

    }


    正确答案:10
    10 解析:本题程序实现的是计算1+2+3+4的和,因此最后输出为10。

  • 第4题:

    程序

    include"iostream.h"

    void main()

    {

    int i=10;

    int i=5;

    cout <<j+i++<<endl;

    }

    的结果为【 】。


    正确答案:15
    15 解析:i++为先做与i有关的运算后,i自加 1,而++i是先给i加1再进行与i有关的操作注意:各种运算符的应用,注意++,--。

  • 第5题:

    下面程序执行的结果是【 】。 include using namespace std; void main(){ int sum=0; i

    下面程序执行的结果是【 】。

    include <iostream>

    using namespace std;

    void main(){

    int sum=0;

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

    int *p;

    p=&array[0];

    for(int i=0;i<6;i++){

    sum=sum+*p;

    p++;

    }

    cout<<sum;

    }


    正确答案:21
    21 解析:本题用数组地址来访问数组内容,通过数组指针来操作数组内容,依次取出数组内容进行加和,然后进行输出。

  • 第6题:

    有如下程序:includeincludeusing namespace std;int main( ){int S[ ]={12

    有如下程序: #include<iostream> #include<iomanip> using namespace std; int main( ){ int S[ ]={123,234}; cout<<right<<setfill('*')<<setw(6); for(int i=0;i<2;i++){COUt<<s[i]<<endl;} return 0; } 程序的输出结果是

    A.123 234

    B.***123 234

    C.***123 ***234

    D.***123 234***


    正确答案:B
    解析:setfill('*')填充设置仅影响紧跟其后的输出操作,第二次循环时失效

  • 第7题:

    下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。 include inelude

    下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。

    include<iostream. h>

    inelude<iomanip, h>

    template<class T>

    class Array

    {

    T * elems;

    int size;

    public:

    Array(int.s);

    ~Array()

    T& operator[](int)

    void perator=(T)

    };

    template<class T>

    Array<T>::Array(int s)

    size=s;

    elems=new T[size]

    for(int i=0;i<size;i++)

    elems[i]=0

    }

    template<celass T>

    Array<T>::~Array()

    {

    ______

    template <class T>

    T& Array<T>::operator[](int index)

    {

    return elems[index];

    }

    template<class T>

    void Array<T>::operator=(T temp)

    {

    for(int i=0;i<size;i++)

    elems[i]=temp;

    }

    void main()

    {

    int i,n=26;

    Array<int> arr1(n)

    Array<char> arr2(n)

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

    { -.

    arr1[i]='a'+i;

    arr2[i]='a'+i;

    }

    cout<<"ASCII 字符"<<endl;

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

    cout<<setw(8)<<arr1[i]<<setw(8)<<arr2[i]<<endl;

    }


    正确答案:delete elems;
    delete elems; 解析:注意,用new动态申请的内存在使用完成后一定要用delete释放。

  • 第8题:

    编写程序,实现矩阵(3行3列)的转置(即行列互换)。

    例如,若输入下面的矩阵:

    100 200 300

    400 500 600

    700 800 900

    则程序输出:

    100 400 700

    200 500 800

    300 600 900

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

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

    试题程序:

    include <stdio.h>

    include <conio.h>

    int fun (int array[3][3])

    {

    }

    main()

    {

    int i,j;

    int array [3][3]={{100,200,300},{400,

    500,600},{700,800,900}};

    clrscr();

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

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

    printf("%7d ",array[i] [j]);

    printf("\n ");

    }

    fun(array);

    printf("Converted array:\n ");

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

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

    printf("%7d ",array[i][j]);

    printf("\n ");

    }

    }


    正确答案:int fun (int array[3][3]) { int ijt; for(i=0;i3;i++) /*将右上三角和左下三角对换实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } }
    int fun (int array[3][3]) { int i,j,t; for(i=0;i3;i++) /*将右上三角和左下三角对换,实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } 解析:注意对矩阵转置后仍然存回其本身时,只能循环矩阵中的一个角(本程序是右上半三角)。控制右上半三角的方法是在第2个循环中j从i+1或i开始,左下半三角的方法是在第2个循环中写成for(j=0;ji;j++),若要控制所有元素在第2个循环要写成for(j=0;j3;j++)。

  • 第9题:

    有以下程序:include int f(int a)return a% 2; }main( )int s[8] = {1,3,5,2,4,6} ,i

    有以下程序: #include <stdio. h> int f(int a) return a% 2; } main( ) int s[8] = {1,3,5,2,4,6} ,i,d =0; for (i=0;f(s[i]);i++) d+ =s[i]; prinff( "% d \n", d); 程序运行后的输出的结果是( ).

    A.9

    B.11

    C.19

    D.21


    正确答案:A
    解析:在主函数main中,f(s[i])为for语句的循环终止条件,当f函数返回非零值时,则继续执行循环,否则终止循环,输出d的值。程序的运行步骤为:当i=0时,f(s[i])返回值为1,执行d+=1,d=1;当i=1时,将s[1];3传给形参变量s,f函数返回a%2=1,执行d=d+s[1]=1+3=4;当i=2时,将s[2]=5传给形参变量a,f函数返回a%2=1,执行d=d+s[2]=4+5=9;当i=3时,将a[3]=2传给形参变量a,f函数返回a%2=0,终止循环,输出d的值9。

  • 第10题:

    单选题
    有如下程序:#includevoid change(int * array,int len){ for(;len>=0;len--)array[len]-=1;}main(){ int i, array[5]={2,2}; change(array,4); for(i=0;i<5;i++)printf("%d,",array[i]); printf("");}程序运行后的输出结果是(  )。
    A

    1,1,-1,-1,-1,

    B

    1,0,-1,1,-1,

    C

    1,1,1,1,1,

    D

    1,-1,1,-1,1,


    正确答案: A
    解析:
    在main()函数中,首先给一维数组array赋初值[2,2,0,0,0],再调用change函数,对array数组中的每一个数进行减1处理,最后使用for循环语句输出数组元素的值,答案选择A选项。

  • 第11题:

    单选题
    有如下程序:#include int sum(int *array,int len){ if(len == 0)  return array[0]; else  return array[0]+sum(array+1,len-1);}main(){ int array[5] = {1,2,3,4,5}; int res = sum(array,4); printf(%d,res);}程序运行后的输出结果是(  )。
    A

    15

    B

    10

    C

    8

    D

    1


    正确答案: C
    解析:
    程序执行过程为:调用函数sum(array,4),len=4;len>0递归调用sum(array+1,3),传入地址为array+1,即数组第二个元素地址;len=3>0,递归调用sum(array+1,2),传入地址为数组第三个元素地址;len=2>0,递归调用sum(array+1,1),传入地址为数组第四个元素地址;len=1>0递归调用sum(array+1,0),传入地址为数组第五个元素地址,此时len=0,返回5;返回上一层调用执行array[0]+sum(array+1,1),即4+5,返回9;再返回上一层调用执行array[0]+sum(array+1,2),即3+9,返回12;同理,最后返回15,并输出。本题中需要注意的是每一层调用时array[0]是不一样的,并不是指1。答案选择A选项。

  • 第12题:

    单选题
    有如下程序:#include main(){ int i,*ptr; int array[3]={8,2,4}; for(ptr=array,i=0;i  printf("%d,",*ptr++); printf("");}程序运行后的输出结果是(  )。
    A

    8,2,

    B

    8,8,

    C

    2,4,

    D

    4,8,


    正确答案: D
    解析:
    *的优先级低于++,即先运算ptr++再运算*ptr。程序执行过程为:定义指针ptr与数组array,执行for循环,使指针指向数组首地址,i=0,输出指针指向的元素array[0]=8,然后指针加1,指向数组下一个元素;i=1,输出array[1]=2,指针指向数组下一个元素;i=2退出for循环。程序依次输出8和2。答案选择A选项。

  • 第13题:

    有以下程序:

    include”iostream.h”

    void main()

    {int i=10;

    int j=5;

    cout((j+i++<<endl;}

    的结果为______。


    正确答案:15。
    15。 解析: 考查++运算符的用法,各种运算符的应用,注意++,--。i++为先做与i有关的运算后,i自加 1,而++i是先给i加1再进行与i有关的操作。

  • 第14题:

    有以下程序: include using namespace std; int main() {int i=010,j=10;cout<<(++i)

    有以下程序:

    include <iostream>

    using namespace std;

    int main()

    {

    int i=010,j=10;

    cout<<(++i)<<","<<i--<<end1;

    return 0;

    }

    则该程序运行后的输出结果是【 】。


    正确答案:910
    9,10 解析:本题考核自增运算符和自减运算符的使用以及常量的表示形式。程序中i的值是八进制,代表十进制中的8,++i是在语句运算前自身加1,而j--是在语句运算结束后减1。

  • 第15题:

    以下程序的输出结果是【】。 include void main(){ int i,a[5]; i=0; while(i<5){ a[i]

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

    include<iostrean.h>

    void main(){

    int i,a[5];

    i=0;

    while(i<5){

    a[i]=8*(i-2+4*(i>2))%5;

    i++;

    }

    for(i=4;i>=0;i--) cout<<a[i];

    }


    正确答案:3 0 0 -3 -1
    3 0 0 -3 -1

  • 第16题:

    有如下程序:include using namespace std;int getSum(int num);int main (){ int i;

    有如下程序: #include <iostream> using namespace std; int getSum(int num); int main () { int i; for (i=1; i<4; i++) cout<<getSum(i); return 0; } int getSum(int hum) { static int sum=O; sum+=num; return sum; } 上述程序执行后的输出结果是( )。

    A.136

    B.248

    C.123

    D.135


    正确答案:A
    解析:在函数getSum()中,局部变量sum被声明为static,并且初始化为0。该程序使用getSum()函数计算并报告当前计算所得结果。由于sum是static变量,因此它在函数调用过程中始终保持其值,即使函数调用结束,其空间也不会被释放,下次再调用时,上次运行结果仍然保留。

  • 第17题:

    有以下程序 include main() { int i=5; do { if(i%3==1)

    有以下程序 #include <stdio.h> main() { int i=5; do { if(i%3==1) if(i%5==2) { printf"*%d",i); break; } i++; } while(i!=0); printf("\n"); } 程序的运行结果是______。

    A.*7

    B.*3*5

    C.*5

    D.*2*6


    正确答案:A
    解析:do-while语句的特点是先执行循环体,然后判断循环条件是否成立,当循环条件的值为0时循环结束。break的特点;当break出现在循环体中,则在执行break后,跳出本层循环体。本题执行过程如下:
    i=5:不满足条件i%3=1,执行i++,此叫i=6;
    i=6:不满足条件i%3=1,执行i++,此时i=7;
    i=7:满足条件i%3=1,执行内嵌if,判断条件i%5=2,满足,输出“*7”,执行break,跳出do循坏体,执行“printf("\n");”,结束。

  • 第18题:

    有以下程序: include include using namespace std; int main () {char ch[]

    有以下程序:

    include <fstream>

    include <string>

    using namespace std;

    int main ()

    {

    char ch[] = "The end";

    ofstream outstr( "d:\\put.txt", ios_base: :app);

    for (int i = 0; i < strlen( ch ); i++ )

    outstr.put(ch[i]);

    outstr.close();

    return 0;

    }

    程序实现的功能是【 】。


    正确答案:在文件put.txt的尾部追加写入一串字符
    在文件put.txt的尾部追加写入一串字符 解析:解本题的关键是要了解文件打开模式常量ios_base::app的含义。常量ios base::app表示为添加数据而打开文件(总是在文件尾部写),因此上述程序实现的功能就是在文件尾部写入数组ch中字符串。

  • 第19题:

    有以下程序: include using namespace std; int main() {int x;for(int i=1;i<=100;

    有以下程序: #include <iostream> using namespace std; int main() { int x; for(int i=1;i<=100;i++) { x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) cout<

    A.39,81

    B.42,84

    C.26,68

    D.28,70


    正确答案:D
    解析:程序最后输出的x值所满足的条件为:x本身能被7整除,(x-1)能被3整除,(x-2)能被2整除。在1~100之间满足条件的x值是28和70。

  • 第20题:

    有以下程序: include using namespace std; int main() {int i=1,sum=0;Loop:if(i<=20

    有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int i=1,sum=0;

    Loop:if(i<=20)

    {

    sum+=i;

    i++;

    goto Loop;

    }

    cout<<sum<<end1;

    return 0;

    }

    该程序运行后的输出结果是【 】。


    正确答案:210
    210 解析:本题是goto跳转语句的应用。程序中,如果满足条件“i=20”,则执行语句“sum+=i;i++;”然后,又跳转到Loop处。直到条件“i=20”不满足。由此可知,此程序的功能是统计1~20的总和,即210。

  • 第21题:

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

  • 第22题:

    单选题
    有以下程序:#include int sum(int *array,int len){ if(len == 0)  return array[0]; else  return array[0]+sum(array+1,len-1);}main(){ int i=1,j=3; printf(%d,,i++); {  int i = 0;  i+=j*2;  printf(%d,%d,,i,j); } printf(%d,%d,i,j);}程序运行后的输出结果是(  )。
    A

    1,6,3,1,3

    B

    1,6,3,2,3

    C

    1,6,3,6,3

    D

    1,7,3,2,3


    正确答案: B
    解析:
    程序执行过程为:输出i=1,之后i自增,得i=2;然后执行复合语句,赋值i=0,执行语句i+=j*2;得i=6;输出i=6,j=3;花括号内的i的作用域仅限于该花括号内,在括号外的i为程序第四行定义的i,这两个i属于不同的变量。之后再输出i=2,j=3。答案选择B选项。

  • 第23题:

    单选题
    有如下程序: #include  void change(int *array,int len) {  for(;len>=0;len--)   array[len]+=2; } main() {  int i,array[5]={1,2};  change(array,4);  for(i=0;i<4;i++)   printf("%d,",array[i]);  printf(""); } 程序运行后的输出结果是(  )。
    A

    2,3,4,5,

    B

    3,4,5,6,

    C

    3,4,2,2,

    D

    1,2,0,0,


    正确答案: A
    解析:
    本题程序执行过程为:调用change函数,将数组array={1,2,0,0,0}首地址传入函数,函数实现将数组每个元素加2,arrray={3,4,2,2,2}。依次输出数组前4个元素为3、4、2、2。答案选择D选项。

  • 第24题:

    单选题
    有如下程序:#include struct pair{ int first,second;};struct pair get_min_max(int*array, int len){ int i; struct pair res; res.first=array[0]; res.second=array[0]; for(i=1;ires.second)   res.second=array[i]; } return res;}main(){ int array[5]={9,1,3,4}; struct pair min_max = get_min_max(array,5); printf(min=%d,max=%d, min_max.first, min_max.second);}程序运行后的输出结果是(  )。
    A

    min=1,max=9

    B

    min=0,max=9

    C

    min=1,max=4

    D

    min=0,max=4


    正确答案: A
    解析:
    在对数组进行初始化时,如果在定义数组时给出了长度,但没有给所有的元素赋予初始值,那么c语言将自动对余下的元素赋初值0,则array[5] = {9,1,3,4,0}。程序的执行过程为:调用函数get_min_max(array,5),将数组array的首地址传入函数,定义结构体变量res,并为其成员赋值。for循环查找数组array的最小值0,将其赋值给res的成员first,查找数组最大值9,并将其赋值给res的成员second。最后返回结构体变量res,则min_max=res。输出min_max.first=0,min_max.second=9。答案选择B选项。