C语言中不解的题目,麻烦高手们帮帮忙。

#include<stdio.h>#include<conio.h>#defineN20intbb[N];intfun(char*str,charch){inti=0,n... #include <stdio.h>
#include <conio.h>
#define N 20
int bb[N];
int fun(char *str,char ch)
{ int i=0,n=0;
char t=ch;
char *p=str;
while ( *p )
{
if(*p==t)
bb[n++]=i;
p++;
i++;
}
return n;
}
main()
{ char str[N];
char ch;
int i,j,n;
clrscr() ;
printf("******* Input the original string*******\n ");
gets(str);
printf("******* The Original string *******\n");
puts(str);
printf("******* Input character *******\n");
scanf("%c",&ch);
n=fun(str,ch);
printf(" \nThe number of character is: %d\n",n);
printf("******* The suffix of character *******\n");
for(i=0;i<n;i++)
printf(" %d ",bb[i]);
}
谢谢!
再问一下,第九行的while ( *p )是什么意思啊?
展开
 我来答
WXD110114dccd8
2007-08-11 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.6万
采纳率:43%
帮助的人:7798万
展开全部
输入一个字符串(字符数组),之后输入一个字符,输出这个字符在之前输入的字符串中出现的位置。如果没有出现过,则输出0。

gets(str);
读入字符串,保存到字符数组str中。

puts(str);
输出字符数组str的内容。

scanf("%c",&ch);
读入要在str中查找的字符。

n=fun(str,ch);
fun函数进行查找,并将结果保存到bb数组中,函数返回值是字符ch在str中出现过的次数减1

for(i=0;i<n;i++)
printf(" %d ",bb[i]);
输出bb数组中的前n个元素,即字符ch在字符串str中出现过的位置。(从str中从0个元素开始)

************************************************************

p是指向str的指针,while ( *p )是指 只要p所指向的值非0,就执行下面的循环体语句,当p指向str结束标志\0时,*p的值为0,这将导致控制退出while语句。
pangjinbo_qdu
2007-08-11
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
本程序用来从键盘输入一个字符串(长度<=20),然后接收一个字符,经子程序fun之后,输出该字符在此字符串中的个数,然后依次输出其在字符串的位置

参考资料: 潭浩强 c语言程序设计

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
樊澄汗兴国
2019-09-24 · TA获得超过3759个赞
知道大有可为答主
回答量:3154
采纳率:34%
帮助的人:197万
展开全部
while(s[i+1+n]!=
0)
n++;
这句表示找到字符串s的结束之处,
for(j=i+n+1;
j>i;
j--)
s[j+1]=
s[j];
这句表示将数字字符之后的字符串部分向后移动一个字符的位置
明白了没有?
另外,程序中有个错误:if(s[i]>='0'
&
s[i]<='9')
应该改成if(s[i]>='0'
&&
s[i]<='9')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式