首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*”号;若少于或等于n个,则什么也不做,字符串中间和前面的“*”号不删除。 例如, 字符串中的内容为:****A*BC*
假定输入的字符串中只包含字母和“*”号。请编写函数fun,它的功能是:使字符串中尾部的“*”号不得多于n个;若多于n个,则删除多余的“*”号;若少于或等于n个,则什么也不做,字符串中间和前面的“*”号不删除。 例如, 字符串中的内容为:****A*BC*
admin
2019-09-02
27
问题
假定输入的字符串中只包含字母和“*”号。请编写函数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的功能是:判断ch中的字符是否与s仃所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。请改正程序中的错误,使它能进行正确的操作。注意:不要改动main函数,不得增行或删行,也不得更
请编写函数fun,函数的功能是求出二维数组周边元索之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组中的值为:1357929994699981
有以下程序#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]="ace",aa[10]="bbxxyy";
有以下程序charfun(char*c){if(*c<=’z’&&*c>=’A’)*c-=’A’-’a’;return*c;}main(){chars[81],*p=s;gets(S);while(*P){*P=fun(P
以下函数按每行8个输出数组中的数据:voidfun(int*w,intn){inti;for(i=0;i<n;i++){______________printf("%d",w[i]);}printf
有以下程序main(){inta=1,b=2,c=3,x;x=(a^b)&c;’printf("%d\n",x);}程序的运行结果是
设有如下的说明和定义struct{inta;char*s;)x,*p=&x;x.a=4;x.s=hello";则以下叙述中正确的是
有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是
有两个关系R和S如下:由关系R通过运算得到关系S,则所使用的运算为
软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于
随机试题
王安电脑公司曾是美国IT企业界一颗闪亮的明星。美籍华裔科学家、企业家王安在美国波士顿创办了一家驰名世界的“王安电脑公司”,他从600美元投资开始,经过40多年的艰苦奋斗,已发展成为一家拥有3万多名员工,30多亿美元资产,在大约60多个国家和地区设有250家
什么是物联网?
A.环咽肌收缩而成B.由主动脉弓压迫食管所致C.由左主支气管压迫食管所致D.由右主支气管压迫食管所致E.食管穿过横膈裂孔所致食管第3狭窄处
下述哪种疾病,胃液分析时发现病理性胃酸分泌增多
下列选项中,不可以发布的广告有()。
建立空间要素之间的拓扑关系属于()。
各级行政区都应有一个行政中心,它是该行政区()的驻地。
施工单位A承包了一段某繁忙干线铁路改造工程,内容有桥涵顶进、路基帮宽和轨枕更换等。工程开工后,该施工单位便把其中12+16+12m的桥涵顶进工程的施工任务分包给一家具有专业承包资质的B施工单位施工。顶进施工过程中,线路发生坍塌,造成繁忙干线客运列车脱轨19
在确定审计证据的数量时,下列表述中错误的是()。
从法律认可的角度看,习惯被认可为习惯法,应满足如下的条件()。
最新回复
(
0
)