实在不知道什么问题,但是我按照我的想法做了一下
输出以字母p结束
我作出来的能输入和显示
但是前提是不能调用你的函数(^_^得不偿失哈)
可能你的函数也有点问题
void main(){
char str[10] ;
char st ; int zishu;
int i=0,j=1;
WORD string[N];
cout<<"请输入文字:";
cin>>str[0];
while(!(str[i]=='p'))
{
cin>>str[j];
i++;
j++;
}
int m=0;
while(!(str[m]=='p'))
{
cout<
}
//zishu=COUNT(str,string);
//cout<
for(zishu=0;str[0]!='\0';zishu++){
string[zishu].character =str[0];
for(i=0;str[0]!='\0';)
if(string[zishu].character == str[i]){
string[zishu].amount++;
for(j=i;str[0]!='\0';j++)
str[j]=str[j+1];
}
这里,不知道你for循环终止语句写 str[0] != '\0',是啥意思
按道理应该是 str[i] != '\0',才对
程序越界破坏了栈导致程序崩溃了
估计在for(zishu=0;str[0]!='\0';zishu++){
这个循环里,你仔细找找吧
有无数个错误
#include
#include
#include
#include
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define N 100
typedef int STATUS;
typedef int ELEMTYPE;
typedef struct
{
char character;
int amount;
}WORD;
int COUNT(char * str,WORD * string)
{
int i = 0, j = 0, k = 0, zishu=0;
for(zishu = 0; str[zishu]!='\0'; zishu++)
{
string[zishu].character = str[zishu];
string[zishu].amount = 1;
for(i = zishu + 1; str[i]!='\0';)
{
if(string[zishu].character == str[i])
{
string[zishu].amount++;
for(j = i; str[j]!='\0';j++)
{
str[j]=str[j+1];
}
}
else
{
i++;
}
}
}
string[zishu].character ='\0';
for(i=0;i
cout<< string[i].amount<
return zishu;
}
void main()
{
char str[10] ;
char st ; int zishu;
int i=0;
WORD string[N];
cout<<"请输入文字:";
while((st=getchar())!='\n')
{
str[i]=st;
i++;
}
str[i]='\0';
zishu=COUNT(str,string);
cout<
}
for(zishu=0;str[0]!='\0';zishu++)
这是一个死循环
str[i] != '\0' 就对了
低级马虎错误 呵呵~