蓝桥杯备战(3)做题总结

蓝桥杯备战(3)做题总结
1-1 数据类型范围

1-2 判断闰年算法

四年一闰,百年不闰,四百年再闰。

if((n%4 == 0 && n%100 != 0) || n %400 == 0)
1-3 题目出现 多组测试数据,请处理到文件结束 如何处理
#include<iostream>
using namespace std;

int main(){
	int s;
	while(cin>>s){
		cout<<s<<"1";  //已经有cin了!
	}
	return 0;
}//使用ctrl+z+回车终止输入,其中z会留在键盘区 不会储存

在Windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再按Enter键,即可结束输入。在Linux下,输入完毕后按Ctrl+D键即可结束输入。

1-4 pi的精确赋值方法
#include <math.h>
const double pi = acos(-1);)
1- 5完全平方数的判断
int x;
int m = float(sqrt(x)+0.5);

浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。
可不可以这样写?if(sqrt(n)==floor(sqrt(n)))printf("%d\n",n),即直接判断sqrt(n)是否为整数。理论上当然没问题,但这样写不保险,因为浮点数的运算(和函数)有可能存在误差。
假设在经过大量计算后,由于误差的影响,整数1变成了0.9999999999,floor的结果会是0而不是1。为了减小误差的影响,一般改成四舍五入,即floor(x+0.5)(2)。如果难以理
解,可以想象成在数轴上把一个单位区间往左移动0.5个单位的距离。floor(x)等于1的区间为[ 1, 2),而floor(x+0.5)等于1的区间为[0.5,1.5)。

1-6 精确到小数点n位

习题2-5 分数化小数(decimal)
输入正整数a, b, c,输出a/b的小数形式,精确到小数点后c位。a, b <= 10^6,c <= 100。例如a=1, b=6, c=4时应输出0.1667。

printf有特殊的用法

printf("%* . * f",8,4,a);//会输出8个字宽保留4位小数的浮点数运算结果

* 代替了前面整数符号 可以控制输出位数

1-7 数组声明的技巧
  • 简单地说,只有在放外面时,数组a才可以开得很大;放在main函数内时,数组稍大就会异常退出。
  • 在声明数组之前一定要记住不要将数组的空间设置得过大,不然程序将无法运行。
1-8 输出要求(收尾无空格 输出数据间间隔空格)
int first = 1;
if(a[i]) { if(first) first = 0; else printf(" "); printf("%d", i); }

另一个技巧在输出:为了避免输出多余空格,设置了一个标志变量first,可以表示当前要输出的变量是否为第一个。第一个变量前不应有空格,但其他变量都有.
或者说是:
这里有一个小问题:一般要求输出的行首行尾均无空格,相邻两个数据间用单个空格隔开。这样,一共要输出n个整数,但只有n-1个空格,所以只好分两条语句输出。

strchr用法

strchr和strrchr函数及用法,C语言strchr和strrchr函数详解
在“scanf("%s", s)”中,不要在s前面加上“&”符号。如果是字符串数组chars[maxn] [maxl],可以用“scanf("%s", s[i])”读取第i个字符串。注意,“scanf("%s", s)”遇到空白字符会停下来。

函数的使用小方法
  • 将数组作为参数传递到函数中时,不能够通过sizeof来求取数组的大小,出入的数组其实是函数的首地址,sizeof不能通过首地址来求出数组大小。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值