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

题目

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

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

第1题:

假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:


正确答案:

题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

第2题:

规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函 数时,不得使用c语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF * G*******删除*后字符串中的内容应当 是:ABCDEFG。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


正确答案:


【考点分析】
要删除字符串中所有*号需要用循环语句遍历字符串,用
判断语句判断字符是否为*号,由此可以决定该程序应使用循
环判断结构。
【解题思路】

第3题:

请教:2016年计算机二级考试C++模拟试题简答题8答案

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。


  void fun(char *a)

  {int i=0;

  char *p,*q;

  p=q=a;

  while(*p)

  p++;

  p--;

  while(*p==‘*’)

  p--;

  while(q<=p)

  {a=*q;

  i++;

  q++;}

  a=‘’;}

第4题:

规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。


正确答案:
voidfun(char*a){while(*a!=’、0。)a++:a一一;/*指针a指向字符串的尾部*/while(}a==’*。)a一一;/·指针a指向最后一个字母*/*(a+1)=’、0’;/*在字符串最后加上结束标志符·/【考点分析】本题考查:删除字符串尾部*号;删除的主要思想是把不删除的字符保留起来。【解题思路】对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘、0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非·号字符为止。最后在该字符后面加上结束符号’\0。

第5题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号:若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为;*******A*BC*DEF*G****。n的值在主函数中输入。

在编写函数时,不得使用C语言提供的字符串函数。

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

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


正确答案:
解析:该程序功能是根据字符串前导的“*”号个数进行相关操作。解题过程首先确定字符串尾,然后由串头开始对字符进行判断,同时对“*”字符进行统计,如果大于n,就进行截取。

第6题:

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。

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

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


正确答案:
解析:该程序功能是将字符串尾部的“*”号全部删除,前面和中间的“*”号不删除。本题的解题过程首先确定由串尾开始的第一个非“*”位置,将由头开始到此位置的字符拷贝到字符串。

第7题:

假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

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

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

试题程序:

include<conio. h>

include<stdio. h>

void fun(char *a, char *p)

{

}

main ( )

char s[81],*t;

printf ("Enter a string: \n ");

gets (s);

t=s;

while (*t)

t++;

t--; /*指针t指向字符串尾部* /

while (*t== '*' )

t--; /*指针t指向最后一个字母*/

fun (s, t);

printf ("The string after deleted: \n");

puts (s);

}


正确答案:void fun(char *a char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/
void fun(char *a, char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/ 解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。

第8题:

假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。

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

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

试题程序;

include <stdio. h>

include <conio. h>

void fun (char *a)

{

}

main()

{

char s[81];

printf("Enter a string :\n");

gets (s);

fun (s);

printf ("The string after deleted: \n");

puts (s);

}


正确答案:void fun (char *a) { char*p=a; while(*P==‘+’) p++; /*指针p指向字符串第一个字母*/ for(;*p!=‘\0’;p++a++) *a=*p; /*从第—个字母开始其后的字符都放入指针a所指的字符串中*/ *a=‘\0’; /*在字符串最后加上结束标记符*/ }
void fun (char *a) { char*p=a; while(*P==‘+’) p++; /*指针p指向字符串第一个字母*/ for(;*p!=‘\0’;p++,a++) *a=*p; /*从第—个字母开始,其后的字符都放入指针a所指的字符串中*/ *a=‘\0’; /*在字符串最后加上结束标记符*/ } 解析:在前面的改错题和编程题中,相关试题已经出现好多次了,我们在此提供另一种解答方法。
#includestring.h>
void fun (char *a)
{char *p=a;
while (*p==‘*’)p++;
strcpy(a,p);
}

第9题:

假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。

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

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

试题程序:

include<stdio.h=:{>

include<conio.h>

woid proc(char*st r)

{

}

void main

char str[81];

printf("Enter a string:\n");

gets(str);

proc(str):

printf("The string after deleted:\n");

puts(str);}


正确答案:

void proc(char*str)

{

char*p=str

while(*p=='*')p++;//通过P的移动来达

到使P指向第一个不是*号的字符

for(*p!='0 'p++str++)//把从第一个

不是*号的字符放到a中 ‘

*str=* P

*str='0 '; //最后用'0'作为字符串结束标志

}

【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。