You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言最小纸币张数计算程序大数值运行异常的原因及解决方案

错误原因
  • 核心问题是int类型的存储范围不足:32位有符号int的最大可存储值为2^31-1(即2147483647),你输入的超大数值1234554875687远超过这个上限,调用scanf("%d", &money)时会发生整数溢出,存入money的是被截断后的错误值,后续计算自然输出错误结果。
解决方案
    1. 将存储金额的变量money替换为取值范围更大的64位整数类型long long,其余计数变量除100元面额计数外,其余最大值不会超过50,可保留int类型,也可同步替换为long long。
    1. 将scanf的输入格式符从%d替换为%lld匹配long long类型,对应100元面额计数的printf输出格式符也同步修改为%lld。
修改后可运行代码
#include<stdio.h>
int main (void)
{   long long money, _100;
    int r100, _50, r50, _10, r10, _5, r5, _2, r2, _1;
    
    printf("Enter the amount of money you wanna have but will never get : ");
    scanf("%lld", &money);
 
    _100 = money/100;       
    r100 = money % 100;     
    _50 = r100/50;          
    r50 = r100 % 50;        
    _10 = r50/10;            
    r10 = r50 % 10;          
    _5 = r10/5;             
    r5 = r10 % 5;           
    _2 = r5/2;              
    r2 = r5 % 2;            
    _1 = r2/1;              

    printf("No of notes required of 100 are %lld\n", _100);
    printf("No of notes required of 50 are %d\n", _50);
    printf("No of notes required of 10 are %d\n", _10);
    printf("No of notes required of 5 are %d\n", _5);
    printf("No of notes required of 2 are %d\n", _2);
    printf("No of notes required of 1 are %d\n", _1);

    return 0;
}

内容的提问来源于stack exchange,提问作者Mudit Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:09:00