今天在做题的时候 练习7-2 求最大值及其下标 (20 分) 想通过循环将输入的数据存在一个数组里面,于是使用了如下写法
#include <stdio.h>
int main(){
int n,number,max=0;
int a[10];
scanf("%d",&n);
for(int i=0; i<n ;i++){ //实现循环输入与数组赋初值
a[i] = scanf ("%d",&number);/*☆*/
printf("a[%d]=%d\n",i,a[i]);
// a[i] = number;
}
}
输入数据个数:3
输入数据:5 3 7打印的意外结果: 想要的结果应该为:
a[0]=1 a[0]=5
a[1]=1 a[1]=3
a[2]=1 a[2]=7
错误分析:想直接将 scanf ("%d",&number); 的结果赋值给数组 ,我以为的过程是,通过scanf()把键盘的输入值传给了变量number的内存中,然后将内存中的数据直接赋值给数组
但是语法显示若直接这样,scanf ("%d",&number)的返回值一直恒为1,就很疑惑为什么会这样?
若修改语句,分两次进行输入则能够正常运行
a[i] = scanf ("%d",&number) ☆出错语法不会报错,拆解成两步就可以正常输入了
scanf ("%d",&number);
a[i] = number;
书本更为简单的输入方式是: scanf ("%d",&a[i]) 同样的逻辑:
scanf ("%d",&a[i])