HDOJ试水心酸总结

下面是一些被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]);

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值