关于#C语言#的问题,如何解决?

img


以下是我编写的解决这个问题的C语言代码


#include <stdio.h> 
int main(){
    int n,b[110],i,j,e,f=0;
    float g,h;
    scanf("%d",&n);
    for (i=0;i<n;i++){
        scanf("%d",&b[i]);
    }
    j=b[0];
    for (i=1;i<n;i++){
        if (j<b[i]){
            j=b[i];
            e=i;
        }
    }
    g=(float) j*0.9;
    for (i=0;i<n;i++){
        if (i==e){
            continue;
        }
        else{
            f+=b[i];
        }
    }
    h=((float) f+g)*0.9;
    printf("%.1f",h);
    return 0;
}

我自己测试感觉没什么问题,但在平台上始终无法通过显示解答错误
麻烦大家帮忙看一下问题出在哪🧐

题主的代码修改如下,改动处见注释,供参考:

#include <stdio.h> 
int main() {
    int n, i, e, b[110], j;// f = 0;  修改
    float g, h, f = 0;     // 修改
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &b[i]);  
    }
    j = b[0]; e = 0;// 修改
    for (i = 1; i < n; i++) {
        if (j < b[i]) {
            j = b[i];
            e = i;
        }
    }
    //g = (float)j * 0.9;  // 修改
    for (i = 0; i < n; i++) {
        if (i == e) {      
            f += b[i] * 0.9;  //continue; // 修改  
        }
        else {
            f += b[i];
        }
    }
    f *= 0.9;  //h = ((float)f + g) * 0.9;   修改
    printf("%.1f", f);  //printf("%.1f", h); 修改
    return 0;
}

报错提示是什么》??

代码:

#include<bits/stdc++.h> 
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    float a[10005],ans=0;
    for(int i=1;i<=n;i++) scanf("%f",&a[i]); 
    sort(a+1,a+n+1);
    a[n]=a[n]*0.9;
    for(int i=1;i<=n;i++) ans+=a[i];
    ans*=0.9;
    printf("%.1f\n",ans);
}

img


代码没问题呀

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7746711
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言中利用自定义函数来交换俩个变量的值 与 直接在主函数创建一个中间变量 这俩种方法的区别。形参与实参的联系
  • 除此之外, 这篇博客: 关于C语言中逆序输出以及判断回文数题目的解法笔记中的 一、如何计算用户输入的数是几位数? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   在做逆序输出以及判断回文数题目之前,先做下这道题,如何计算用户输入的数是几位数呢?

      思路:假设用户输入的数据是四位数1234
      我们知道,1234%10=4,我们就取到了用户输入数值中末位数字4这个数字,这时候我们就知道用户输入的数至少是个位数了(废话)。
      我们还知道,1234/10=123,我们可以利用他把用户输入的数值更新,更新之后,猜到没,我们再继续走步骤一,如果走得动,我们又知道用户输入的数值至少是两位数了。
      就这样再更新成12,取得末位数字2,我们就知道用户输入数值至少为三位数了,再更新成1,取得末位数字1,我们就知道用户输入的数值至少为四位数了这时候1/10=0,完犊子,更新不了了,停止,我们就知道用户输入的数值,最终是四位数
      具体代码如下:

    #include <stdio.h>
    
    int main(void)
    {
        int number = 0; //用来存放用户输入的数值
        int count = 0;//用来记录我们猜测的数值位数。
    
        printf("请输入一个数,我来判断你输入的是几位数:\n");
        scanf("%d", &number);
    
        while (number != 0)//当number/10等于0时
        {
            number = number / 10;//更新number
            count++;//先更新在记录,先记录在更新的话记录的是前一次数值的位数。
        }
    
        printf("您所输入的数是%d位数", count);
    
        return 0;
    }
    
    请输入一个数,我来判断你输入的是几位数:
    56654523
    您所输入的数是8位数
    

  • 您还可以看一下 CSDN讲师老师的C语言精髓之编译过程视频教程课程中的 计算机的组成部分,栈内存的特点;画出内存图,引入指针的概念小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,根据问题描述的内容,我们无法得知错误在哪里和需要解决的具体问题是什么,需要你提供更多的信息才能帮助你解决问题。

    同时,根据参考资料提供的代码段落,我们可以看到其中包含了三个问题的代码示例和讲解,分别是:

    1. 使用结构体的两种访问方式:结构体变量 . 结构体成员 和 结构体指针 -> 结构体成员。
    2. 找出一位获胜选手的所有答题情况,使得最终得分为100分。
    3. 简单的桶排序示例。

    如果你的问题和以上任何一个问题有关,可以给出更具体的描述和你自己的代码示例。这样我们就可以更好地帮助你分析问题所在,提供解决方案。