HIGUCHI_MDK 2022-10-11 12:13 采纳率: 100%
浏览 19
已结题

PTA c语言设置限制输入

PTA网站里的一道题目,描述如下,唯一的难点就是不确定个数的输入数据,想不出好的办法
下面贴的代码是不对的
有一个用字符串读入然后进行处理的想法和另外一个通过设置计时器限制输入时长来限制输出的想法
但是实践困难,求解

img

#include <stdio.h>

int jj(int k){
int s;
if (k>1000000) s=(k-1000000)/100+39500;
else if (k<=1000000&&k>600000) s=(k-600000)/100015+33500;
else if (k<=600000&&k>400000) s=(k-400000)/100
3+27500;
else if (k<=400000&&k>200000) s=(k-200000)/1005+17500;
else if (k<=200000&&k>100000) s=(k-100000)/1000
75+10000;
else s=k/10;
return(s);
}
int main(){
int n,m;
do {
scanf("%d",&n);
printf("%d",jj(n));
} while(getchar()=='\n');
return 0;
}

  • 写回答

2条回答 默认 最新

  • lzl2040 人工智能领域新星创作者 2022-10-11 12:22
    关注

    这段代码有问题,应该是先使用浮点数计算出s,然后再取整,这段代码的误差太大了

    if (k>1000000) s=(k-1000000)/100+39500;
    else if (k<=1000000&&k>600000) s=(k-600000)/100015+33500;
    else if (k<=600000&&k>400000) s=(k-400000)/1003+27500;
    else if (k<=400000&&k>200000) s=(k-200000)/1005+17500;
    else if (k<=200000&&k>100000) s=(k-100000)/100075+10000;
    else s=k/10;
    

    改为:

    double jj(int k){
    double s;
    if (k>1000000) s=(k-1000000)/100.0+39500;
    else if (k<=1000000&&k>600000) s=(k-600000)/100015.0+33500;
    else if (k<=600000&&k>400000) s=(k-400000)/1003.0+27500;
    else if (k<=400000&&k>200000) s=(k-200000)/1005.0+17500;
    else if (k<=200000&&k>100000) s=(k-100000)/100075.0+10000;
    else s=k/10.0;
    return(s);
    }
    

    输入数据就使用一个
    while(scanf("%d",&n) != EOF)应该就行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 10月11日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探