C语言使用for循环实现a到b连续序列相减功能的问题求解
原代码问题梳理
- 控制流错误:打印末尾数值、输出结果、程序返回语句均放在for循环内部,第一次循环执行就会直接终止程序,无法完成多轮遍历
- 计算逻辑错误:连续相减的初始值应为起始数
a,再依次减去后续数值,原代码sum初始为0直接逐个减所有数,计算结果不符合需求 - 输出逻辑错误:循环内部重复打印结果和末尾值,无法输出符合要求的连续减号表达式
正确实现代码
#include <stdio.h> int main() { int a, b, i, sum; printf("\a"); printf("\n\t\t🔸 What is the number you want to begin" " subtraction with ? "); scanf("%d", &a); printf("\n\t\t🔸 What is the number you want to end" " subtraction with ? "); scanf("%d", &b); printf("\a"); printf("\n\t\t🔸 The result of the subtraction of numbers from %d to %d :\n", a, b); printf("\t\t "); // 初始化sum为起始值a sum = a; printf("%d", a); // 从a的下一个数遍历到b,依次减并输出 for (i = a - 1; i >= b; i--) { printf(" - %d", i); sum -= i; } // 循环结束后输出结果 printf(" = %d\n\n", sum); return 0; }
效果验证
输入a=8、b=5时,程序会输出8 - 7 - 6 - 5 = -10,完全符合预期要求。
内容的提问来源于stack exchange,提问作者Amr Shawkat
相关产品推荐
相关产品推荐

