标题:自动在对应的数字上加一,是怎么加的,搞不懂
只看楼主
jxfyzdb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-5-13
结帖率:0
 问题点数:0 回复次数:7 
自动在对应的数字上加一,是怎么加的,搞不懂
# include <stdio.h>

main ()

{
    int i, a, n[11];

    for (i=0; i<11; i++) {n[i]=0; printf ("\n %3d:%3d\n",i,n[i]);}

    for (i=1; i<=10; i++)
    {
        scanf ("%d",&a);

        n[a]++;

        printf ("\n %3d:%3d\n",i,n[a]);
    }

    for (i=10; i>=0; i--)
        
        printf ("\n %3d:%3d",i,n[i]);



    return 0;
}

这个自动在对应的数字上加一,在怎么加上去的,n[a]++,没有标明在什么地方加,但是他自己会对应到数字上加上去,是什么原理,是不是数组的原因,是不是我输入了跟n[i]数组对应的数字,自动在后面标明一个一,我输入了二次就标明二?????

我输入了三个printf想看下过程,但是看不到


[此贴子已经被作者于2017-5-19 00:17编辑过]

搜索更多相关主题的帖子: include return 
2017-05-19 00:14
jxfyzdb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-5-13
得分:0 
我输入了三个printf想看下过程,但是看不到
2017-05-19 00:16
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
for (i=10; i>=0; i--)
for循环共三条语句,一个分号一条
i = 10;赋值    最先执行它。不管条件成立与否都执行,且执行一次
i>=10;这是判断条件(if(i >= 0))  因为是for不同于if。它要进行循环,循环条件就是成立就循环,不成立就不循环。
成立就执行for循环括号里面的内容, 没括号就执行一句。
i--  括号内容结束, 就进行i--  然后继续判断条件成立不,成立继续执行循环体内容,执行i--,成立->循环体, i--。
不承认年公里退出循环。

第一次 i = 10; 10 >= 0?  是执行循环体  i--, i = 9;
第二次 i = 9; 9 >= 0?  i--, i = 8;
第三次 i = 8; 8 >= 0? i--, i = 7;
...     ...     ...
第十一次 i = 0 ;  i >= 0; i--, i = -1;
第十二次 i = -1;  i >=0  不成立,结束



int main()
{
   int i, j, n = 5, k1, k2;
   i = j = 0;
   while(n-- > 0)
   {
       i++;       //i = i + 1;                  /*显然这里i和j没啥区别*/
       ++j;       //j = j + 1;
       printf("val_i = :%d val_j = %d\n", i, j);
   }
   k1 = i++;                                    //显然这样是有区别的。最上面是没有变量接收值,在有变量接收值的情况就不同。
   k2 = ++j;                                    //前置++是先进行+1(自增)再赋值,后置++是先用当前值再进行(自增)+1
    printf("\n%d %d\n", k1, k2);
}
2017-05-19 02:15
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
程序代码:
#include <stdio.h>
main ()
{
    int i, a, n[11] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 11};

    for (i=0; i<11; i++)
        printf ("\n i = %3d  %3d\n",i,n[i]);   //没括号只执行一句,一般情况下就是第一个分号结束
    for (i=10; i>=0; i--)
        printf ("\n %6d%6d",i,n[i]);
    printf("\nPlease input N index\n");
    for (i=1; i<=10; i++)
    {
        scanf ("%d",&a);
        n[a]++;
        printf ("\n %3d:%3d\n",i,n[a]);
    }
    return 0;
}
2017-05-19 02:22
jxfyzdb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-5-13
得分:0 
你说的这些我没看懂,n[i]是给n[0]-n[10]赋值,,但是n[a]是干嘛的呢,。。还有一个,如果我输入二个5,他会在赋值的5上:后面写个2,输入3个6,他会在赋值的6:后面加个3,,为什么我输入6他会在6:后面加一个数字,为什么不在别的地方加
2017-05-19 19:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
你输入11,就能分分钟教你的程序做人的道理。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-19 19:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
定义的数组 int n[11],输入的数值a,即n[a]的a应在 a>=0 and a<=10。
数组 n 的下标表示输入的数a,数组n单元值表示累计输入数a的次数。
2017-05-19 19:49
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
n 和i j都是下标,区别在于一个是直接定义下标,一个是输入n为数组a的下标。。数组下标是0开始 a[11] 0-10为数组下标。++操作就是自身+1,上面给你说得很清楚了。我尽力了,自己领悟
2017-05-19 20:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.076238 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved