水题时,一些零碎的总结

1. 用printf(“%.nf”,….);输出精确n位的小数,结果会自动四舍五入。

 

2. double->int 时,不论double中的小数为什么,int 型都只取double中的整数。

 

3. 求绝对值时:

      abs()为int型

      fabs()为双精度浮点型

      cabs()为复数的

      labs()为long int型

 

4. 开平方为:

      sqrt()

 

5.  pow()函数返回的为double型,对于结果的转换要注意,容易被强制转换成int,然后就有可能出现问题。

 

6. 用库函数:

                   #include<algorithm>

                   int a[10];

                   sort(a,a+10);

7. 用‘/’时,如果要求返回浮点型,那么除数或被除数,至少有一个为浮点型。

 

8. gets()  scanf("%s")   puts()   printf("%s")  的区别

    gets()与scanf(“%s”):

         ① gets遇回车时结束输入。也就是说,gets可以接受回车前的任何输入。

            scanf不同,遇到回车、空格、制表符就结束输入。

            eg.  String a=”I am a student;

            如果要一次性的接受全部的字符串,要用gets。

         ② 输入结束后,gets的回车不会留在缓冲区;而scanf的空格、回车仍然会留在缓冲区。

    Puts()与printf(“%s”)

         ① puts函数只用来输出字符串,参数可以是字符串,也可以是存放字符串的数组名。

            Printf(“%s”)其参数也可以是是字符串,或者是存放字符串的数组名。

         ② puts函数输出字符串后会自动加换行,而printf(“%s”)不会。

            Puts(a)与scanf(“%s\n”,a)等效.

 

9. 由于中文的Ascall码的首位为1,所以其转化的十进制数为负数。因此,如果要求一个字符串中的中文的个数,只需要算出字符串的负数的个数,再除以二,即是中文的个数。

 

10. scanf(“%d%*d”,&a);

        表示接受两个输入,但只对第一个进行赋值。

       可应用到gets()前的输入(具体为什么还不太清楚。。。)。

#include<iostream>

using namespace std;

int main(){

    int n;

    char a[1000];

 //   cin>>n;

  //  scanf("%d",&n);

 //   scanf("%d%*d",&n);

    gets(a);

    int m=strlen(a);

    cout<<m<<endl;

    cin>>m;

    return 0;

}

 

   11. memset(a,0,sizeof(a));

         即对数组a进行初始化操作(全赋值为0)。

 

 12. scanf的用法即注意事项

scanf的返回值

scanf的返回值由后面的参数决定

scanf("%d%d", &a, &b);

如果a和b都被成功读入,那么scanf的返回值就是2

如果只有a被成功读入,返回值为1

如果a和b都未被成功读入,返回值为0

如果遇到错误或遇到end of file,返回值为EOF。

且返回值为int型.

使用scanf函数时应该注意的问题

1、scanf()中的变量必须使用地址。

eg.

      int a;

      scanf(“%d”,&a);

      int a[100];

      scanf(“%s”,a)

2、scanf()的格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符。

 eg.

      scanf(“%d,%d”,&a,&b);

            这时输入:a,b

      scanf(“%d%d”,&a,&b);

            这时输入:a b

3、在用"%c"输入时,空格和“转义字符”均作为有效字符。

      scanf(“%c %c”,&a&b&c)

            这时输入a b

4. 在两次输入时:

eg.

      Scanf(“%d”,&a);

      Sccanf(“%d”,&b);

      这时输入:1 2

      则输入到b中的为0.

     Scanf(“%d ”,&a);(b后面多了一个空格)

     Scanf(“%d”,&b);

     这时a和b的输入都没有变化。

        

 13.  判断两个元素是否处在同一对角线上:

          Hi ,li ,hj ,lj分别为第i个和第j个元素所在的行列。

If(hi-li==hj-lj || hi+li==hj+lj)

      则两个元素处在同一对角线上。

 

14.   BFS的判重:

        在树中进行BFS时,不需要进行判重;而在图中进行BFS时,需要进行判重来对搜索进行剪枝。

 

15.  int型的上限约为:20亿

       2000000000

 

16.  n=a*b;

       temp1=(a+b)*a;

       temp2=(a+b)*b;

       1/n=1/temp1+1/temp2

 

posted on 2012-06-19 10:50  yumao  阅读(138)  评论(0编辑  收藏  举报

导航