C语言如何为已设置下标0值的指定大小数组填充其余递增元素
现有代码核心问题
scanf的格式字符串中多余的\n会导致输入匹配异常:%d本身会自动跳过前置空白(空格、换行、制表符等),额外加\n会要求多输入一个非空白字符才能结束匹配- 仅给数组下标0的元素完成了赋值,下标1到size-1的元素未做初始化,打印时会输出随机的内存垃圾值
修正后完整代码
#include <stdio.h> int main() { int size; int startValue; // 修正scanf格式,去掉多余换行符 scanf("%d %d", &size, &startValue); int array[size]; // 遍历完成所有元素赋值 for(int i = 0; i < size; i++) { array[i] = startValue + i; } // 按示例要求用顿号分隔打印元素 for(int i = 0; i < size; i++) { if(i != 0) { printf("、"); } printf("%d", array[i]); } printf("\n"); return 0; }
补充说明:上述代码中
int array[size];是C99标准引入的可变长度数组特性,如果你使用的编译环境不支持该特性,可以改用动态内存申请实现:// 头文件新增#include <stdlib.h> int *array = (int *)malloc(size * sizeof(int)); // 代码逻辑不变,使用完数组后释放内存 free(array);
内容的提问来源于stack exchange,提问作者stahlmaske
相关产品推荐
相关产品推荐

