c语言:for循环,在数组中查找数据,如果有重复的数据怎么查找

如果输入60,怎么把数组里三个60都找到,输出三个序号

#include <stdio.h>

int main()
{
int i;
float score[30]={60,60,60,56,88,99},b;
printf("从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号\n");
printf("输入一个成绩:");
scanf("%f",&b);
for(i=0;i<30;i++)
{
if( score[i] != b )
{
continue ;
}
else if(i=29)
{
printf("该成绩不在数组中\n");
break ;
}
else if ( b == score[i] )
{
printf("%d\t",i);
}
}
return 0 ;
}

供参考:

#include <stdio.h>
int main()
{
   int i,flg=0; //修改
   float score[30]={60,60,60,56,88,99},b;
   printf("从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号\n");
   printf("输入一个成绩:");
   scanf("%f",&b);
   for(i=0;i<30;i++)
   {
       //if( score[i] != b )  //修改
       //{
       //    continue ;
       //}
       //else if(i=29)
       //{
       //    printf("该成绩不在数组中\n");
       //    break ;
       //}
       //else
       if ( b == score[i] )
       {
           flg++;           //修改
           printf("%d\t",i);
       }
   }
   if(!flg)                 //修改
       printf("该成绩不在数组中\n");
   return 0 ;
}

这样吗,望采纳,谢谢,代码:

#include <stdio.h>

int main()
{
    int i;
    float score[30] = { 60,60,60,56,88,99 }, b;
    printf("从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号\n");
    printf("输入一个成绩:");
    scanf("%f", &b);
    bool flag = true;
    for (i = 0; i < 30; i++)
    {
        if (score[i] == b)
        {
            flag = false;
            printf("%d\t", i);
        }
    }
    if (flag)
    {
        printf("该成绩不在数组中\n");
    }
    return 0;
}

效果:

img

img

1.直接枚举查找,用一个数组记录出现位置
2.使用二分查找,建议参考这个网址的: