首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如, 字符串中的内容为:****A*BC*DEF*G
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如, 字符串中的内容为:****A*BC*DEF*G
admin
2021-06-15
64
问题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。
例如, 字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:****ABCDEFG。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(char*a)
{
/*以下代码仅供参考*/
int i=0,k;
while(a
==’*’) i++;
k=i;
while(a
!=’\0’)/*以下程序段实现非*字符前移*/
{
}
a[k]=’\0’;
}
main()
{char s[81];void NONO();
printf("Enter a string:\n");gets(s);
fun(s);
printf("The string after deleted:\n");puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE*in,*out;
int i;char s[81];
in=fopen("in.dat","r");
out=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
folkose(in);
fclose(out);
}
选项
答案
void fun(char *a) (int i=0,k; while(a[i]==’*’)i++; k=i; while(a[i]!=’\0’) {if(a[i]!=’*’)a[k++]=a[i]; i++; } a(k]=’\0’; }
解析
本题所需要的功能是是处理一个输入的只含字母和“*”的字符串,除了字符串前导的“*”号之外,将串中其它“*”号全部删除。并且在编写函数时,不得使用C语言提供的字符串函数。这里根据题意,很快我们就知道需要使用循环语句和条件语句来进行功能的实现。第一步要自己输入字符串,这就需要格式输入函数;第二步就要进行功能函数了,这里的就要一开始是否有“*”的存在,有多少个“*”,这个是很重要的判断。因为根据题意虽然是要删除“*”,但是字符串前面的“*”是不用删除的,无论有多少个都不能删除,然后当没有“*”或者跳过字符串前面“*”后,就要到达第一个字母了,字母保留,然后后面遇见“*”就删除,依次循环进行下去,一直到字符串结束,这些功能的实现就需要条件语句和循环语句的使用了;第三步将处理过后的字符串输出,得到新的字符串,程序就可以结束了。
本题主函数中需要输入一个字符串,然后进入fun函数处理字符串,在fun函数中,就要实现题目要求我们写出的功能了。首先是判断字符串的开始是否为“*”,这里就用到while函数(这里因为有步骤的区别,所以这里用while比用if好),判断开始的字符是否为“*”,见程序第5~6行,这里需要顺次进行,因为开始无论有多少个“*”都不用删除,当出现字母时,就开始下一步了,因为已经出现了字母,所以后面出现的“*”一律删除,而字母时不用管的,所以这里就又需要if条件语句来判断是否为“*”然后赋值为空,见程序第9~12行,当程序进行到字符为空时代表字符串结束,程序就终止,这里就要用到while条件语句进行终止判断,见程序第7行。这样循环进行就能保留字符串前面的“*”并且删除后面出现的所有“*”了,然后fun函数执行完成就可以转到主函数中进行新字符串的输出了。
转载请注明原文地址:https://kaotiyun.com/show/3Atp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。
给定程序MODI1.C中,函数fun的功能是判断整数n是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数”。例如:6的因子包括1、2、3,而6=1+2+3,所以6是完数。如果是完数,函数返回值为1,否则函数返回值为0。数组a中存放的
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下
下列程序的输出结果为()。main(){unionun{char*name;intage;intpay;}s;’s.name="zhaoming";s.age=32;s.pay=3000;printf("%d\n",s.a
下面程序的运行结果是()。y=5;x=14;y=((x=3+y,x+6),x-1);pfintf("x=%d,y=%d",y);
请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#inlclude<stdio.h>#inclu
以下选项中合法的标识符是
有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为( )。
数据流图中带有箭头的线段表示的是
对于现实世界中事物的特征,在实体一联系模型中使用()。
随机试题
升白细胞药的用药原则有
起重机械事故后果严重,一起事故有时涉及多人,因此应加强对起重机械操作人员的操作行为的监督管理。下列关于起重机司机安全操作的说法中,正确的是()。
下面哪项是继发性肺结核病所不具备的
能加重炎症扩散易患皮下坏疽
有关药物通过胎盘的影响因素,说法不正确的是()。
弧形闸门安装包括()。
在Excel2000中,若某一工作表的某一单元格中出现错误值“###”,可能的原因是()。
某公司的现金最低持有量为3000元,现金余额的回归线为9000元。如果公司现有现金24000元,根据现金持有量随机模型,此时应当投资于有价证券的金额为()元。
2016年4月1日,甲公司对9名高管人员每人授予20万份甲公司股票认股权证,每份认股权证持有人有权在2017年2月1日按每股10元的价格购买1股甲公司股票。该认股权证不附加其他行权条件,无论行权日相关人员是否在职均不影响其享有的权利,行权前的转让也不受限制
TextAfterlunch,withoutpermissionfromtheirparents,thetwoboyssetofftoexplorethepartofthebeachwhich【C1】_____
最新回复
(
0
)