C++编程题,统计此字串s 中对字符变量a 出现的次数,求教大神看看我编的错误怎么改

2025-01-04 06:35:06
推荐回答(5个)
回答1:

getline使用错误
使用方法网上给你找的
还有你直接用一行字符串和单个字符比较得不出正确结果的 用下标[]从里面将字符一个个取出进行判断
cin.getline() // 接受一个字符串,可以接收空格并输出
#include
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<}
输入:jkljkljkl
输出:jklj
接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl
输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf
//延伸:
//cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
//当第三个参数省略时,系统默认为'\0'
//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

回答2:

错的太离谱了,无法改,重写一段吧(略去头文件定义):
int find(char s[], char a) {
int n,m;
for(n=0,m=0;nreturn m;
}
void main() {
char str[100],a;
scanf("%s %c",str,&a);
printf("字符串%s中字符%c出现%d次\n",str,a,find(str,a));
}

回答3:

你能加多少分啊??

/* 这是用你的用string的做法
 * 需要把int find(int string1,char a,int n);
 * 改为int find(string string1,char a,int n);
 * 因为他接受字符串,不是一个int,string1应该是string类型
 */
#include 
#include 
using namespace std;
int find(string string1,char a,int n);
int main(){
   char a;
    cin>>a;
    string string1;
    getline(cin, string1, '\n');
    int x,n;
    n=string1.size();
    x=find(string1,a,n);
    cout<    return 0;
}
int find(string string1,char a,int n){
    int i=0,b=0;
    while (i        if(string1[i]==a){
            b++;
        }
        i++;
    }
    return b;
}

/*************************************************
 * 问题:关于int find(char s[],char a);
 * 但是我不知道这个char s[],char a到底有什么用?
 * 回答:不推荐这样,不推荐这样
 *  这是典型的C语法
 * (虽然C语法传递的是指针减少了拷贝字符串的消耗,C++可以用引用来解决)
 *  C没有string类型,字符串只好用字符数组char s[]表示,字符'\0'代表结束
 * 这里的char s[],char a分别和你写的string string1,char a是一个意思啊
 * 只是没有传递长度而已,不传递长度也行啊,看最后的版本
 **************************************************
 * 问题:在定义find 函数时
 * 能否将参数直接定义成find(char s[], char a)
 * 这里的s[]没有具体的长度,会不会错,为什么?
 * 回答:能,在这里数组名字会退化成指针
 * 使用char s[]和char *s是一样的
 **************************************************/
#include 
#include 
using namespace std;
int find(const string &string1,char a);
int main(){
   char a;
    cin>>a;
    string string1;
    getline(cin, string1, '\n');
    int x;
    x=find(string1,a);
    cout<    return 0;
}
int find(const string &string1,char a){
    int i=0,b=0;
    while (i        if(string1[i]==a){
            b++;
        }
        i++;
    }
    return b;
}

回答4:

int find(int string1,char a,int n);这个声明应该放在main函数的外面。你 改一下试试,不行,再把错误贴出来

回答5:

函数原形别自己乱声明,要按题目要求声明!