非循环实现C语言数组读写报错,无法打印数组内容求排查
问题分析与修正
你犯的两个低级错误:
- 参数分隔错误:
scanf和printf的多个参数必须用逗号分隔,你写的&num[0] &num[1]这种写法,编译器会将其解析为对&num[0]和&num[1]执行位运算,而int*和int类型无法进行位运算,因此触发类型不匹配错误。 - printf输出错误使用取地址符:
%d格式说明符需要接收int类型的数值,但你传入的&num[i]是指向数组元素的指针(int*类型),这会导致输出内存地址而非实际元素值,正确写法是直接使用num[i]。
修正后的代码:
#include<stdio.h> int main(){ int num[5]; printf("Enter the numbers: "); // 用逗号分隔每个scanf参数 scanf("%d %d %d %d %d", &num[0], &num[1], &num[2], &num[3], &num[4]); // 输出时直接传入数组元素值,无需取地址 printf("Your numbers are : %d %d %d %d %d\n", num[0], num[1], num[2], num[3], num[4]); return 0; // 补充main函数的返回值,符合C语言标准规范 }
这段代码无需循环,就能一次性读取5个输入存入数组,并直接打印数组内容,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Robin Francis
相关产品推荐
相关产品推荐

