第一次写博客,我这不受抑制的小手在键盘上不知道敲啥。各位看官多多包涵~
写在前面的话
从11月22日第一次例会以来, 我感觉自己的每一天都过得相当的快 充实 。无论是在洛谷上刷题,还是听课,甚至是做PPT。
每晚和舍友拖着沉重的步子回宿舍的时候感觉到多的是满足,是有意义。感觉电脑都开始懂我的心情不错 网抑云,开始在屏保上给我灌心灵鸡汤。(今天的努力都是为了将来诸如此类)
任务
- 洛谷前六章2000以下的所有题
- 写博客
- python前五章视频以及章末测试
- stl库了解
- 计算机基础知识
练习
##1
第一题是python编程练习里面的,题目理解很简单,但格式要求的就很离谱。总之我提交了很多次都不对劲。
题目内容:
编写程序,打印以下图形(行n的值由键盘输入)。
*******
******
*****
****
***
**
*
输入样例:3
输出样例:***
**
*
输入样例:7
输出样例:*******
******
*****
****
***
**
*
时间限制:500ms内存限制:32000kb
n=int(input())
for i in range(n):
for j in range(0,i):
print(" ",end="")
for r in range(i,n):
print("*",end="")
print("")
结果:
这个行与行之间其实是没有间距的你敢信!!!(好坑好坑好坑)
print( ) 用于打印输出,是python中最常见的一个函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 ‘,’ 分隔。
- sep – 用来间隔多个对象,默认值是一个空格。
- end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
- file – 要写入的文件对象。
- flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
##2
科普题
##3
洛谷上第一道拦路虎就是p1009阶乘之和了
在c语言提交数次败北之后,我采取了第二种作战方式
那就是python!!!
n=eval(input())
sum=0
for i in range(1,n+1):
d=1
for j in range(1,i+1):
d*=j
sum+=d
print(sum)
输出:
因为python有先天的优势,无需考虑范围,
当然c里面的大数相乘和大数相加也是需要掌握的
##4
取整,深感题里经常用到向上取整或者向下取整,或者四舍五入的方法,所以记录一下。
下面的函数均存在math.h头文件里。
类型 | 方法 |
---|---|
向下取整 | floor:直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个整数值)。 |
向上取整 | ceil:向上取整的时候,正数,则直接将当前整数加一;负数,则将整数后面的数据抹除;整数,则不变。 |
四舍五入 | round:在英文中是有大约,环绕,在某某四周,附近的意思,所以,可以取其大约的意思,在函数中是四舍五入 |
也可以用这种方法a=int((a*10)+0.5)/10.0 |
##5
p1320
压缩技术的续集
- 要解决的是输入的问题
- 我们使用字符串输入
- 并将输入的拼接起来
- 再就是打印第一个数字
- 实则是你输入的行数
- 遍历所有字符串
- 从0开始,下一个相等便计数
- 不等便重新开始计数,并输出之前的计数
- 最后就大功告成啦
#include<stdio.h>
#include<string.h>
int main(void){
int n;
int sum,num;
char str[40000];
char temp[200];
scanf("%s",temp);
n=strlen(temp);
strcat(str,temp);
for(int i=2;i<=n;i++){
scanf("%s", temp);
strcat(str, temp);
}//输入n行字符串
printf("%d ",n);
for(int i=0,sum=0,num='0';i<=strlen(str);i++){
if(num==str[i]){
sum++;
}
else{
num=str[i];
printf("%d ",sum);
sum=1;
}
}
return 0;
}
输入:
输出:
这里有几个新get到的知识点
- strcat( )是将两个字符串拼接
- strcpy( )是将字符串拷贝
##7
求gcd的一种好方法!!!
辗转相除法(也称欧几里得算法)
- 递归法
int gcd_(int a, int b){
if (b == 0) {
return a;
}
return gcd_(b, a % b);
}
举个栗子:
输入32 12
输出什么呢?
2. 迭代法
int gcd_(int a, int b){
while(b != 0){
int t = b;
b = a % b;
a = t;
}
return a;
}
原理和上面是一样的!
C++知识点
C语言与C++的区别
-
C++新增bool类型
-
新的初始化方法
-
随用随定义
c语言中所有变量定义必须位于函数体的最前面
c++却可以随用随定义
- 输入输出
cout语法:
cout<<x<<endl(等效于\n);
cout<<“x+y=”<<x+y<<endl;
cout<<x,y,z<<endl;
cin语法:
cin>>x;
cin>>x>>y;
好处:
不用关心占位符
不用关注数据类型
不易出现问题
总结
完成度不高,下周再接再厉
下周规划
- 完成洛谷题目
- 继续学习c和python
- 继续完成hdu的题目
- 多去实验室
- 学习大数相乘和大数相加
- 好好做周报!养成随手写的好习惯