问题 填空题

给定程序中,函数fun的功能是:把形参S所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。
例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
void fun(char*s)

int i,n,k;
char c;
n=0;
for(i=0;s[i]!=’\0’;i++)
n++;
if(n%2==0)
k=n- (1)
else
k=n- (2)
c=s[k];
for(i=k-2;i>=1;i=i-2)
s[i+2]=s[i];
sell= (3)

void main()

char s[80]="abcdefgh";
printf("\nThe original string is:%s\n",s);
fun(s);
printf("\nThe result is:%s\n",s);

答案

参考答案:c

解析: 本程序的作用是将字符串(即字符数组)中奇数位置(下标)的字符循环后移,即最后一个奇数位置的字符移到第一个奇数位置,其他奇数位置字符后移一个位置。第一个for循环的作用是求出字符串s的长度n。如果n是偶数,字符串下标为奇数的最后一个字符就是前一个字符,k=n-1;如果n是奇数,k=n-2。将字符s[k]保存到c中,通过循环实现减遍历,将下标为奇数的字符都后移2位(因为包含偶数,所以后移两位,就是后移到下一奇数位)。最后将最右边被移出字符串的字符放到第一个奇数位置。

单项选择题
多项选择题