首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
编写一个函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。 函数ReadWrite()
编写一个函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。 函数ReadWrite()
admin
2010-01-11
86
问题
编写一个函数findStr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。
函数ReadWrite()实现从文件in.dat中读取两个字符串并调用函数findStr(),最后把结果输出到文件out.dat中。
注意:部分程序已经给出。
请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int findStr(char *str,char *substr)
{
}
main()
{
char str[81],substr[3];
int n;
clrscr();
printf("输入原字符串");
gets(str) ;
printf("输入子字符串:");
gets(substr);
puts(str);
puts(substr);
n=findStr(str, substr);
printf("n=%d\n", n);
ReadWrite();
}
ReadWrite()
{
char str[81],substr[3],ch;
int n, len,i=0;
FILE *rf, *wf;
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
while(i<25)
{
fgets(str, 80, rf);
fgets(substr, 10, rf);
len=strlen(substr)-1;
ch=substr[len];
if(ch==’\n’ || ch==0xla)substr[len]=0;
n=findStr(str, substr);
fprintf(wf, "%dkn", n);
i++;
}
fclose(rf);
fclose(wf);
}
选项
答案
int findStr(char *str,char *substr) { int n; char *p , *r; n=0; while( *str ) { p=str; r=substr; while(*r) if(*r==*p) { r++; p++; } else break; if(*r==’\O’) n++; str++; } return n; }
解析
该程序属于按条件查找类型的题目,考核的知识点为:
(1)在给定的字符串中查找指定字符;
(2)统计查找后满足条件的个数。
本题的解题思路是:对原字符串中的字符进行扫描,若原字符串中含有子字符串,即原字符串的其中一部分与子字符串完全相同时,统计出个数。判断原字符串是否含有子字符串,可以将原字符串中的元素逐个与子字符串相比较,当两字符串中各个元素都相同且子字符串结束时,则证明原字符串包含一个子字符串。在统计个数的时候需要设置一个记录变量,每当原字符串包含子字符串一次的时候,该记录变量自动加1。
程序的流程是:首先通过键盘接收两个字符串,其中一个作为原字符串,另一个作为子字符串,然后调用findStr()函数对两字符串进行比较,处理后的结果由ReadWrite()函数写回文件out.dat中。
答案解析如下:
int findStr(char *str,char *substr)
{
int n; /*定义变量,n代表子符串出现次数*/
char p,r; /*定义指针变量*/
n=0;
while(str)
/*当原字符串不为空,即*str不为空时进入到外层while,此时循环中原字符串指针str和子字符串指针substr都指向其字符串内的第一个元素*/
{
p=str; /*将字符串的指针str赋给p*/
r=substr; /*将字符串的指针substr赋给r*/
while(*r) /*当子字符串也不为空时,即*r不空时进入内嵌的while循环*/
if(*r==*p) /*将原字符串与子字符串逐个元素进行比较看是否相等*/
{
r++;
p++;
}
/*将原字符串与子字符串分别后移一个字符*/
else
break; /*否则结束循环*/
if(*r==’\0’) /*结束while循环的情况有两种:(1)比较完毕,即原字符串中包含该子字符串,此时子字符串的指针指向串尾(为“\0”);(2)未比较完毕,此时子字符串的指针不指向串尾。if语句的功能是通过判断子字符串的指针是否指向串尾进而来判断内层while循环结束的原因*/
n++; /*出现的次数加1*/
str++; /*牟字符串指针也指向下一个字符*/
}
return n; /*返回出现的次数*/
}
转载请注明原文地址:https://kaotiyun.com/show/Xb5Z777K
本试题收录于:
三级信息管理技术题库NCRE全国计算机三级分类
0
三级信息管理技术
NCRE全国计算机三级
相关试题推荐
关于Unix操作系统的描述中,错误的是()。
下列各项中,哪些是通道类型?()
下列哪些术语是指某一种操作系统的类型?()
键盘的读写是以字符为单位的,通常键盘的I/O控制主要采用()。
死锁产生的原因之一是资源分配不当,另一个原因是()。
采用共享内存方式可以进行进程问的通信,该方式需要程序员解决的问题是()。
J.Martin指出,一个企业可能有几十个甚至几百个业务过程。在确定职能范围和业务过程中,什么因素对系统适应性是至关重要的?
以下不属于BSP研究内容的是()
CIMS的研究包含了信息系统的主要研究内容,因而也是计算机信息系统的一个主要研究和发展方向,它的目标是对设计、制造、管理实现______。
随机试题
有关国家公务员的考核、奖励、处分、职务升降、轮换、回避等一系列制度的总和被称为国家公务员
A蜂蜡B羊毛脂C软石蜡D石蜡E二甲基硅油为淡黄色黏稠微具特臭的半固体是羊毛上的脂肪性物质的混合物
A.溶液型药剂B.胶体溶液型药剂C.混悬液型药剂D.乳浊液型药剂E.混合分散体系硼酸甘油的分散体系属于
A、等长运动B、等张训练C、等速训练D、向心性训练E、离心性训练肌力大于阻力时产生的加速度运动和小于阻力时产生的减速度运动,运动时肌张力基本恒定,但肌肉本身发生缩短和伸长,从而引起明显的关节运动
2016年1月,居民甲购买一处房屋,房屋价值80万元。甲采取分期付款的方式,分四年支付,每年付款20万元(假设没有延期支付利息),甲在当年购买时支付了20万元。则2016年甲购买房屋应缴纳契税()万元。(契税适用税率3%)
根据《行政处罚法》的规定,行政拘留只能由()。
根据党的十八大报告,()是国家富强、民族振兴的重要标志。要坚持把社会效益放在首位、社会效益和经济效益相统一,推动文化事业全面繁荣、文化产业快速发展。
和谐文化融思想观念、理想信仰、社会风尚、行为规范、价值取向为一体,是对和谐社会的总体认识和评价,它对人们的行为起着潜移默化的作用,这说明()①事物的整体与部分不可分割②正确的意识对事物发展起积极作用③意识可以改造客观事物
层次模型的数据结构是______。
在考生文件夹下完成下列操作:(1)建立一个表单名和文件名均为myform的表单,如下图所示。表单的标题为“教师情况”,表单中有两个命令按钮(Command1和Command2),两个复选框(Checkl和Check2)和两个单选按钮(Option1和Op
最新回复
(
0
)