问题:
题目描述
输入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.