Lyyyyyyy153 2023-11-11 17:19 采纳率: 0%
浏览 9

大一新生,对C语言不熟悉,希望能解答

为什么b会输出0

#include<stdio.h>
int main()
{
    int a[9],b=0;
    int n;
    scanf("%d",&n);
    b=n;
    b--;
    while(b>=0)
    {
        scanf("%d",&a[b]);
        b--;
    }
    b++;
    int c=0,d;
   for(;b<n;b++)
    {
        d=0;
        for(c=0;c<n;c++)
        {
            if(a[b]>=a[c])
              d++;  
        }
        if(d==n)
            break;
    }
     printf("%d %d",a[b],b);
    
    }

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-11 20:56
    关注

    【以下回答由 GPT 生成】

    变量b的输出结果为0是由于代码中的逻辑错误导致的。

    在代码中,变量b首先被赋值为n,然后在循环中b递减,直到等于-1。在循环结束后,b被递增1。然后,变量b被用作数组a的下标,即a[b]。由于循环结束后b为0,因此a[0]被输出。

    但是,值得注意的是,在循环结束后,变量b增加1并被用作输出的一部分,这可能导致未定义的行为或错误结果。为了解决这个问题,可以在循环结束后,将b的值保存到另一个变量中使用,而不是直接使用b作为输出的一部分。这样可以避免可能出现的错误。

    以下是修改后的代码:

    #include<stdio.h>
    int main() {
        int a[9], b=0;
        int n;
        scanf("%d", &n);
        b=n;
        b--;
        while(b>=0) {
            scanf("%d", &a[b]);
            b--;
        }
        b++;
        int c=0, d;
        int output_b = b; // 保存b的值
        for(; b<n; b++) {
            d=0;
            for(c=0; c<n; c++) {
                if(a[b]>=a[c])
                  d++;  
            }
            if(d==n)
                break;
        }
        printf("%d %d", a[output_b], output_b); // 使用保存的b的值进行输出
    }
    

    这样,输出结果就会正确地显示变量b的值。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月11日

悬赏问题

  • ¥15 chemex:docker安装chemex过程中遇到问题
  • ¥15 关于遇到一个python,django,redis,uwsgi,nginx搭的一个企业微信修改AD密码的平台的问题!
  • ¥15 读取parquet文件某一列的数据但是输出是整个列名和格式
  • ¥15 机动目标 制导律建模问题
  • ¥100 求Java socks 转发实现Demo
  • ¥20 随身WiFi移动网络访问不了
  • ¥50 RAD_XE11.3获取android11手机的IMEI码
  • ¥15 linux的gcc命令报错
  • ¥20 如何再GIS用海岸线建立缓冲区
  • ¥15 codeblock遇到问题了,求帮助😭