首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如, 字符串中的内容为: ****A*BC*
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如, 字符串中的内容为: ****A*BC*
admin
2017-07-27
73
问题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它“*”号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。
例如, 字符串中的内容为:
****A*BC*DEF*G*******,删除后字符串中的内容应当是:****ABCDEFG。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 void fun(char*a)
3 {
4 /*以下代码仅供参考*/
5 int i=0,k;
6 while(a
==’*’)i++;
7 k=i;
8 while(a
!=’\0’)/*以下程序段实现非*字符前移*/
9 {
10 }
11 a[k]=’\0’;
12 }
13 main()
14 {char s[81];void NONO();
15 printf(’’Enter a string:\n’’);gets(s);
16 fun(s);
17 printf(’’The string after deleted:\n’’);puts(s);
18 NONO();
19 }
20 void NONO()
21 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
22 FILE *in,*out;
23 int i ; char s[81];
24 in=fopen(’’in.dat’’,’’r’’);
25 out=fopen(’’out.dat’’,’’w’’);
26 for(i=0;i<10;i++) {
27 fscanf(in,’’%s’’,s);
28 fun(s);
29 fprintf(out,’’%s\n’’,s);
30 }
31 fclose(in);
32 fclose(out);
33 }
选项
答案
2 void fun( char *a ) 3 { int i=0,k; 4 while(a[i]==’*’)i++; 5 k=i; 6 while(a[i]!=’\0’) 7 {if(a[i]!=’*’) a[k++]=a[i]; 8 i++; 9 } 10 a[k]=’\0’; 11 }
解析
本题主函数中需要输入一个字符串,然后进入fun函数处理字符串,在fun函数中,就要实现题目要求我们写出的功能了。首先是判断字符串的开始是否为“*”,这里就用到while函数(这里因为有步骤的区别,所以这里用while比用if好),判断开始的字符是否为“*”,见程序第5~6行,这里需要顺次进行,因为开始无论有多少个“*”都不用删除,当出现字母时,就开始下一步了,因为已经出现了字母,所以后面出现的“*”一律删除,而字母时不用管的,所以这里就又需要if条件语句来判断是否为“*”然后赋值为空,见程序第9~12行,当程序进行到字符为空时代表字符串结束,程序就终止,这里就要用到while条件语句进行终止判断,见程序第7行。这样循环进行就能保留字符串前面的“*”并且删除后面出现的所有“*”了,然后fun函数执行完成就可以转到主函数中进行新字符串的输出了。
转载请注明原文地址:https://kaotiyun.com/show/iKDp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
某二叉树中有n个度为2的节点,则该二叉树中的叶子节点为()。
下列关于C语言数据文件的叙述中正确的是()。
有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4:printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
若有定义intx,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。
若有说明intm[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中0<=i<3,0<=j<4)值的正确引用为()。
设有如下定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。
C语言源程序名的后缀是()。
先有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:#include<stdio.h>#include"myfun.C"main(){fun();printf("\n");}
运行下面的程序,输入字符串MicrosoftVisualStudio,则程序的执行结果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);p
若要使指针p指向一个double类型的动态存储单元,请填空。p=__________malloe(sizeof(double));
随机试题
判别的敛散性,若收敛,是绝对收敛或条件收敛.
男性,30岁,反复泌尿系感染3个月,尿频、尿急、尿痛,伴终末血尿1天,为进一步诊断可采取下列哪些检查
毒性剧烈、治疗剂量与中毒剂量相近,使用不当会致人中毒或死亡的药品是
四环素首选用于( )。
中国北京贝尔饰品公司与奥地利施诺有限公司签订买卖一批蓝水晶耳饰的合同,合同约定以跟单托收方式结算。奥地利施诺公司交运货物后,开立了以中国北京贝尔公司为付款人的远期汇票,并随付单据,交由奥地利银行萨尔茨堡分行通过中国银行北京分行向中国北京贝尔饰品公司收款。当
事故应急救援系统的应急响应程序按过程可分为接警、()和应急结束等几个过程。
某建筑物的主体工程采用等节奏流水施工,共分六个独立的工艺过程,每一过程划分为四部分依次施工,计划各部分持续时间各为108天,实际施工时第二个工艺工程在第一部分缩短了10天,第三个工艺过程在第二部分延误了10天,实际总工期为()天。
清初,戏剧家李渔病重。他不同意找开处方个个能医好病的先生看病,而专找开处方治死过人的先生来看病。这使妻母不解。事后,李渔说:“个个能医好病的先生,肯定见危重病人就推,不会有救治危重病人的本事;而治死过人的先生,不拒重死症,虽然死过人,可也有了经验。”这个故
七一五分共
我国社会主义初级阶段是指()
最新回复
(
0
)