首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*
admin
2019-03-19
12
问题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;
若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
void fun(char*a,int n)
{
}
main()
{ char s[8 1];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()
{/*本函数用r打开文件,输入数据,调用函
数,输出数据,关闭文件。 */
FILE*in,*out;
int i, n ; char s[8 1] ;
in=fopen("in.dat","r");
out=1open("out.dat","w");
for(i=0 ; i<10 ; i++) {
fscanf(iiq,"%s",s);
fscanf(in, "%d", &r1);
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
解析
解题过程首先确定字符串尾,然后由串尾开始对字符进行判断,同时对“*”字符进行统计,如果大于n,就进行截取。
(1)首先确定字符串的尾,然后判断“*”号字符,并对字符串中的字符进行判断,如果字符是符号“*”则对“*”号进行统计。
(2)根据统计的“*”号数目结合题目中对“*”。号个数的要求,判断是执行对“*”号的截取操作,还是什么都不用做。
(3)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。
转载请注明原文地址:https://www.kaotiyun.com/show/t6Rp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;P=&a[0][0];m=p[4];
下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。fun(int*p,intn){int*q;intmax,min;max=min=*p;for(q=p;【】
函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s
以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#includemain(){inta[4][4]={{1,2,6,7),{0,4,2,-8),{1,4,5,2},{2,4,6,8));intb[4]
下列程序的输出结果是______。intm=10;intfun(inta,intB){intm=2;return(a*b-m);}main(){intx=7,y=5;
要正确定义并初始化一个数组a,它含有5个元素,则正确的语句是______。
下述程序的输出结果是()。#includemain(){inti;for(i=1;i<=10;i++){if(i*i>=20)&&(i*i<=100))break;
下面函数调用语句含有实参的个数为func((exp1,exp2)(exp3,exp4,exp5));
设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为()。
若有以下类型说明语句:charw;intx;flooaty,z;则表达式w*x+z-y的结果为______类型。
随机试题
虽如是,其敢自谓几于成乎?
肛门直肠瘘
下列哪一项关于处方的概念是错误的
以下不属于特种设备范围的是()。
长江公司自2×16年年初开始自行研究开发一项新专利技术,2×16年发生相关研发支出70万元,其中,符合资本化条件前发生的开发支出为30元,符合资本化条件后发生的开发支出为40万元;2×17年至无形资产达到预定用途前发生开发支出105万元,2×17年7月
以连锁店为例,从需求方的角度分析配送中心的作用。
《中共中央关于构建社会主义和谐社会若干重大问题的决定》指出,要坚持以()引领社会思潮,尊重差异,包容多样,最大限度地形成社会思想共识。
按照美国学者古德莱德的观点,课程可以分为五个层面,除理想的课程、正式的课程、领悟的课程之外,还有()。
Youheartherefrainallthetime:theU.S.economylooksgoodstatistically,butitdoesn’tfeelgood.Whydoesn’tever-greater
A、Sheagreed.B、Shedisagreed.C、Shewasimpatient.D、Shewasworried.BM:Isupposeonereasonsomanytouristscomehereisbe
最新回复
(
0
)