算法竞赛

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;
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值