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 )是什么意思啊? 展开
#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 )是什么意思啊? 展开
展开全部
输入一个字符串(字符数组),之后输入一个字符,输出这个字符在之前输入的字符串中出现的位置。如果没有出现过,则输出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语句。
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语句。
展开全部
本程序用来从键盘输入一个字符串(长度<=20),然后接收一个字符,经子程序fun之后,输出该字符在此字符串中的个数,然后依次输出其在字符串的位置
参考资料: 潭浩强 c语言程序设计
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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')
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')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询