HDOJ试水心酸总结

  • Post author:
  • Post category:其他





下面是一些被HDOJ玩弄的痛苦教训(低级错误和各种规范)


  • 1.scanf(“”,&); &符号不要忘
  • 2.输出格式要注意啊!printf里面要跟上\n!!!
  • 3.若有多轮,则要注意做完一轮之后所有数据初始化!!!!!
  • 4.scanf字符串的时候,直接scanf(“%s”,a); 而不是scanf(“%s”,&a[i]);
  • 5.scanf(“%lf”);与scanf(“%.2lf”);不一样,尽量用前者

    Q:指针为什么要动态空间?(是因为指针无所指!!)

    因为它所指的地址不知道,不能解引用拿来运算,当然也不能拿来scanf,因为根本不知道解什么地址/或者是把输入的值放到哪个地址里面。。。。。

    (补充字符串指针:在scanf赋值的时候,要先让指针有所指,或者是malloc()给他开辟一片空间//注意要手动free!!!//)



9.16

  • 显示Runtime Error (ACCESS_VIOLATION)错误?原因可能是数组下标越界了,a[n]的n太大而没有定义



9.17

  • 冒泡排序模板
int j;int i
for(i=0;i<n-1;i++)
{
    for(j=0;j<n-1-i;j++)
    {
        if(a[j]<a[j+1])
    	{
            int t;
            t=a[j];a[j]=a[j+1];a[j+1]=t;
   	 }    
    }
}

冒泡排序三个关键点:


1.轮次为元素数-1;(轮次)



2.第一轮和第二轮冒泡有何差别?;(模拟、差异)



※3.冒泡方向(是向着每一轮元素减少的那个方向冒泡的),这关乎是 j++ or j- -(方向)

  • 关于数组要不要全部初始化为0?

    答:目前看来不需要


  • while(scanf("%d",&n)!=EOF &&n!=0)



    while(scanf("%d",&n)!=EOF &&scanf("%d",&n)!=0)

    两者辨识

    要树立一个观念:碰到

    scanf()

    其实是一个函数,只要碰到它就会要求输入

    那么这样看来,前者只要求输入一次,并且直接赋值给n;而后者输入了两次

  • 定义数组时非常重要的一点,里面只能是具体数字而不能是字母

    例如尽管

    n=5

    ,但是不能

    int a[n];

    ,只能

    int a[5];



    遇到具体题目的时候怎么办?



    题目应该会提供某个变量的范围,够用就行了!

  • 关于几个值的输出

    做题的时候,怎么样输出才算规范?

for(i=0;i<n-1;i++)
{
    printf("%d ",b[i]);
}
printf("%d\n",b[n-1]);

这玩意儿对做题太重要了!



版权声明:本文为qq_49666427原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。