#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);
}
在做逆序输出以及判断回文数题目之前,先做下这道题,如何计算用户输入的数是几位数呢?
思路:假设用户输入的数据是四位数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位数
首先,根据问题描述的内容,我们无法得知错误在哪里和需要解决的具体问题是什么,需要你提供更多的信息才能帮助你解决问题。
同时,根据参考资料提供的代码段落,我们可以看到其中包含了三个问题的代码示例和讲解,分别是:
如果你的问题和以上任何一个问题有关,可以给出更具体的描述和你自己的代码示例。这样我们就可以更好地帮助你分析问题所在,提供解决方案。