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

admin2022-04-01  22

问题 有以下程序
 #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 <回车>,则输出结果为(          )。

选项 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)大于b,所以循环结束,将b(字符‘k’)赋给下标为2的位置,此时str字符串如下:
 
 所以本题答案为D。
转载请注明原文地址:https://kaotiyun.com/show/F1kp777K
0

最新回复(0)