c++问题【入门】统计数字出现次数 不知道哪里错了 求助大佬 ?

问题:

题目描述

输入N个数,计算数字M的出现次数,并输出M的第一次出现的位置 。

输入

总共N+2行数据。第一行为数字N(N<=100000)。接下来N行,每行一个整数。最后一行为数字M。 

在上述的N的数据中查找M第一次出现的位置及总共出现的次数。

输出

输出M首次出现的位置和次数。未找到的位置输出0,次数输出0。

样例输入

5 
52 
18 
18 
654 
18 
18 

样例输出

2 3 

代码:

#include <bits/stdc++.h>
using namespace std;
int n,c1=0,a[1000],i;
string s,c;
int main() {
	cin>>n;
	for(int i=1; i<=n+1; i++) {
		getline(cin,s);
	}
	getline(cin,c);
	int p = s.find_first_of(c);
	if(p==-1){
		cout<<0<<endl;
	}else if(p!=-1){
			cout <<p+1 << " ";	
	}
    for(int i = 0; i < s.size(); i++) {
		a[i]=atoi(s.c_str());
		c1++;
	}
	cout<<c1;

	
}

不知道哪里错了,求助,谢谢

你运行测试结果是什么。

a[i]=atoi(s.c_str());
		c1++;
改为
if(a[i] == a[p]){
    c1++;
}

 

问题比较多啊,修改如下

#include <string>
# include<iostream>
using namespace std;
int main() 
{
	int n,i,m,count=0,fp=-1;
	cin>>n;
	int *p = new int[n];
	for(i=0; i<n; i++) 
	{
		cin>>p[i];
	}
	cin>>m;
	for(i=0; i<n; i++) 
	{
		if(p[i] == m)
		{
			count++;
			if(fp < 0)
				fp = i;
		}
	}
	if(fp < 0)
		cout<<m<<"出现0次,首位置为0"<<endl;
	else
		cout<<m<<"出现"<<count<<"次,首位置为"<<fp<<endl;
}

 

s:18 c:18 p:0

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

好了采纳一下,谢谢
c++
#include
#include
using namespace std;
long n,m,s[100002],f=0,x,i;
int main()
{
cin>>n;
for (i=1;i<=n;i++) cin>>s[i];
cin>>m;
for (i=1;i<=n;i++)
{
if (s[i]==m) x+=1;
}
i=1;
while (s[i]!=m && i<=n) i++;
f=i;
if (x==0) f=0;
cout<<f<<" "<<x;
return 0;
}

c
#include<stdio.h>
#define N 100000
int main()
{
int n,i,m,t,k;
int a[N];
while(scanf("%d",&n)!=EOF)
{
t=0;
k=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(i=0;i<n;i++)
{
if(a[i]==m)
{
t=i+1;
break;
}

    }
    for(i=0;i<n;i++)
    {
        if(a[i]==m)    
            k++;

    }

    printf("%d %d\n",t,k);
}

return 0;
}
Pascal
program p2494;
var
n,m,sum,t,i:longint;
a: array[1..1000005] of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
t:=0;
sum:=0;
readln(m);
for i:=1 to n do
begin
if(m=a[i]) and (t=0) then
begin
inc(sum);
t:=i;
end
else if m=a[i] then
inc(sum);
end;
writeln(t,' ',sum);
end.