有以下程序 #include<stdio.h> void fun(char *a,char B) { while(*(a++)!=’\0’); while(*(a-1)<B)*(a--)=*(a-1); *(a--)=b; } main()

admin2022-10-24  17

问题 有以下程序
#include<stdio.h>
void fun(char *a,char B)
{  while(*(a++)!=’\0’);
   while(*(a-1)<B)*(a--)=*(a-1);
   *(a--)=b;
}
main()
{char s[8]="pmfc",c;
   e=getchar();
   fun(s,c);
   puts(s);
}
程序运行时输入k并按<Enter>,则输出结果为(          )。

选项 A、pmfkc
B、pmfck
C、kpmfc
D、pmkfc

答案D

解析 main函数定义一个字符数组s,使用字符串“pmfc”初始化;然后通过getchar读取一个字符k并赋给字符变量c;再将字符串s和字符c传入fun函数。函数fun首先通过while循环遍历字符串s,直到指针a指向字符串结束标识“\0”后的一个字符,如下图所示。
 
 接着通过while循环逆序遍历字符串s,首先a-1的字符位是“\0”,它的ASCII值为0,小于b(字符k)的ASCII值107,那么将“\0”赋给下标为5的元素位置。接着继续向前遍历,同理,将c(ASCII值为99)赋给下标为4的元素位置,将f(ASCII值为102)赋给下标为3的元素位置。由于m(ASCII值为109)大于1),因此循环结束,将b赋给下标为2的元素位置。此时str字符串如下图所示。
 
 故本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/fDkp777K
0

随机试题
最新回复(0)