9月17号c语言设计程序总结2

枚举常量enum:

作用:使用人看的懂的名字代替不容易区分的数字

图中使用enum,使得mo ,to....等符号被赋予整数值(enum默认整数,不用申明)

并且默认是从数值0开始赋值(若想改变起始赋值可人为申明mo=1,修改后自动依次赋值1,2,3....)

enum与switch的联用:

作用:输入整数,输出周几(1对应周一,2对应周二...)

 

 ---------------------------------------我是分界线---------------------------------------------

 

字符串和字符数组和\0 :

 char a1[]="",和char a1[]={'',''}都是创建并申明字符数组a1,并存入字符串

char a1[]=""输入的”abc”其实是“abc\0”

\0相当于隐藏的结束符号,图中调试结果a2和a3对比可知。(a2为什么存在乱码?是因为a2结尾没有读取到结束符号\0,继续读取,导致乱码生成)

如何查询字符串长度(或字符数组)?

 用 strlen:

 由图可知:  

第一点:\0不参与字符串长度,第二点:由于a2没有\0作为结束符,所以出现35的随机数字

------------------------------------我是分界线-------------------------- 

 转义字符:

 

 调试发现“c:\test\test.c''无法按照预想打印

因为\t是转移字符,会横向跨进。

想要消去”\t”中“\"的作用,可以增加一个“\”变为“\\t

 同理,\n为转行字符,改为\\n便打印为\n

 

已知转移字符:

\xdd(其中dd是数字)的作用为16进制的转换

\ddd(其中ddd是数字)的作用为8进制的转换

(复习:%d10进制,%x16进制,%o8进制)

 思考:为什么打印结果为9?

首先:"\t”是一个转义字符看为一个字节

其次:\1008中,\ddd”的形式为8进制的转义字符看为一个字节,但是!8进制不可能存在8

所以\1008为两个字节

最后“\0”作为隐藏字节(其实正确来命名是空字节)也算作一个字节

所以储存字节分为c,\t,e,s,t,\100,8,\x12,\0总共9个字节

 

 

 

 

 

 

以下是一个简单的C语言万年历实现的报告: 1. 实验目的 通过编写一个简单的C语言程序,实现一个万年历,加深对C语言的掌握和理解。 2. 实验环境 - 操作系统:Windows 10 - 开发环境:Dev-C++ 5.11 3. 实验过程 万年历是一个比较常见的小项目,其主要的实现思路是根据用户输入的年份和份,计算出该的天数以及该1是星期几,然后在控制台中输出一个类似于日历的视图。具体过程如下: 3.1 用户输入 首先,需要让用户输入需要显示的年份和份,可以使用scanf函数来读取用户的输入: ```c int year, month; printf("请输入年份:"); scanf("%d", &year); printf("请输入份:"); scanf("%d", &month); ``` 3.2 计算份天数 接下来,需要计算出该的天数。可以通过判断份是否为2来确定该的天数。如果是2,需要判断是否为闰年,闰年的2有29天,非闰年的2只有28天。如果不是2,则根据份的奇偶性来确定该的天数,其中奇数有31天,偶数有30天。 ```c int days; if (month == 2) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { days = 29; } else { days = 28; } } else { if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } else { days = 31; } } ``` 3.3 计算1是星期几 根据公历的规律,每个1的星期几是可以计算出来的。这里采用蔡勒公式来计算,具体实现如下: ```c int dayOfWeek(int year, int month, int day) { if (month == 1 || month == 2) { month += 12; year--; } int c = year / 100; int y = year % 100; int m = month; int d = day; int w = (c / 4) - 2 * c + y + (y / 4) + (13 * (m + 1) / 5) + d - 1; while (w < 0) { w += 7; } return w % 7; } int weekDay = dayOfWeek(year, month, 1); ``` 3.4 输出日历视图 最后,根据份的天数和1的星期几,可以在控制台上输出一个类似于日历的视图。具体实现可以使用循环来输出每一天的日期,并根据星期几的不同来控制输出格式。 ```c printf("日 一 二 三 四 五 六\n"); for (int i = 0; i < weekDay; i++) { printf(" "); } for (int i = 1; i <= days; i++) { printf("%2d ", i); if ((i + weekDay) % 7 == 0) { printf("\n"); } } ``` 4. 实验结果 编译运行以上代码,可以在控制台上输出一个类似于日历的视图,例如: ``` 请输入年份:2022 请输入份:10 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ``` 5. 实验总结 通过本次实验,我深入理解了C语言的基本语法和控制结构,并学会了如何使用C语言来实现一个小项目。在实现万年历的过程中,我学会了如何处理日期和时间相关的问题,以及如何控制输出格式。这对于我的日后编程学习和工作都有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值