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;
}
else
printf("%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;
}
else
putchar(k);
}
return 0;
}