niusouti.com

请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEFGHIJKABC。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <stdio. h>include <string.h>define N 80void fun (c

题目

请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEFGHIJKABC。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <stdio. h>

include <string.h>

define N 80

void fun (char *w, int m)

{

}

main ( )

{

char a[N]= "ABCDEFGHIJK";

int m;

printf ("The origina string : \n");

puts (a);

printf("\n\nEnter m: ");

scanf ("%d", &m);

fun (a, m);

printf (" \nThe string after moving : \n");

puts (a);

printf ("\n\n");

}


相似考题
参考答案和解析
正确答案:void fun(char *wint m) { int ij; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } }
void fun(char *w,int m) { int i,j; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } } 解析:我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。
更多“请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符 ”相关问题
  • 第1题:

    编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串的后面。

    例如,分别输人下面两个字符串:FirstString——SecondString

    程序运行后的输出结果是:FirstString————SecondString

    注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    voidfun(charpl[],charp2[])in“,j;for(i=0;pl[i]f=。、0’;i++);for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];p1[i],_。、0’;}【考点分析】“本题考查:不使用字符串函数实现字符串连接操作。通过for循环语句来完成,不要忘了最后需要加上字符串结束标识‘、0’。【解题思路】本题用两个循环完成操作,第1个循环的作用是求出第1个字符串的长度,即将i指到第1个字符串的末尾。第2个循环的作用是将第2个字符串的字符连到第l个字符申的末尾。最后在第l个字符串的结尾加上字符串结束标识‘、0’。

  • 第2题:

    请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

    例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABC。

    注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是移动字符串中的内容,第一个字符移动到最后,后面的字符往前移动一位,形成循环左移。移动m个字符的就是循环左移m次。

  • 第3题:

    请补充fun()函数,该函数的功能是:把字符的ASCII码中为奇数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输人,其长度作为参数传人fun()函数。

    例如,输入“abcdef”,则输出“bdf”。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在mare()函数的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:


    【解析】先判断ASCⅡ码的奇偶。
    第一空:根据主函数“fun(str,len);”调用语句,其中len为字符串str的长度,用来控制循环。根据主函数中对应的调用语句,补全fun()函数定义,第一空填“fun(chars[],intn)”。
    第二空:“s[j++]=s[i];”语句中j的变量在使用前要对其取值进行初始化,因为数组下标是由0开始的,初始化值为0,所以第二空填“j-0”。
    第三空:新生成的字符串要加尾符标志,所以第三空填“s[j]=ˊ\0ˊ”。

  • 第4题:

    规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.


    正确答案:
    程序设计题解析:【考点分析】本题考查:指针型变最定义;wh丑e循环语句;语句条件表达式;字符串结束标识‘\0’。【解题思路】函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删除。【解答本题】(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符‘、O’。【解题宝典】要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

  • 第5题:

    请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆置。 例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:


    正确答案:

    【解析】在fun()函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。