C语言单代码适配多组自定义输入:输入内容无法显示问题排查
问题:C语言代码无法显示输入的自定义数字
问题背景
- 需求:编写C语言代码处理两组自定义输入,输出输入的数字、它们的总和及平均值
- 现状:现有代码能正确计算总和与平均值,但无法显示输入的自定义数字
- 初始代码:
#include <stdio.h> int main() { int size, avg, i; int sum = 0.0; int num_array[6]; printf("Elements are: %d ",&num_array); for (i = 0 ; i < 6 ; i++) { printf(" "); scanf("%d",&num_array[i]); sum +=num_array[i]; } printf("\nSum :%d\n",sum); avg = sum / 6; printf("Average : %d",avg); return 0; }
- 当前错误输出:
Elements are:
Sum :24
Average : 4
- 预期输出:
Elements are: 3 7 4 2 6 2
Sum :24
Average : 4
错误原因
原代码核心问题:
- 错误在输入前打印数组地址(
&num_array),用%d输出地址属于格式不匹配,且此时还未输入任何数字,根本无法获取输入值 - 没有在输入完成后遍历数组,输出已存储的元素
修正后的代码
#include <stdio.h> int main() { int avg, i; int sum = 0; // 修正int类型变量的初始化方式 int num_array[6]; // 先完成所有输入 for (i = 0 ; i < 6 ; i++) { scanf("%d",&num_array[i]); sum += num_array[i]; } // 打印输入的元素 printf("Elements are: "); for (i = 0 ; i < 6 ; i++) { printf("%d ", num_array[i]); } printf("\nSum :%d\n", sum); avg = sum / 6; printf("Average : %d", avg); return 0; }
说明
- 修正了sum的初始化逻辑,int类型用整数0初始化更规范
- 将输入与输出逻辑分离:先完成所有输入操作,再遍历数组打印输入的数字
- 测试时输入
3 7 4 2 6 2,输出将完全符合预期
内容的提问来源于stack exchange,提问作者gomen
相关产品推荐
相关产品推荐

