#26044: c语言二维数组死做


jack_2003 (Jack_Yao kaijie)

學校 : 上海市延安中学
編號 : 43048
來源 : [183.195.59.217]
最後登入時間 :
2021-08-17 14:01:23
a005. Eva 的回家作業 -- POJ | From: [117.143.50.210] | 發表日期 : 2021-07-14 06:46

高考完入坑的小白(小学时候入坑pascal差点成OIer,结果编译器劝退,当然也有兴趣成分辣,数组都碰到就弃坑了)

后来入坑arduino,迫不得已入坑c语言,现在有空了,正好找回账号了,暑假拿着这个老账号来刷刷题,既然解出来了那就拿思路出来献献丑。

技术不高,欢迎多多交流

——————————————————扯淡分割线———————————————————————

由于高中信息课学过数组,虽说刚入坑编程,但数组还是听说过的。

不过我高中信息basic里学的是一维的,这里可以感受出来似乎二维会方便一点。

关于二维数组概念及基本使用建议自行搜索,

简而言之就是把所有数据按excel一样按行按列排好,然后对应变量名就会继承 “a[行][列]”

其中a为变量名,行和列分别为整数,并且可以用变量代替,

结合题目,其实做一个20行4列的数组就可以把题目要求完全满足了。

还有种办法是先不定死20行,先输入题目数变量,然后再套一个大循环用题目数变量来定义行数,不过我嫌麻烦(毕竟多一层循环嘛),就直接按题目要求定死20行了,这也是为啥我叫“死做”的原因。

当然如果题目没有数量限制的话,还是得用后者做。。。

好了,那就不废话了,上代码(include和main函数不放上来了,注释特地去了注释符,要编译的话自行删除)
    

    int times, n, a[20][4];    

   times为题目数,n为循环变量,设定二维数组,框定死20行4列

    scanf("%d", &times);

    先输入题号

    for (n = 1; n <= times; n++) {

   for 循环输入开始

     scanf("%d %d %d %d", &a[n][1], &a[n][2], &a[n][3], &a[n][4]);
    }     


    for (n = 1; n <= times; n++) {

   for 循环输出开始       

        if (n < times) { 

    判断是否为最后一行,否,要回车。

            if ((a[n][3] + a[n][1] - 2 * a[n][2]) == 0)
                printf("%d %d %d %d %d\n", a[n][1], a[n][2], a[n][3], a[n][4], (a[n][4] + a[n][2] - a[n][1]));
            else
                printf("%d %d %d %d %d\n", a[n][1], a[n][2], a[n][3], a[n][4], a[n][4]*a[n][2] / a[n][1]);

            判断数列类型的核心代码,比较简单
        }

        else { 

       判断是否为最后一行,是,无回车输出。P.S这个判断不加我没试过,不加应该不行,格式不一定对,还是严谨一点吧          

             if ((a[n][3] + a[n][1] - 2 * a[n][2]) == 0)

                printf("%d %d %d %d %d", a[n][1], a[n][2], a[n][3], a[n][4], a[n][4] + a[n][2] - a[n][1]);
            else
                printf("%d %d %d %d %d", a[n][1], a[n][2], a[n][3], a[n][4], a[n][4]*a[n][2] / a[n][1]);

             判断数列类型的核心代码if分支,比较简单
        }
    }

综上,祝诸位食用愉快(ー_ー)ノ

 
ZeroJudge Forum