首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。 例如,字符串中的内容为“******A*BC*DEF*C**
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。 例如,字符串中的内容为“******A*BC*DEF*C**
admin
2015-11-25
24
问题
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。
例如,字符串中的内容为“******A*BC*DEF*C****”,若n的值为4,删除后,字符串中的内容应当是“****A*BC*DEF*G****”;若n的值为8,则字符串中的内容仍为“******A*BC*DEF*G****”。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
void fun(char*a,int n)
{
}
voidMain()
{
char s[81];int n,
printf(“Enter a string:\n”);
gets(s);
printf(“Enter n:”);
scanf(“%d”,&n);
fun(s,n);
printf(“The string after deleted:\n”);
puts(s);
}
选项
答案
void fun(char*a,int n) { int i=0,k=0; char*p,*t; p=t=a, /*开始时,p与t同时指向数组的首地址*/ while(*t==‘*’) /*用k来统计前部星号的个数*/ {k++;t++;} if(k>n) /*如果k大于n,则使p的前部保留n个星号,其后的字符依次存入数组a中*/ {while(*p) {a[i]=*(p+k—n); i++; p++; } a[i]=‘\0’, /*在字符串最后加上结束标识*/ } }
解析
字符串中前导*号不能多于n个,多余的应删除。首先需要通过while循环统计字符串前导*号的个数,然后通过if条件语句完成前导*号的个数和n的比较.如果前导*号多于n个.需要把n个*号和其余字符重新保留。
转载请注明原文地址:https://kaotiyun.com/show/EXDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】,要求形参名为b。main(){doubles[10][22];intn;…fun(s);
以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotate(i
有以下程序:voidsum(inta[]){a[0]=a[-1)+a[1];}main(){inta[10]=(1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d
有以下程序:main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1)>x[j]
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为
有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%f\n\n",s);请填空,使下面程序段的功能与之完全相同s=1.0;k=1;w
若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。
用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序
用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序
随机试题
根据埃里克森的人格发展阶段论,联系教育实际,谈谈在整个基础教育阶段教师应如何培养学生健全的人格?
时任某市副市长的秦某不采纳权威咨询公司的意见,也不向市委市政府汇报,擅自决定引进美国某公司的液晶显示器生产线。其间,秦某先后3次到美国考察,敷衍了事、游山玩水。在发现美国公司没有按承诺邀请考察对象的情况下,秦某没有提出异议,致使考察团没有看到关键设备,只看
A.左心室B.右心室C.左心房D.右心房E.肺动脉肺循环的起始部位是
具有结合CO2功能的辅酶或辅基是
主动脉瓣狭窄的典型三联征是
依照唐宋时期法律的规定,殴打或谋杀祖父母、父母的行为构成“十恶”犯罪的哪一项?
2011年6月7日,在全国高考第一场考试前,因郑某欠学校800元书费,学校带队老师刘某拒绝将准考证发给郑某。随后,郑某请人将1000元交给校长,才拿到准考证。但此时已超过进入考场的最后时间,郑某错过了第一场考试。其语文成绩被记为0分。2011年7月12日,
行政许可可分为一般许可和特别许可,下列事项中属于特别许可的是()。
一位学生在距离热气球100米处观看它起飞。在热气球起飞后,学生注意到热气球顶部从他的仰角30°上升到45°,再从45°上升到60°的位置分别用了11秒和17秒。则前后两段时间热气球平均上升速度的比值约为:
WhichofthefollowingstatementsisINCORRECT?
最新回复
(
0
)