首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*”号;若少于或等于n个,则什么也不做,字符串中间和前面的“*”号不删除。 例如, 字符串中的内容为:****A*BC*
假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*”号;若少于或等于n个,则什么也不做,字符串中间和前面的“*”号不删除。 例如, 字符串中的内容为:****A*BC*
admin
2019-09-02
19
问题
假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*”号;若少于或等于n个,则什么也不做,字符串中间和前面的“*”号不删除。
例如, 字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(char*a,int n)
{
}
main()
{ char s[81];int n;
void NONO();
printf("Enter a string:\n");gets(s);
printf("Enter n:");scanf("%d", &n);
fun(s,n);
printf("The string after deleted:\n");putS(s);
NONO(),
}
void NONO()
{/*本函数用于打开文件,输入数据,调用 函数,输出数据,关闭文件。*/
FILE*in,*out;
int i,n;char s[81];
in=open("in.dat","r");
out=fopen("out.dat","w");
for(i=0;i<1 0;i++){
fscanf(in,"%s",s);
fscanf(in,"%d",&n);
fun(s,n);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
选项
答案
int i=0,j=0; char *p,*t; p=t=a; while(*t)//让指针t指向串尾 t++; t--;//t指向串中的最后一个字符 while(*t==’*’) //当t指针当前指向的字符是“*”号时 {j++;//对“*”号计数的累加器加1 t--;)}//指向前一个字符 t++;//跳出“*”号统计后,指针t继续指向字符串的下一个字符 if(j>n)//对统计的“*”号数目大于给定的“*”号总数n { while(*p&&p<t+n) //当超出给定的“*”号数目,则开始进行截取 {a[i]=*p; //截取n个“*”号 i++; p++;} a[i]=’\0’;}//对新生成的串加尾符
解析
解题过程首先确定字符串尾,然后由串尾开始对字符进行判断,同时对“*”字符进行统计,如果大于n,就进行截取。(1)首先确定字符串的结尾,然后判断“*”号字符,并对字符串中的字符进行判断,如果字符是符号“*”则对“*”号进行统计。(2)根据统计的“*”号数目结合题目中对“*”号个数的要求,判断是执行对“*”号的截取操作,还是什么都不用做。(3)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。
转载请注明原文地址:https://kaotiyun.com/show/wORp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
给定程序MODI1.C中函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。请改正fun函数中的错误,使它能得出正确的
下列选项中不属于结构化程序设计方法的是
以下选项中,能用作用户标识符的是
有以下程序#includemain(){inta=1,b=0;printf("%d,",b=a+B)printf("%d\n",a=2*B)}程序运行后的输出结果是
有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是
当用户要求输入的字符串中含有空格时,应使用的输入函数是
以下正确使用C语言标识符的是()。
下列选项中不属于软件生命周期开发阶段任务的是
以下C语言用户标识符中,不合法的是
下面不属于软件设计阶段任务的是
随机试题
无复流现象
血浆中运输内源性胆固醇的脂蛋白是
技术、服务等标准统一的货物和服务项目,应当采用()。
根据我国《商业银行资本管理办法(试行)》,商业银行储备资本要求应由()来满足。
特别提款权是国际货币基金组织创设的一种储备资产和()。
办职业学校的,须同时和一切教育界、职业界努力地沟通和联络,提倡职业教育的,同时须分一部分精神来参加全社会的运动。这是()提出的。
给定资料1.近年来,随着国家和地方政府对扶贫攻坚的政策扶持及资金投入力度越来越大,被曝光的涉及扶贫领域的腐败案例不断涌现,扶贫领域俨然已经成为腐败的“重灾区”。扶贫资金被人“惦记”,和其监管难有很大关系。从横向上看,扶贫资金来源过多,多头管
法治是社会治理的基本规则,尤其是在全面依法治国新时代,任何人不管在线上还是线下,都应遵守法律秩序。任何人都必须在法律和道德的______内对网络话语权“轻拿轻放”,用谨言慎行守护______的网络空间和人间正道。依次填入画横线处最恰当的一项是:
编写对有序表进行顺序查找的算法,并画出对有序表进行顺序查找的判定树。假设每次查找时的给定值为随机值,且查找成功和不成功的概率也相等,试求进行每一次查找时和给定值进行比较的关键字个数的期望值。
有学生关系S和借书关系C如下图所示。它们的主码分别是S#和C#SS#NAMECLASS下列哪些操作不能进行?
最新回复
(
0
)