6月28日至7月6日第一周小学期学习c++编程收获

       6.28日开始,进入小学期,也就是在10天十天时间内集中练习,以提高编程能力。此次小学期的作业共有十道题,其中分为四大类,系统类,数学类,游戏类,链表类。

       我开始的时候面对第一,二题,系统类,因为当时感觉难度有一些高,而且当时对系统并没有什么概念,就跳过了这两道题,然后感觉第三题空间点线面也有一点复杂,就直接先写了第四题,三角形类别的判断,因为以前做的题有些类似,就用点点之间的距离判断三角形的类别,也是没有太高的难度,于是就写出了这道题。然后就到了游戏类,就先挑了其中难度最小的石头剪刀布,理解题意之后发现完成它需要一个随机函数rand(),但是后来发现每次电脑所给出的结果都是固定的,之后在网上搜索发现要实现真正的随机要在头文件中添加ctime,然后还要在随机函数rand()之前加上srand(time (0))才会实现真正的随机函数。完成之后就开始写猜数字,猜数字这道题,共需要两个主题的函数,其中一个就是刚才说到的随机函数,还有一个就是计时函数,之后我就在网上花了一段时间去学习理解计时函数的原理。计时要现在头文件添加time.h,C++中的计时函数是clock(),而与其相关的数据类型是clock_t  。函数定义原型为:clock_t clock(void) ,其中计算的时间是以系统的时间的为准,系统时间是以毫秒来计算的,所以要换算成我们平时所常用的时间单位,秒,还要运用自带的转换公式 :clock() - now)/CLOCKS_PER_SEC,其中clock_t now = clock();表示的是当前时间,而CLOCKS_PER_SEC是一个换算大小,具体意义,并不了解。计时与随机都完成之后两者结合就完成了。

      我也不知道究竟过了多久,也不知道要有多才能睁开入门的双眼。这几天一直在正慢慢挣扎。人机下棋,这道题考虑的条件比较多,其中影响深刻的是两个选项,先后下,用什么其中,我在主程序运行开始输入两个数字来选,来确定循序,避免麻烦;之后就是怎么让电脑下之前没下过的,我就为每个棋格做了标记,解决了这个问题。之后我就开始进入链表类,因为之前只在上个学期接触链表的表面只是,于是我花了半个下午的时间的学习了链表的知识,原理,结构,创建,删除,添加,同时也完成了整数链表,还了解到动态内存的使用和动态内存的删除。之后就写约瑟夫退圈问题,与之前的区别就是从单向链表变成环状链表,没有指针指向null,因此循环的结束条件也就有了变化,但是通过努力解决了。之后就是通讯录信息管理,通过前两道题链表知识的积累,只要将创建,删除,添加等知识,运用到实际情况就可以了。到了这个时候,渐渐有了编程的感觉。

      然后我又回过头来看前两道相似的题,这是我发现都可以用结构体解决,但是用链表也可以。因为结构体还是用数组,我就想试试不用数组,用链表,我那个是解决将原链表排序,并生成新链表,并且不毁坏的问题,于是我又使用了链表的方法,我也学会了链表排序换数据不换p->next指针指向的方法技巧。最后就剩空间点线面的问题,其实本质并不难,只是数据有一些多,而且复杂,但是只要耐心写下去就可,共有15个小分支,但最后还是写出来了。

      这次小学期的收获还是有不少的,学习了链表,计时,随机,类与主函数的结构,最重要的还是有了编程的概念。

     收获不少,继续努力。

                                                                                                                                                                       

转载于:https://www.cnblogs.com/2940500426yingxin/p/11146420.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题比较复杂,需要一定的编程基础。以下是一个简单的 C++ 实现: ```c++ #include <iostream> using namespace std; int main() { int year; cout << "请输入年份: "; cin >> year; // 计算闰年 bool is_leap_year = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; // 输出年历 for (int month = 1; month <= 12; month++) { cout << year << "年" << month << "" << endl; cout << " 一 二 三 四 五 六" << endl; // 计算本第一天是星期几 int first_day = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400; for (int i = 1; i < month; i++) { if (i == 2) { if (is_leap_year) { first_day += 29; } else { first_day += 28; } } else if (i == 4 || i == 6 || i == 9 || i == 11) { first_day += 30; } else { first_day += 31; } } first_day = (first_day + 1) % 7; // 输出历 int days; if (month == 2) { if (is_leap_year) { days = 29; } else { days = 28; } } else if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } else { days = 31; } for (int i = 0; i < first_day; i++) { cout << " "; } for (int i = 1; i <= days; i++) { if ((i + first_day - 1) % 7 == 0) { cout << endl; } if (i < 10) { cout << " "; } cout << i << " "; } cout << endl << endl; } return 0; } ``` 这个程序会先让用户输入年份,然后计算出这一年是否是闰年。之后,程序会循环输出每个历,包括份、星期几和期。为了实现这个功能,程序需要计算出每个的第一天是星期几,以及每个有多少天。最后,程序会输出一个空行,以便让年历更易于阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值