欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

gcc下的C语言细节

程序员文章站 2022-07-11 08:00:49
已经很长一段时间没有ac题了,一周之前报名参加了计算客的大赛,虽然我的结果不 是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序: 代码如下:(...

已经很长一段时间没有ac题了,一周之前报名参加了计算客的大赛,虽然我的结果不

是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序:

gcc下的C语言细节

gcc下的C语言细节

gcc下的C语言细节

gcc下的C语言细节

代码如下:()

 

#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考验的是细心程度,也是希望我们写出规范的代码,更有助于提高我们的算法。希

望以后多加练习。