算法竞赛

来源:互联网 发布:淘宝精品服饰广告案例 编辑:程序博客网 时间:2024/05/16 11:35

1.#include<math.h>

double floor(n);return 比n小的最近的整数

2.一定要注意:变量的类型和你输入输出的类型出现差错则系统不会报错;但算出来的结果会错

3.long long (int)类表示范围在-2^63~2^63-1,即8byte

4.求余取末位:比如要取某数末2位,则n%100;如:123%100=23, 1234%100=34;取末n位则10^n;

5.int x,a;a=scanf("%d",&x),此时a=1,即scanf函数返回值是输入的个数,但不熟悉printf返回值,好像也没用,无需知道

6.对书本上的文件定向一脸懵逼

7.printf("%d\n",(double)s/n);会有无提示的bug,转换为浮点数后又以整数输出则为0;至少要以float形式输出

8.在多数据的题目中:在计算完一组数据后某些变量没有重置,影响到下组数据的求解,如书本的数据统计P32

9.当嵌套的两个代码块中有同名变量时,内层的变量会屏蔽外层变


11.c语言和C++在输出时有很大的区别,例如韩信点兵:C++中用TAB输入多组数据后按回车键输出所有答案,而C语言中输入完后必须先输入Ctrl+Z才能输出所有答案,否则格式出错

12.以后输出空格都可以用cout<<" ",不要想那么多

13.在C++中要输出保留一定位数的浮点数需要:#include<iomanip> 和 << setprecision(5) << fixed,fixed是使保留的数从含e转化为不含e

14.

#include<stdio.h>#include<string.h>int main(){int a[max],b[max];while(scanf("%d",&x)==1){a[n++]=x;}    memcpy(b,a,sizeof(int)*3);//该程序用来把数组a中的3个元素(从第零个开始)复制到数组b中,在C++中同样使用
    memset(a,3,sizeof(a))//用来把数组a所有元素变3
}

15.int a=0;则!a等于1(并非任意数)

16.C++中cout<<endl<——>cout<<"\n";

17.字符串输入输出问题:读入的字符不含空格 TAB  回车

  memcpy(b,a,sizeof,sizeof(char)*k)。。。。见书本P39

#include<stdio.h>int main(){char s[10];scanf("%s",s);printf("%s",s);return 0;}
18.sprintf函数:输出多次时,把最后一个值输入到buf中;即本题输出12000   20,也可以也可以sprintf(buf,"saff"),不过这样做毫无必要,因为其等同于char buf[100]="saff",
#include<stdio.h>即本题输出//#include<string.h>int main(){char buf[100];for(int abc=111;abc<=12000;abc++)for(int de=11;de<=20;de++)sprintf(buf,"%d %d",abc,de);printf("%s",buf); }


19.strchr.查找字符串s中首次出现字符。c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL

20.遇到空格 回车 TAB输入都会终止,只输出你按这下键之前的字符

#include<stdio.h> int main(){char s[100];scanf("%s",s);printf("%s",s);}
21.字符输入问题
#include<stdlib.h>#include<stdio.h>int main(){char ch;int i=0;while(i<=8){i++;//scanf("%c",&ch);只能输入9个字 ch=getchar();//空格 回车 TAB等都算一个字符,因此输出最多五个字符+4个空格等 putchar(ch);}return 0;}

22(1).
#include<stdio.h>int main(){int q=1,c;while((c=getchar())!=EOF) //输入Ctrl+Z时满足 EOF //while(scanf("%c",&c)==1)输出 Ctrl+Z时满足个数为零 {//fflush(stdin);用了会清除 if(c=='"'){printf("%s",q?"``":"''");q=!q;}elseprintf("%c",c);//每输入一次空格就输出一次c,但结束所有输入还是要 Ctrl+Z}return 0;}

(2)过很久自己重做还是不会

#include<stdio.h>int main(){char k;int i,j=1;while(scanf("%c",&k)==1) //在这里两种方法都可以 //while((i=getchar())!=EOF){if(k=='"'){//i=j? "``":"''";  不能把字符串赋值给字符 //putchar(i);printf("%s",j? "``":"''");j=!j;}elseputchar(k);}return 0;}





1 0