白0619 2022-06-06 15:01 采纳率: 83.3%
浏览 76
已结题

数组查找元素为什么代码运行对的,答案错

输入10个数存入数组a中,再输入一个数x,查找所有与x相同的数组元素(有可能存在多个与x相同的值),输出所有与x相同元素的下标值同时输出与x相同元素的个数,若没找到,则输出No。

输入格式:
输入数据有两行,第一行输入10个整数,以空格间隔,第二行要查找的数x

输出格式:
若找到,输出数据有两行,第一行输出下标值(每个输出的下标值后有一个空格),第二行输出相同元素的个数,若找不到输出No。

输入样例:
-1 5 5 -2 4 -3 0 9 20 10
5
输出样例:
1 2
2
(注意,第一行最后一个数后有一个空格)
(注意,第二行的数后没有空格)
#include<stdio.h>
int main(){
int n,i,j,x,t=0;
int a[10];
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
scanf("%d",&x);
int flag=0;
for(i=0;i<10;i++){
if(a[i]==x)
{
flag=1;
break;
}
for(i=0;i<10;i++)
if(a[i]==x)
{
printf("%d ",i);
t++;
}
;
if(t==0)
printf("No");
else printf("\n%d",t);
return 0;
}
}
(格式有点奇怪是因为用上一题的代码改的。)
在c语言编译器上运行是对的,(试过题目中的数据和自己随便编的执行no的数据,但是运行结果是对的)但是在pta上却显示部分正确,为什么呢?

  • 写回答

3条回答 默认 最新

  • HWsir 2022-06-06 15:40
    关注

    输入的for循环不应该和输出的for循环嵌套,flag没用

    #include<stdio.h>
    int main()
    {
        int i,x,t=0;
        int a[10];
        for(i=0; i<10; i++)
        {
            scanf("%d",&a[i]);
        }
        scanf("%d",&x);
    //    int flag=0;
    //    for(i=0; i<10; i++)
    //    {
    //        if(a[i]==x)
    //        {
    //            flag=1;
    //            break;
    //        }
    //    }
        for(i=0; i<10; i++)
            if(a[i]==x)
            {
                printf("%d ",i);
                t++;
            }
        if(t==0)
            printf("No");
        else
            printf("\n%d",t);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 修改了问题 6月6日
  • 创建了问题 6月6日

悬赏问题

  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包