计算机二级

请选出下面正确的程序段( )。A.int *s; scanf("%d",s); ┆B.int *s,k; *s=100; ┆C.int *s,k; char *p, c; s=&k; p=&c; *p='a'; ┆D.int *s,k; char *p, c; s=&k; p=&c; s=p; *s=1; ┆

题目

请选出下面正确的程序段( )。

A.int *s; scanf("%d",s); ┆

B.int *s,k; *s=100; ┆

C.int *s,k; char *p, c; s=&k; p=&c; *p='a'; ┆

D.int *s,k; char *p, c; s=&k; p=&c; s=p; *s=1; ┆

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

第1题:

以下正确的程序段是 ()。

A.char str[2]; scanf("%s",&str);

B. char *p; scanf("%s",p);

C. char str[20]; scnaf("%s",&str[2]);

D. char str[20],*p=str; scanf("%s",p[2]);


参考答案:B

第2题:

在下列选项中,没有构成死循环的是

A.int i=100; while(1) { i=i%100+1; if(i>100)break; }

B.for(;;);

C.int k=10000; do{k++;}while(k>10000);

D.)int s=36; while(s)--s;


正确答案:D
解析:选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,所以在循环体内表达式i%100+1的值永远不大于100,break语句永远不会执行,所以是死循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行k++,使k=10001,从而使循环陷入死循环。

第3题:

有以下程序段 , 且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

请填空 , 使下面程序段的功能为完全相同

s=1.0;k=1;

while( _[10]_______ ){ s=s+1.0/(k*(k+1)); _[11]_______ ;}

printf("s=%f\n\n",s);


正确答案:

 

第4题:

有以下程序:includevoid f(char *s, char *t){ char k;k=*s;*s=*t; *t=k;s++;t- -;

有以下程序:#include <string .h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t- -; if(*s) f(s, t);}main(){ char str[10]="abcdefg",*p; p=str+strlen(str)/2+ 1; f(p,p-2); printf("%s\n", str);}程序运行后的输出结果是( )。

A.abcdcfg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B
解析:本题定义的函数f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动—位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了—个字符数组sir[10]=“ahcdeft”然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置。然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的str[p]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

第5题:

以下程序段完全正确的是( )。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.int k,*p=&k;scanf("%d",p);

D.int k,*p;*p=&k;scanf("%d¨,p);


正确答案:C
A中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

第6题:

请选出正确的程序段

A.int *p;

scanf("%d",p);

B.int *s, k;

*s=100;

C.int *s, k;

char *p, c;

s=&k;

p=&c;

*p=′a′;

D.int *s, k;

char *p, e;

s=&k;

p=&c;

s=p;

*s=1;


正确答案:C

第7题:

以下正确的程序段是

A.cgar str[20]; scanf(“%s",&str);

B.char *p; scanf("%s",p);

C.cha str[20]; scanf("%s",&str[2])

D.char str[20],*p=str; scanf("%s",p[2]);


正确答案:C

第8题:

以下正确的程序段是()。

A.char s[20]

B.char *s

scanf("%s", &s) scanf("%s", s)

C.char s[20]

D.char s[20], *t=s

scanf("%s",&s[2]) scanf("%s", t[2])


答案:C

第9题:

在下列选项中,没有构成死循环的是

A.int i=100;

while(1)

{i=i0+1;

if(i>100)break;

}

B.for(;;);

C.int k=10000;

do{k++;}while(k>10000);

D.int s=36;while(s)--s;


正确答案:D

第10题:

有以下程序:includevoid f(char*s,char*t){ char k;k=*s;*s=*t;*t=k;s++;t--;if(*s)f

有以下程序: #include<string.h> void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s,t); } main( ) {char str[10]="abcdefg",*p; p=str+strlen(str)/2+1; f(p,p-2); printf(~%s\n",str); } 程序运行后的输出结果是 ______。

A.abcdef

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B
解析:p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将p[4]与p[2]互换,p[5]与p[1]互换,p[6]与p[0]互换,最后的结果为gfedcba。

更多相关问题