C语言定义一个函数,找出一维数组中的某个数的个数后返回。初学者,暂时未学到指针。请大家帮帮忙/

如题所述

#include <stdio.h>

int find(int *a,int n,int f)

{

    int sum=0;

    for(int i=0;i<n;i++)

    {

            if(a[i]==f)

            sum++;

    }

    if(sum==0) return -1;

    else  return sum;

}

int main()

{

     int a[1000];

     int n;int f;

     printf("请输入字符组的大小:\n");

     scanf("%d",&n);

     printf("请输入%d个数字:\n",n);

     for(int i=0;i<n;i++)

     {

             scanf("%d",&a[i]);

     }

     printf("请输入要查找的数字:\n");

     scanf("%d",&f);

     printf("%d出现的次数是:%d\n",f,find(a,n,f));

     //scanf("%d",&f);

}

不懂可以追问。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-13
#include<stdio.h>

//寻找输入的数字在第几个位置上
int find(int a[],int n,int len)
{
int i =0;
for (i=0;i<10;i++)
{
if (a[i]==n)
{
return i;
}
}
return -1;
}


int main(void)
{
int f=0,num=0,a[10] = {3,2,1,6,7,8,9,4,5,0};
scanf("%d",&num);
f=find(a,num,10);
if (f!=-1)
{
printf("%d at pos [%d]\n",num,f+1);
}
return 0;
}
9
9 at pos [7]
Press any key to continue

第2个回答  2014-12-23
int num(int * a,int n)//n是数组成员个数
{
int i,k,j=0;
scanf ("%d",&k);//需要查找的数
for (i=0;i<n;i++) if (a[n]==k) j++;
return j;
}追问

这个是我编的,希望有更简单的方法,我们没有学指针。

追答

你这程序有错吧?不过总体思路没错,已经是最简单的了。至少一个循环

追问

没错,可以运行。

追答

既然你是学C的就应该按照C的语法写程序,否则不论考试还是以后作为程序员都是一种不好的习惯。C语言数组大小必须是常量。a[n]中的n必须是常量,C++允许不是,但是不应该这样写C。其次,不能在调用函数后再创建新的变量,scanf后面不应该再定义变量。或许上面几个问题用C++的编译器都不会有问题。但是,再函数count中,sum没有初始化,sum+=1会是多少?没人会知道,就算没有语法错误,答案也是乱码。最后。return后面再接任何语句是没有意义的,程序已经返回了,putchar是多余的。

相似回答