白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条回答 默认 最新

  • 惜日短 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵