关于循环输入的写法和错误记录

今天在做题的时候  练习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])

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值