gcc下的C语言细节
程序员文章站
2022-03-20 12:21:15
已经很长一段时间没有ac题了,一周之前报名参加了计算客的大赛,虽然我的结果不
是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序:
代码如下:(...
已经很长一段时间没有ac题了,一周之前报名参加了计算客的大赛,虽然我的结果不
是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序:
代码如下:()
#include int main() { int n = 0; int i = 0; int totaltime = 0; scanf("%d",&n); int p[n]; if (n >= 1 && n <= 10000) { for (i = 0;i < n;i++) { scanf("%d",&p[i]); } if (n % 2 == 1) { for (i = 0;i < n; i+=2) { totaltime += p[i]; } } else { for (i = 0;i < n-2; i += 2) { totaltime += p[i]; } if (p[n - 1]>p[n - 2]) { totaltime += p[n-1]; } else totaltime += p[n-2]; } printf("%d",totaltime); } return 0; }
代码分析:细心的你,有可能会发现代码中出现了这样的代码:
int n = 0; scanf("%d",&n); int p[n];
这样的代码是通过的吗?是对的,因为acm用的编译器是gcc,这还不是重点,gcc中支
持这样定义数组,还记得在《指针,数组》这篇博客中,我写到初学者一般会写出类似
上边那句的代码,当时还说是不对的。现在,我纠正,它是在windows下的vs中是不支
持的,但是gcc下允许这样。
acm考验的是细心程度,也是希望我们写出规范的代码,更有助于提高我们的算法。希
望以后多加练习。
上一篇: C# - 实现类型的比较
下一篇: IO流的原理和概念