C语言循环打印数字程序修正与优化

本文将分析一段C语言代码中存在的逻辑问题,并提供修正后的代码和优化建议。

问题描述

以下代码段旨在接受用户输入的整数,并打印从该整数开始到大于它10的整数序列,每个整数之间使用逗号分隔。程序在接收到非整数输入时应退出。

#include<stdio.h>
int main()
{
	int result;
	while (1)
	{
		int i;
		printf('The input value is: ');
		result = scanf_s('%d', &result);
		if (result == 0)
		{
			printf('The program is end');
			break;
		}

		else
			i = result;
		while (i <= result + 10)
		{
			printf('%d', i);
			if (i < result + 10)
			{
				printf(',');
			}
			i++;
			
		}
		printf('
');
	}
}

这段代码存在一个逻辑错误:在调用 scanf_s 函数时,同时使用了 result 变量接收返回值,并将 result 作为输入变量传递给函数。这会导致 result 的值被覆盖,从而导致后续的比较和循环出现错误。

代码修正

以下是修正后的代码:

#include<stdio.h>

int main() {
    int result;
    while (1) {
        int i;
        printf('The input value is: ');
        int scanResult = scanf_s('%d', &result);
        if (scanResult == 0) {
            printf('The program is end');
            break;
        }
        else {
            i = result;
            while (i <= result + 10) {
                printf('%d', i);
                if (i < result + 10) {
                    printf(',');
                }
                i++;
            }
        }
        printf('
');
    }
    return 0;
}

修正说明:

  • 使用一个新的变量 scanResult 接收 scanf_s 函数的返回值,避免覆盖输入值。

优化建议

  • 可以使用 for 循环简化代码结构。
  • 可以添加输入错误处理,例如在用户输入非整数时给出提示信息。

希望本文能够帮助您理解并解决C语言代码中的逻辑错误,并提供一些代码优化建议。

C语言循环打印数字程序修正与优化

原文地址: https://www.cveoy.top/t/topic/UPR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录