首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。 注意:部分源程序在文件PROGl.C中。 请勿改
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。 注意:部分源程序在文件PROGl.C中。 请勿改
admin
2013-04-02
30
问题
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
int fun(char *str,char *substr)
{
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
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 < 5) {
fgets(str, 80, rf);
fgets(substr, 10, rf);
len = strlen(substr) - 1 ;
ch = substr[len] ;
if(ch == ’\n’ || ch == 0x1a) substr[len] = 0 ;
n=fun(str,substr);
fprintf(wf, "%d\n", n);
i++ ;
}
fclose(rf);
fclose(wf);
}
main()
{
char str[81],substr[3];
int n;
printf("输入主字符串: ");
gets(str);
printf("输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
NONO();
}
选项
答案
{ int cnt=0; char *p=str, *q; while(*p){ q=strstr(p, substr); if(q==NULL) break; p=q+strlen(substr); cnt++; } return cnt; }
解析
(1)在fun函数中,str接受主函数中的字符数组的首地址,另一个字符形参指针指向子串字符数组substr的首地址。
(2)利用strstr函数找到substr出现的位置,设置两个指针变量p和q分别记录起始地址和substr出现的地址。
(3)每次循环开始,使指针p指向str字符串首地址,使q指向子串substr出现的地址,p的位置不断往后移,直到字符串尾,每次找到substr对应统计加1。
转载请注明原文地址:https://jikaoti.com/ti/enn0FFFM
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
已知ch是字符型变量,则下面正确的赋值语句是
已有定义double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元【 】。
有以下程序: float f1(float n) { return n*n; } float f2(float n) { return 2*n; } main() {float(*p1)(float),(*p
有以下程序: main() {int a[]={2,4,6,8,10},y=0,x,*p; p=&a(1); for(x=1;x<3;x++) y+=p[x]; printf("%d\n",y); } 程序运行
若有定义int x=0,*p=&x;,则语句printf("%d\n",*p);的输出结果是 ______。
以下叙述中错误的是 ______。
有以下程序 fun(char p[][10]) {int n=0,i; for(i=O;i<7;i++) if(p[i][O]=T)n++; return n; } main
有以下程序 main() {int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3; printf("%d,%d,%d,%d\
对如下二叉树进行后序遍历的结果为______。
设已定义i和k为int类型变量,则以下for循环语句______。for(i=0;k=-1,k=1;i++,k++)printf("****\n");
随机试题
初级阶段的社会主义是资本主义而非社会主义。
最常见的食物中毒是
A、祛风经络,利水B、祛风湿,强筋骨,利水消肿C、祛风湿,杀虫解毒D、祛风湿,消痰水E、祛风通络,凉血消肿桑枝的功效是
某医疗机构通过招标采购,采购一批进口疫苗。该医疗机构发现其使用的某进口疫苗,导致多名儿童接种后出现发热、呕吐而住院,应当立即通过电话或者传真等方式报所在地的()
电气设备与操作过电压绝缘配合时,电气设备外绝缘的耐压取值方法错误的是?
背景材料:某公路工程施工单位承包了一座5×30m后张法预应力混凝土T梁桥,施工单位虽然按照设计文件和相关施工技术规范的要求进行施工,并作了主要检验内容。由于施工现场管理人员质量安全意识淡薄,T梁平移中出现死亡6人,伤2人,经济损失重大的事故。交通主管部门
列
有青山绿水的地方就有茶香,有茶香的地方就有中国文化。茶、可可、咖啡并称世界三大饮料,但茶才是_______的饮界领袖。茶虚静清雅,_______了佛儒道各家精华,充满了中国滋味和中国精神。填入画横线部分最恰当的一项是:
几千年前。在非洲湿热的原始森林里,土著居民围着火堆,跟随各种复杂节奏自由而热烈地边舞边唱。这种歌声,也许在某些“文明人”眼里算不上音乐。然而,这样的声音却是最原始的,是在恶劣环境里顽强的本能所发出的生命之音。如果说布鲁斯音乐是很多音乐的根源,那么,上面所说
A、Hissuggestionsandhelp.B、Thecruelrealityandunpleasantlife.C、Theresponsibilitytohelpothers.D、Theprotectionofot
最新回复
(
0
)