改错题
1. 下列给定程序中,函数proc()的功能是:统计字符串sub在字符串str中出现的次数。
例如,若字符串为best wishesto you,子字符串为st,则应输出2。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
proc(char*str,char*sub)
{
int i,j,k,num=0;
//****found****
for(i=0,str[i],i++)
for(j=i,k=0; sub[k]==str[j]; k++,j++)
if(sub[k+1]=='\0')
{ num++;
break;
}
return num;
}
void main()
{
char str[80],sub[80];
printf("Input a string:");
gets(str);
printf("Input a sbustring:");
gets(sub);
printf("%d\n",proc(str,sub));
}
【正确答案】错误:for(i=0,str[i],i++)
正确:for(i=0; str[i]; i++)
【答案解析】 根据C语言的语法规则,for循环的条件语句之间是用分号间隔的,而不是用逗号。因此,“for(i=0,str[i],i++)”应改为“for(i=0; str[i]; i++)”。