学习旅程week1

第一次写博客,我这不受抑制的小手在键盘上不知道敲啥。各位看官多多包涵~

写在前面的话

从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
压缩技术的续集

  1. 要解决的是输入的问题
  2. 我们使用字符串输入
  3. 并将输入的拼接起来
  4. 再就是打印第一个数字
  5. 实则是你输入的行数
  6. 遍历所有字符串
  7. 从0开始,下一个相等便计数
  8. 不等便重新开始计数,并输出之前的计数
  9. 最后就大功告成啦
#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到的知识点

  1. strcat( )是将两个字符串拼接
  2. strcpy( )是将字符串拷贝

##7
求gcd的一种好方法!!!
辗转相除法(也称欧几里得算法)

  1. 递归法
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++的区别

  1. C++新增bool类型

  2. 新的初始化方法
    在这里插入图片描述

  3. 随用随定义

c语言中所有变量定义必须位于函数体的最前面
c++却可以随用随定义

  1. 输入输出
    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的题目
  • 多去实验室
  • 学习大数相乘和大数相加
  • 好好做周报!养成随手写的好习惯
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值