如何修正C语言代码实现正数加1、非正数数值不变的功能?
修正后的C语言代码及问题说明
原代码存在的问题:
main函数返回类型不符合C标准,必须为int而非long double- 变量初始化错误:未定义的变量无法用来初始化自身(如
long double y = (long long int)y;),且未使用的变量z应删除 - 输入输出格式符不匹配:
%lld对应long long int类型,而long double类型需用%Lf - 三目运算符逻辑错误:未实现
y>0时加1的需求,当前逻辑等同于直接赋值y
修正后的代码(适配整数输入输出):
#include <stdio.h> int main() { long long int y; scanf("%lld", &y); // 当y>0时加1,否则保持原值 if (y > 0) { y += 1; } printf("%lld", y); return 0; }
代码说明:
- 修正
main函数返回类型为int,符合C语言标准 - 使用
long long int类型匹配示例中的整数输入输出场景,格式符%lld与之对应 - 用直观的
if语句实现需求,也可简化为三目运算符:y = (y > 0) ? y + 1 : y; - 测试结果:输入
4输出5,输入-3输出-3,完全符合需求
若需要处理浮点类型,可使用以下版本:
#include <stdio.h> int main() { long double y; scanf("%Lf", &y); y = (y > 0) ? y + 1 : y; printf("%Lf", y); return 0; }
内容的提问来源于stack exchange,提问作者Marik Marik
相关产品推荐
相关产品推荐

