C语言实现两数交换输出异常为0.00,应如何修改代码?
C语言数字交换代码修复说明
需要修改的位置如下:
- 修正
scanf的格式控制符scanf不支持在格式符中添加.1这类精度限制,原代码的scanf("%.1lf %.1lf",&Num1,&Num2);会出现输入匹配失败,导致两个数字变量未被正确赋值,最终输出0.00,需修改为scanf("%lf %lf",&Num1,&Num2);。 - 新增原始输入值的打印逻辑
你期望输出的第一行是原始输入的两个数字,现有代码没有对应打印语句,需在交换逻辑前添加printf("%.0lf %.0lf\n", Num1, Num2);,匹配你示例的原始输入输出效果。 - 调整交换后的打印格式
原代码的printf("%.2lf\n%.2lf",Num1,Num2);会将两个输出值拆分为两行,不符合你期望的同行输出效果,需将格式符中的\n替换为空格,修改为printf("%.2lf %.2lf", Num1, Num2);。
修改后的完整代码如下:
#include<stdio.h> int main(){ double Num1,Num2,temp; scanf("%lf %lf",&Num1,&Num2); // 打印原始输入值 printf("%.0lf %.0lf\n", Num1, Num2); temp=Num1; Num1=Num2; Num2=temp; // 打印交换后的值 printf("%.2lf %.2lf",Num1,Num2); return 0; }
输入1 2时,输出结果为:
1 2 2.00 1.00
完全符合预期。
内容的提问来源于stack exchange,提问作者Vaibhav Katre
相关产品推荐
相关产品推荐

