下面程序的运行结果是#include #define SIZE 12sub(char *a,int t1,int t2) { char ch; while(t

题目

下面程序的运行结果是#include #define SIZE 12sub(char *a,int t1,int t2) { char ch; while(t1<t2) { ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1++;t2--; }} main() { char s[SIZE]={’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’}; int i; sub(s,7,SIZE-1); for(i=0;i<SIZE;i++) printf("%c ",s[i]); printf("\n");}

参考答案和解析
正确答案:A B C D E F G L K J I H
在本题中,程序首先定义了一个大小为12的宏SIZE,然后定义了一个函数sub,该函数带有三个形参,第一个为字符型指针变量,另外两个为整型变量。
在主函数中,首先定义了一个大小为宏SIZE的字符型数组s,并对其进行了初始化操作,然后定义一个循环变量i,接着调用函数sub,传递的实参分别为数组名s,7和数组长度减1,此时程序运行到sub函数,在该函数体中,首先运行while循环,该循环的结束条件为t1<t2,从传递的参数可以知道t1和t2的初值分别为7和11。
第一次循环时,将*(a+t1)即a[7]的值赋值给ch,然后将*(a+t2)即a[11]的值赋给a[7],将ch的值赋给a[11],从分析可以知操作其实是交换*(a+t1)与*(a+t2)的值,即a[7]和a[11]的值,然后变量t1加1为8,t2减1为10。
由于8<10,程序进行第二次循环,即交换数组元素a[8]和a[10]的值,然后变量t1加1为9,t2减1为9。由于这两个变量的值相等,循环结束。
循环结束后,数组s中各元素的值分别为A、B、C、D、E、F、G、L、K、J、I、H,最后主函数用一个循环,输出数组s中各元素的值,因此,最后输出的结果是A B C D E F G L K J I H。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面程序的运行结果是______。 include include fun(char*w,int n) { char

下面程序的运行结果是______。 #include<stdio.h> #include<string.h> fun(char*w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) {t=*s1++;*s1=*s2--;*s2=t;} } main() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); }

A.7654321

B.1714171

C.1711717

D.7177171


正确答案:C

第2题:

有以下程序 include void fun(char *t,char *s) { while(*t!=0) t++; while((*t++=*s

有以下程序

#include <stdio.h>

void fun(char *t,char *s)

{ while(*t!=0) t++;

while((*t++=*s++)!=0);

}

main( )

{ char ss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa); printf("%s,%s\n",ss,aa);

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy


正确答案:D
解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符“\0”)逐个复制到字符串ss的末尾处。

第3题:

下列程序运行后,输出结果是______。 include include fun(char *w ,int

下列程序运行后,输出结果是______。 #include <stdio. h> #include <string. h> fun (char *w ,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while (s1<s2) { t=*s1++; *s1=*s2--; *s2=t; } } main () { char *p; p="1234567"; fun (p, strlen (p)); puts (p); }

A.1234567

B.7654321

C.1711717

D.7177171


正确答案:C

第4题:

下面程序的运行结果是()。includeincludemain(){char*s1="abDuj";char*s2="

下面程序的运行结果是( )。 #include<stdio.h> #include<string.h> main() {char*s1="abDuj"; char*s2="ABdUG"; int t; t=strcmp(s1,s2); printf("%d",t); }

A.正数

B.负数

C.零

D.不确定的值


正确答案:A

第5题:

有下列程序:includevoid fun(char *a, char *B){while(*a=='*')a++;while(*b=*A){b++;

有下列程序: #include <stdio.h> void fun(char *a, char *B) { while(*a=='*')a++; while(*b=*A) {b++;a++;} } main() { char *s="*****a*b****",t[80]; fun(s,t);puts(t); 程序的运行结果是( )。

A.*****a*b

B.a*b

C.a*b****

D.ab


正确答案:C
解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个 while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[80]中的内容为“a*b****”,所以此题的运行结果为选项C)。

第6题:

有以下程序:includevoid fun(char *a,char*B){while(*a=='*')a++;while(*b=*A){b++;a+

有以下程序: #include<stdio.h> void fun(char *a,char*B){while(*a=='*')a++; while(*b=*A){b++;a++;} } main() {char*s="****a*b****",t[80]; fun(s,t);puts(t); } 程序的运行结果是( )。

A.*****a*b

B.a*b

C.a*b****

D.ab


正确答案:C

第7题:

有以下程序 include void fun(char *t, char *s) { whil

有以下程序 #include <stdio.h> void fun(char *t, char *s) { while(*t!=0) t++; while( (*t++ = *s++ )!=0 ); main() { char ss[10]="acc",aa[10]="bbxxyy"; fun(ss, aa); printff"%s,%s\n", ss,aa); 程序的运行结果是

A.accxyy, bbxxyy

B.acc, bbxxyy

C.accxxyy, bbxxyy

D.accbbxxyy, bbxxyy


正确答案:D
解析:函数fun()中,前一个while循环的作用是:如果形参指针t所指内容不为0,则让t增1,直到它指向0。后一个 while循环的作用是:将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为"accbbxxyy"。故最终输出的结果是:accbbxxyy,bbxxyy,应该选择D。

第8题:

下面程序的运行结果是( )。include define SlZE 12 main() {char s[SIZE];int i;for(i=0

下面程序的运行结果是( )。

include<stdio.h>

define SlZE 12

main()

{char s[SIZE];int i;

for(i=0;i<SIZE;i++) s[i]='A'+i+32;

sub(s,5,SIZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char *a,int t1,int t2)

{ char ch;

while(t1<t2)

{ ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;

}

}


正确答案:abcdelkjihgf
abcdelkjihgf 解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数sub(char*a,int t1,int t2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。

第9题:

有以下程序includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}m

有以下程序 #include <stdio.h> voidfun(char*t,char*s) {while(*t!=0) t++; while((*t++=*s++)!=0); } main() {char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa); printf("%s,%s\n",ss,aa); } 程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy


正确答案:D
解析: 本题中fun函数实现丁字符串函数str-eat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\0')逐个复制到字符串ss的末尾处。