c语言计算机二级选择题(计算机二级C语言)
计算机二级C语言 编程题 删除*类问题,我来为大家科普一下关于c语言计算机二级选择题?下面希望有你要的答案,我们一起来看看吧!
c语言计算机二级选择题
计算机二级C语言 编程题 删除*类问题
第1题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
解题思路:
知识点:字符型数组、指针
对主函数说明如下:
main()
{ char s[81],*t,*f;
printf("Enter a string:\n");
//从键盘上得到字符串,存入数组s中
gets(s);
//让指针f、t都指向s数组
t=f=s;
//本循环,循环体只有t ,执行结束,指针t指向串尾
while(*t) t ;
//指针t减1,指向倒数第1个字符
t--;
//如果是*号则向前移动指针,直到指向倒数第1个非*字符
while (*t=='*') t--;
//f指针本来是指向首地址的,当是*向后指,直到指向正向第1非*字符
while (*f=='*') f ;
//用三个地址做参数调用函数
fun(s,f,t);
printf("The string after deleted:\n");puts(s);
NONO();
}
参考答案(以控制下标的方式)
说明:形参a,h,p,实际上指向同一数组的不同位置,它们之间运算可以得到字符下标,
分三段:第1段下标从0到h-a 第2段下标从h-a到p-a,第3段下标从p-a到串尾,第1、3段的字符直接保存,
第2段的字符单独处理。
void fun(char *a,char *h,char *p)
{
int i,t=0;
for(i=0;a[i];i )
{
if(i<=h-a)
a[t ]=a[i];
else if(i<p-a)
{
if(a[i]!='*')
a[t ]=a[i];
}
else
a[t ]=a[i];
}
a[t]='\0';
}
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com