设有说明语句int k,i=5,j=10;则表达式k=(++i)*(j--)的值是 ( )A.50B.60C.45D.55

题目

设有说明语句int k,i=5,j=10;则表达式k=(++i)*(j--)的值是 ( )

A.50

B.60

C.45

D.55

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序:main(){int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;j--)if (

有以下程序: main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;j--) if (x[j+1)>x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;} for (i=0;i<3;i++) for (j=4;j<7-i;j++) if (x[j]>x[j+1]){k=x [j];x[j]=x[j+1];x[j+1)=k;} for(i=0;i<8;i++)printf("%d",x[i]); printf("\n"); } 程序运行后的输出结果是 ______。

A.75310246

B.1234567

C.76310462

D.13570246


正确答案:A
解析:本题中第一次执行for循环后,数组x中的前四个元素按由大到小的次序排序,即x[0]=7、x[1]=5、x[2]=3、 x[3]=1、x[4]=2、x[5]=4、x[6]=6、x[7]=0;第二次执行for循环后,数组x中的后4个元素按由小到大的次序排序,即此时x[0]=7、x[1]=5、x[2]=3、x[3]=1、x[4]=0、x[5]=2、x[6]=4、x[7]=6。故正确答案为A。

第2题:

以下程序段是函数返回a所指数组中最大的值所在的下标值,横线处的语句为( )。 fun(int*a, int n) { int i,j=0,k; k=j; for(i=j;i<n;i++) if[a[i]>a[k])______; return(k); }

A.k=i

B.k=j

C.i=j

D.i=n


正确答案:A
解析:函数fun中首先定义整型变量k用来存放返回最大值的下标,并将其首先指向第一个元素,即k=j。然后在for循环中依次将当前元素a[i]与标识为最大值的元素进行比较,如果当前元素大于这个标识元素,那么将最大值标识为当前元素,即k=i。

第3题:

设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【14】 。

for(i=0, j=10; i<=j; i++, j--)k=i+j;


正确答案:
10

第4题:

若类A和类B的定义如下: class A [ int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是

A.k=i*j

B.int k;

C.retum i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

第5题:

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。

void quicksort (int a[], int left, int right) {

int temp;

if (left<right) {

hat pivot = median3 (a, left, right); //三者取中子程序

int i = left, j = right-1;

for(;;){

while (i <j && a[i] < pivot) i++;

while (i <j && pivot < a[j]) j--;

if(i<j){

temp = a[i]; a[j] = a[i]; a[i] = temp;

i++; j--;

}

else break;

}

if (a[i] > pivot)

{temp = a[i]; a[i] = a[right]; a[right] = temp;}

quicksort( (1) ); //递归排序左子区间

quieksort(a,i+1 ,right); //递归排序右子区间

}

}

void median3 (int a[], int left, int right)

{ int mid=(2);

int k = left;

if(a[mid] < a[k])k = mid;

if(a[high] < a[k]) k = high; //选最小记录

int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left

if(a[mid] < a[right])

{temp=a[mid]; a[mid]=a[right]; a[right]=temp;}

}

消去第二个递归调用 quicksort (a,i+1,right)。 采用循环的办法:

void quicksort (int a[], int left, int right) {

int temp; int i,j;

(3) {

int pivot = median3(a, left, right); //三者取中子程序

i = left; j = righi-1;

for (;; ){

while (i<j && a[i] < pivot)i++;

while (i<j && pivot <a[j]) j--;

if(i <j) {

temp = a[i]; a[j]; = a[i]; a[i]=temp;

i++; j--;

}

else break;

}

if(a[i]>pivot){(4);a[i]=pivot;}

quicksoft ((5)); //递归排序左子区间

left = i+1;

}

}


正确答案:(1)alefti-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)aleft i-1
(1)a,left,i-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)a,left, i-1 解析:(1)a,left,i-1
递归排序左子区间,从left到i-1元素,不包括i元素。
(2)(left+right+1)/2
三者取中子程序median3(a,left,right),取基准记录pivot时,采用从left、right和 mid=[(left+right)/2]中取中间值,并交换到right位置的办法。
(3)while(leftright)
循环直到left和right相遇。
(4)a[right)=a[i]
若a[i]>pivot则让a[right]=a[i]而让a[i]=pivot;。
(5)a,left, i-1
递归排序左子区间,从left到i-1元素,不包括i元素。

第6题:

设i,j,k均为int型变量,则执行完for(i=0,j=10;i<=j;i++,j-- k=i+j;语句后,k的值为【8】 。


正确答案:
10

第7题:

若类A和类B的定义如下

class A

{

int i,j;

public:

int geti( )

{

return i;

}

};

class B:public A

{

int k:

public:

void make( )

{

k=i*j;

}

};

则上述定义中非法的语句是

A.k=i*j

B.int k;

C.return i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

第8题:

设int i=2,j=1,k=3,则表达式i&&(i+j)&k | i+j的值是( )。A.0 B.2 C.1 D.3


正确答案:C
i+j=3,运算符的优先级为数学运算符,位运算符,逻辑运算符,因此,首先计算最右边的i+j=3,然后计算(i+j)&k|3=9, 最后计算i&&9=1

第9题:

若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是

A.k=i*j;

B.int k;

C.return i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

第10题:

有下列程序: 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)正确。