2021.5.21学习笔记
Posted bit_zhy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.5.21学习笔记相关的知识,希望对你有一定的参考价值。
今天主要的编程代码是我在进行c语言表驱动法练习,代码如下:
#include<stdio.h>
int month_function(int month, int year);
int leap(int year);
int main()
{
int year, month;
printf("请输入需要查询的年,月\\n");
scanf_s("%d %d", &year, &month);
printf("第%d年第%d月共有%d天!", year, month, month_function(month,year));
}
int month_function(int month, int year) {
int uncertian;
if (leap(year) == 1) {
uncertian = 29;
}
else {
uncertian = 28;
}
int all_month[12] = { 31,uncertian,31,30,31,30,31,31,30,31,30,31 };
return all_month[month - 1];
}
int leap(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return 1;
}
else {
return 2;
}
}
在编写代码的过程中,我遇到了很多问题,首先是C语言中返回值理解不明确。看了解释之后懂了:c语言中,首先,返回值是函数的返回值;然后,函数的函数名被作为一个变量处理;最后,函数的处理结果数据带回给调用函数作为返回值就被值赋给了(函数名)变量的。说白了就是一个函数被调用之后会呈现出一个值来,这个值就是return的返回值。
其次我很疑惑在
int month_function(int month, int year) {
int uncertian;
if (leap(year) == 1) {
uncertian = 29;
}
else {
uncertian = 28;
}
int all_month[12] = { 31,uncertian,31,30,31,30,31,31,30,31,30,31 };
return all_month[month - 1];
}
int leap(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
return 1;
}
else {
return 2;
}
}
这段代码之中,我明明没有给leap(int year)的year赋值但是它仍旧可以被正常调用,经过研究,我发现在第一个函数调用leap函数时,其中的参数year第一个函数的参数名字正好相同,因此在主函数之中调用第一个函数时赋予的year值竟然同时赋值给了leap函数,这实现了函数的同时嵌套使用,还是非常有趣的。
其次就是在视频之中看到的c语言利用bool的定义法,我利用了int来弥补,效果也不错,还有在判断2月份天数时视频中运用了三元运算符,我在编码时没有用到,因此多加了一个if语句还多引入了一个uncertian变量。
总的来说,今天的收获还是不少的。
以上是关于2021.5.21学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段