寒假刷C语言题库的心得(大一)

寒假刷C语言题库的心得(大一)

   寒假刷C语言题库时的一些心得注意点,借助这个平台做一下整理和分享,顺序皆按照自己的做题顺序排布。因本人才大一,水平有限,整理的都是基础中的基础,不足之处欢迎各位指点。
   
   这是我的做题网站:
   [C语言网](https://www.dotcpp.com/oj/problemset.php?page=2&mark=0)

1. 中括号和分号的重要性
if()后面一定要加上中括号{}再在中括号中输入想要执行的操作。如果只有一条语句那加不加问题不大。while放在大括号前面时不用加分号,而放在最后面时需要加分号。别忘了蓝桥杯刷题时第二题加了分号的*。

2. 接收类型
double类型的需要用"%lf"来进行接收;float类型需要用"%f"接收。

3. 宏定义
刚开始都不知道宏定义是什么(捂脸),后来才知道在头文件那儿加#define 标识符 字符串 eg:#define pi 3.14;也可以写成#define 宏名 参数表 的形式 eg:#define half(a,b,c) s=(a+b+c)/2。
注意点:
1.不要括号,圆括号尖括号大括号什么都不要!!!当时我加了个圆括号,系统一直给我报错,我还找不到原因,去问同学的时候被笑话了。
2.不要分号!!!,分号能载舟,分号亦能覆舟。

4. 改背景
我用的是codeblocks,突发奇想想改一下背景颜色,(上方菜单栏)setting-editor-(左侧)syntax highlighting-(右侧)background。就可以自定义颜色啦,只是我改成黑色后发现好多字符反而更看不清楚了,最后还是被我给改回来了。

5. scanf和gets输入字符串的区别
scanf输入的字符串有空格时,空格后面的部分不会被读入,gets则可以。注意哦,scanf字符串时不要加&。

6. 求最大公因数和最小公倍数的两种思路
思路一(公式):公因数:互相求余(来自c语言网上的题解)
补充:参加寒假一个培训班的时候,老师提到,这个叫欧几里得算法。
例如:输入18和12 18%12=6 12%6=0,所以6是最大的公因数。

#include"stdio.h"
int max(int a,int b)
{
    return (a>b?a:b);
}

int min(int a,int b)
{
    return (a>b?b:a);
}

int gy(int a,int b)
{
    int i,median=min(a,b);
    for(i=median;i>=2;i--)
    {
        if(a%i==0&&b%i==0) break;
    }
    return i;
}

int gb(int a,int b)
{
    int i,median=max(a,b);
    for(i=median;;i++)
    {
        if(i%a==0&&i%b==0) break;
    }
    return i;
}

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d %d",gy(a,b),gb(a,b));
    return 0;
}

公倍数:应用公式,最大公因数最小公倍数=两数值的积,例如636=18*12。

思路二(常规思路):输入两个数a,b。
公因数:i=min(a,b),等到a和b可以把i给整除时,输出i
公倍数:i=max (a,b),等到i可以把a和b都整除时,输出i

#include"stdio.h"
int max(int a,int b)
{
    return (a>b?a:b);
}

int min(int a,int b)
{
    return (a>b?b:a);
}

int gy(int a,int b)
{
    int i,median=min(a,b);
    for(i=median;i>=2;i--)
    {
        if(a%i==0&&b%i==0) break;
    }
    return i;
}

int gb(int a,int b)
{
    int i,median=max(a,b);
    for(i=median;;i++)
    {
        if(i%a==0&&i%b==0) break;
    }
    return i;
}

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d %d",gy(a,b),gb(a,b));
    return 0;
}

7. 在头文件处增添函数声明
我很少用函数声明的方式来调用函数,大多数都是在main函数前面就直接"int 函数名()"。现在学习一下格式
例:int area(int a,int b)

8.收藏的题目:1094,1427

9.编译时候的错误
“expected declation or statement at the end of the input”
我查了一下,有两种可能
1.一个函数在使用前没有定义
2.在一个地方没有加括号,并且虽然提示在最后面,但是可能出现在代码的任意位置。

10.调用函数传递数组
一维:int func(int a[]) (调用函数)
x=func(a);

二维:int func(int a[][n])
x=func(a);
我发现调用多维时后面一个肯定要有,还有emmmmmm善用void吧

11 .类似圆环形数组的边界引用
sum+=a[t]*a[(t+n-1)%n]*a[(t+1)%n]; 这是我直接复制黏贴的,t是中间量,t+1就是后面一个,如果t是最后一个,那就延伸成为第一个。

12.一个小tip
我在为蓝桥杯做准备,和我一样的同学一定要看清题目要求!!!让我们输出什么就输出什么,多余的千万不要输出!!!我做了一道题目,它一直判定我错误,但是怎么都找不到。找了一下午,让老师帮我看,老师告诉我!!!我输出符号‘U’没有大写。。。我裂开了,我用了一下午。

上一篇:1029 Median (25分)


下一篇:Find median