享受Code::Blocks编辑快感的几个关键[转]

2009年10月05日 01:25

http://blog.csdn.net/Utensil/archive/2008/12/24/3593502.aspx

http://wxforum.shadonet.com/viewtopic.php?t=22128

说明:

1)以下需要设置的地方均在Settings->Editor...弹出的对话框中。

2)不少命令都可针对当前行或选中的代码块,下文简称当前行或选中块。

==日常编辑==

    • 按住Ctrl滚滚轮,代码的字体会随你心意变大变小,对保护视力特别有好处。
    • 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。
    • Ctrl+D可复制当前行或选中块。
    • Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。
    • Tab缩进当前行或选中块,Shift+Tab减少缩进。
    • 可拖动选中块使其移动到新位置,按住Ctrl则为复制到新位置。
    • 按下Atl,再拖动鼠标,可以实现部分选择(即只选中一个区域内的字符,而不会包含它们所在行的其他字符)。
    • 需要更大编辑空间时,F2和Shift+F2分别可以显隐下方Logs & others栏和左方的Management栏。

==自动完成与缩写==

1)优化代码自动完成功能:在Code-completion and symbol browser中,
    • 将Automatically launch when typed # letter中的4改成2,这样打两个字母就会有提示了。
    • 将Keyword sets to additionally include中1到9都勾上(可在Syntax highlighting 的keywords...中设置,其中1是C++关键字,3是Doxygen关键字;我曾将wxWidgets的类名都加入7并设置相应的字体(粗黑体),看代码时特别爽)
    • 将Delay for auto-kick-in when typing [.::->]拉到 200ms,这样快点出来提示
    • 选中Case-sensitive match,防止一些无关的东西干扰,如果你想它帮你纠正大小写,那就去掉勾
    • 在Keyboard short-cuts中将Edit->Code complete的快捷键由Ctrl+Space改为Alt+/,因为前者与中文输入法切换冲突,该快捷键为已经输入的(不是正在输入的)词提供自动完成。

2)看Abbreviation一栏,里面定义了许多缩写(还可以自定义),只要输入这些缩写,并按Ctrl+J,就可以自动完成常用的代码框架,并将光标放在恰当的地方(自定义时用|表达)。常用的有:guard、class、switch等。

3)如果你声明了一个类,你可以在cpp文件中右击,Insert->All class methods without implementation...来插入你还没定义的方法的定义(省去不少打字的功夫哦),也可使用Insert->Class Method declaration/implementation...来插入一个方法的声明或定义。

==导航相关==

    • Ctrl+G 到达指定行,ALT+G 到达指定文件,Ctrl+Alt+G 到达指定函数(支持头文件中的函数定义),F11 切换源文件与头文件。
    • Ctrl+PageUp 到达上一个函数,Ctrl+PageDown 到达下一个函数。
    • Ctrl+B 添加书签,Alt+PageUp和Alt+PageDown可以切换书签。
    • Ctrl+Shift+B可找到匹配的括号。
    • 看长代码时,可右击,Folding->Fold All,然后慢慢展开来看,也可充分利用左方Management栏的Symbol浏览器。
    • 在一个变量、函数或宏上右击,三个以Find开头的菜单项,分别可以为你转到它的声明、定义和找到所有出现的地方(按F2在下方Thread Search那里查看)。
其他:
    • General Settings中可以设置缩进、自动换行等细节。
    • 让Code::Blocks永远记住你的Layout,尤其是debug的layout,善用debug工具栏。
    • 备份C:\Documents and Settings\[你的用户名]\Application Data\codeblocks\Default.conf,如遇重装,将其放在codeblocks.exe所在目录,就不会丢失你的配置;这样也可以 打造出Code::Blocks的绿色版。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Utensil/archive/2008/12/24/3593502.aspx

评论(1) 阅读(1582)

CUMCM2009-C

2009年9月13日 14:38

只做了一些

#include <iostream>
#include "math.h"
using namespace std;

double r=6378.140;//地球半径 km
double pai=3.14159;//π

double func1(int stations)//计算最小高度
{
    double angle1=(stations-2)*180/(stations*2);//角度1
    //cout<<"angle1="<<angle1<<endl;
    double angle2=(180-angle1*2)/2+3;//角度2
    //cout<<"angle2="<<angle2<<endl;
    return (r*cos(angle1/180*pai)*tan(angle2/180*pai))+r*sin(angle1/180*pai);
}

double func2(double h,double erfa)
{
    double l1=h*sin(erfa/180*pai);
    cout<<"l1:"<<l1<<endl;
    double l2=sqrt(h*h-(r*sin(87.0/180*pai))*(r*sin(87.0/180*pai)))-r*cos(87.0/180*pai);
    l2=l2*sin(87.0/180*pai)*2;
    cout<<"l2:"<<l2<<endl;
    double l3=sqrt(l2*l2-l1*l1*4);
    cout<<"l3:"<<l3<<endl;
    double beita=asin((l3/2)/(h*cos(erfa/180*pai)));
    cout<<"berita:"<<beita<<endl;
    return pai/beita;
}

int main()
{
    /** problem 1 **/
    cout<<"r:"<<r<<"  "<<"pai:"<<pai<<endl;
    cout <<"题目1中需检测的卫星的运行高度(距地表 km):";
    double h;
    cin>>h;
    h+=r;
    cout<<"其距地心:"<<h<<endl;
    for(int i=3;;)
    {
        cout<<"i:"<<i<<"    "<<func1(i)<<endl;
        if(func1(i)<=h)
        {
            cout<<"需要检测站个数:"<<i<<endl;
            break;
        }
        else i++;
    }
    /** problem2 **/
    double h2,erfa;
    cout<<"卫星离地面高度(km):";
    cin>>h2;
    h2+=r;
    cout<<"轨道与赤道夹角(如60):";
    cin>>erfa;
    cout<<"需要检测站个数:"<<func2(h2,erfa)<<endl;
    return 0;
}

评论(1) 阅读(1529)