国庆期间学习总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这一周儿

一、数据结构实验:简易表达式求值

用到栈的知识(C语言

1.思路分析

在这里插入图片描述分析需要的函数:初始化栈;入栈;获取栈顶元素的值;判断是否为运算符;优先级比较;运算;出栈;

代码如下(示例):

void InitStack(Sqstack &s);//初始化栈 
void Push(Sqstack &s, char ch);//入栈 
char GetTop(Sqstack &s);//获取栈顶元素的值 
int In(char ch, char operArr[10]);//判断是否为运算符 
int Pop (Sqstack &s, char &x);//出栈 
char Compare(char oper1, char oper2); //比较优先级 
int Count(int x1, char op, int x2);//运算
int Cal();

2.如何实现

struct Sqstack {
	int data[100];
	int top;  //创建栈结构体 (一个有顶部的数组 
};
char opset[10] = {'+', '-', '*', '/', '(', ')', '#'};
//用来进行比较运算符优先级的矩阵,3代表'=',2代表'>',1代表'<',0代表不可比 
int  cmp[7][7]  = {
        { 2, 2, 1, 1, 1, 2, 2 },
        { 2, 2, 1, 1, 1, 2, 2 },
        { 2, 2, 2, 2, 1, 2, 2 },
        { 2, 2, 2, 2, 1, 2, 2 },
        { 1, 1, 1, 1, 1, 3, 0 },
        { 2, 2, 2, 2, 0, 2, 2 },
        { 1, 1, 1, 1, 1, 0, 3 }  };//创建一个二维数组 
Sqstack Num;
Sqstack Oper; //命名

创建一维、二维数组。

二、重复了好多次冒泡排序

优化内层循环:

for (i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{

before: j<n-1
after:j<n-i-1 减少遍历

非常简单的冒泡儿

#include <stdio.h>
int main()
{
 
int a[100];
int n,t,i,j;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<n-1;i++)//注意范围
{
for(j=0;j<n-i-1;j++)//注意范围
{
	if(a[j]>a[j+1])
	{
		t=a[j];
		a[j]=a[j+1];
		a[j+1]=t;
	 } 
	}	
 } 
 for(i=0;i<n;i++)
 {
 printf("  %d",a[i]);
 }

}

转成冒泡倒叙(从大到小

	if(a[j+1]>a[j])
	{
		t=a[j];
		a[j]=a[j+1];
		a[j+1]=t;
	 } 

三、计算日期差几天(py

套用模板

import datetime
y1=int(input("please input year1:"))
m1=int(input("please input month1:"))
d1=int(input("please input date1:"))
y2=int(input("please input year2:"))
m2=int(input("please input month2:"))
d2=int(input("please input date2:"))
d1 = datetime.datetime(y1,m1,d1)
d2 = datetime.datetime(y2,m2,d2)
interval = d2 - d1
print(interval.days)

不套用模板
初步思路是写多个if else语句分情况写润平年,二月腊月再算日期。
…省略多个错误思路…
CSDN上找了个C的思路经过整理:

y1=int(input("please input year1:"))
m1=int(input("please input month1:"))
d1=int(input("please input date1:"))
y2=int(input("please input year2:"))
m2=int(input("please input month2:"))
d2=int(input("please input date2:"))

if ((y2%400==0) or (y2%4==0 and y2%100!=0)):
    list = [ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
    i=m1
    sum=0 //记得给sum一个初值
    while i < m2:
        sum=sum+list[i]
        i+=1
else:
    list = [ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
    i=m1
    sum=0
    while i < m2:
        sum=sum+list[i]
        i+=1    
if d1>d2:
    sum=sum-(d1-d2)
else:
    sum=sum+(d2-d1)

j=y1
q=0
while j < y2:
     if ((j%400==0) or (j%4==0 and j%100!=0)):
         q+=1
     j+=1
     
y=(y2-y1)*365+q
sum=sum+y

print("%d年%d月%d日与%d年%d月%d日相差%d天" %(y1,m1,d1,y2,m2,d2,sum))

对于日的处理:eg 8.17 与 9.3 做减法 8.3与9.17做加法

四、F12

写英语iwrite试图F12破解复制限制,终于找到那行代码发现还是修改不了QAQ,强行从源代码里黏贴进去答案发现系统不给上传,那没事了。


  1. 对结构体

语句格式:

struct tag { 
    member-list
    member-list 
    member-list  
    ...
} variable-list ;

理解:

struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book;

2.复习数组

type arrayName [ arraySize ];

a[n] 错误 明确占用的地址量
int a[10];

不从零开始计下标就是铁憨憨

从具体数举例子写写画画更好写普适算法一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值