A-A+

当运行以下程序时 输入abed 程序的输出结果是:【 】。 insert(char str[

2022-08-12 19:31:37 问答库 阅读 197 次

问题详情

当运行以下程序时,输入abed,程序的输出结果是:【 】。 insert(char str[]) {int i i=strlen(str); while(i>0) {str[2*i]=str[i];str[2*-1]=*;i--; } printf("%sn",str); } main() {char str[40]; scanf("%s",sB) ; insert(str); }


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:a*b*c*d
在insert()函数,因为题目要求输入的字符串为abed,所以执行完“i=strlen(str);”后,i中存放的是字符串abcd的长度值4。所以接F来的while循环会循环4次,每次让i减1,故4次循环中i的值依次为4、3、2、1。每次循环会执行两条语句str[2*i]=str[i];str[2*i-1]="*",当i=4时为:str[8]=str[4];str[7=="*";。执行结果是将字符串abed末尾的结束符"\0"复制到其下标值2倍的位置,并在其前1位插入—个"*"哼符。接下来i=3,执行str[6]=str[3];str[5]="*"。执行后会将字符串abcd最后一个字符,d复制到其下标值2倍的位置,并在其前1位插入一个"*"字符。依次类推,直到i=1,执行str[2]=str[1];str[1]="*",将字符tb,往后移动了1位,并在原位置插入"*"字符。所以,循环结束后,字符串str会变为a*b*c*d*。这就是程序的输出结果。

考点:程序