白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日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?