a005. Eva 的回家作業
--
POJ
| From: [117.143.50.210]
|
發表日期:
2021-07-14 06:58
高考完入坑的小白(小学时候入坑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", ×);
先输入题号
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分支,比较简单
}
}
综上,祝诸位食用愉快(ー_ー)ノ