CMS专题

问答题对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?

题目
问答题
对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?
参考答案和解析
正确答案: 输出结果是54321
解析: 暂无解析
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读下列程序段

#include "stdio.h"

typedef struct aa

{ int a;

struct aa *next; } M;

void set(M *k,int i,int *b)

{ int j,d=0;

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

{ k[j-1].next=&k[j];

k[j-1].a=b[d++]; }

k[j].a=b[d]; }

main()

{ M k[5],*p;

int d[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

printf("%d\n",table); }

则下面的表达式在table处,能使程序执行后,打印输出数据45的是

A.p->next->a

B.++p->a

C.(*p).a++

D.p++->a


正确答案:A

第2题:

以下程序运行后的输出结果【 】。

struct NODE

{int k;

struct NODE *link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

int i=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q-;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}


正确答案:13431
13431 解析:程序执行过程如下:
p=m,q=m+4,条件9!=q成立,执行p->k=++i;,由于是“前加”,所以m[0].k=1,执行p++后p=m+1;执行q->k=i++;,由于是“后加”,所以m[4].k=1,然后使得i加上1,即i=2,q-后,q=m+3: p=m+1,q=m+3,条件p!=q成立,执行p->k=++i;,由于是“前加”,所以i=3,m[0].k=3,执行p++后p=m+2:执行 p->k=++i;,由于是“后加”,所以m[4].k=3,i=4,q-后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行p->k=i;即m[2].k-4;故输出的值为13431。

第3题:

有以下程序: include using namespace std; class MyClass { public: static int s; M

有以下程序:

include<iostream>

using namespace std;

class MyClass

{

public:

static int s;

MyClass();

void SetValue(int val);

};

int MyClass::s=0;

MyClass::MyClass()

{

S++;

}

void MyClass::SetValue(int val)

{

s=val;

}

int main()

{

MyClass my[3],*p;

p=my;

for(int k=0;k<3;k++)

{

p->SetValue(k+1);

p++;

}

cout<<MyClass::s<<end1;

return 0;

}

运行后的输出结果是______。


正确答案:3
3

第4题:

有以下程序: include usingnamespacestd; intmain() { intnum[2][3],*p; intt,i,j,k=

有以下程序: #include <iostream> using namespace std; int main() { int num[2][3],*p; int t,i,j,k=10; p=num[0]; for(i=0;i<2;i++) { for(j=0;j<3;j++) { k++; *p=k; for(t=2;t<*p;t++) { if(!(*p%t)) { j--; *p--; break; } *p++; } } cout<<*(p-1)<<end1; return 0; } 程序运行后的输出结果是( )。

A.19

B.11

C.29

D.23


正确答案:C
解析:本题考核数组与指针的关系。程序首先初始化指针p,让其指向二维数组num的首元素,即num[0][0]。程序中,第1个for循环是为二维数组的每行元素赋值而设置的循环,第2个for循环是为二维数组的每列元素赋值而设定的,第3个for循环是为判断数组元素是否是素数而设置的。在第3个for循环中,如果*p的值能被小于它的数整除(即不是素数),则执行“j--;*p--;”,然后跳出第3个for循环。j--的含义是让其前面的赋值语句重新赋值,而*p--的含义是使指针指向前一个单元。语句“*p++;”将指针移到下一个单元,在下一次循环时,k加1,并k赋给*p,看*p是否为素数,这样一直到满足条件为止,即数组num[2][3]中的数都为素数。最后数组num中各元素的值分别为大于10的素数,即分别为:11,13;17,19,23,29。程序最后要求输出*p的值,由于此时指针已指向数组num的最后一个元素,即num[1][2]。所以输出的值是29。

第5题:

下面函数返回数组中最大元素的下标,数组中元素个数为t,将程序补充完整。

int findmax(int s[],int t) {

int k,p;

for(p=0,k=p;p<t;p++) {

if 【 】

k=p;

}

return k;

}


正确答案:(s[p]>s[k])
(s[p]>s[k]) 解析:分析程序其他部分,k存放最大元素的下标。

第6题:

现有如下程序段

#include "stdio.h"

int fun(int k,int *m)

{if(k%3)*m=k*k;

else *m=k/3;}

main()

{ int (*p)(int,int *),m;

p=fun;

(*p)(78, &m);

printf( "%d\n",m);}

则程序段的输出结果为

A.24

B.25

C.26

D.27


正确答案:C

第7题:

下面程序的功能是输出数组s中最小元素,请填空。 include void main(){int k, p, s[]=

下面程序的功能是输出数组s中最小元素,请填空。

include<iostream.h>

void main(){

int k, p, s[]={1,-9,7,2,-10,3};

k=s[0];

for(p=0;p<6;p++)

if(s[p]<k) 【 】;

cout<<k;

}


正确答案:k=s[p]
k=s[p]

第8题:

主程序调用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

第9题:

设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

设有以下程序:

include<iostream>

using namespace std;

int main()

{

int a,b,k:4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

cout<<a<<b<<end1;

return 0;

}

执行该程序后,a的值为【 】,b的值为【 】。


正确答案:0 7
0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。

第10题:

下列程序的运行结果是()。includevoid fun(int*s,int*p){ static int t=3;*p=s[t];t--;

下列程序的运行结果是( )。#include<stdio.h>void fun(int*s,int*p){ static int t=3; *p=s[t]; t--;}void main(){ int a[]={2,3,4,5),k; int x; for(k=0;k<4;k++) { fun(a,&x); printf("%d,",x); }}

A.5,4,3,2

B.2,3,4,5,

C.2,2,2,2,

D.5,5,5,5,


正确答案:A
解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。

更多相关问题