赞
踩
国二题目:
规定输入的字符串中只包含字母和号。请编写函数fun,它的功能是:将字符串中的前导号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:*******A*Bc*DEF*G,删除后,字符串中的内容应当是:A*Bc*DEF*G在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
分析:
1.注意,s[]是数组,而不是指针,在操作时需要注意一下
2.只需要删除开头的*号,其它的部分不需要删除
3.合法性检查,如果不是合法字符串,需要提示错误信息
4.注意:如果开头的*号下一个元素不是星号,注意保留
代码如下:
/*
规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:*******A*Bc*DEF*G****,删除后,字符串中的内容应当是:A*Bc*DEF*G****在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。
*/
#include <stdio.h>
#include <string.h>
void fun( char *a )
{
char *p;
int len;
int i;
p=a;
len=strlen(a); // 求字符串长度
for(i=0;i<len;i++)
{
if((a[i]!='*') && (a[i]<'A'|| a[i]>'Z') && (a[i]<'a'|| a[i]>'z')) // 字符串合法性检查
{
printf("输入的数组格式不对!\n");
return;
}
}
for(i=0;i<len;i++)
{
if('*' == a[i]) // 查找开头属于*的字符串
{
p++; // 如果一直是*号,指针p跳到下一个
if(a[i+1]!='*') // 判断数组的下一个元素是不是*号
{
break;
}
}
}
i=0;
while(*p!='\0') // 将数组a通过指针p来改变,重新赋值。去除开头的*号部分
{
a[i]=*p;
p++;
i++;
}
a[i]='\0'; // 最后要加上结束符
}
void main()
{
char s[81];
printf("Enter a string:\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
}
结果为:
建议大家注意分析题意。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。