这个星期学习的是函数的相关知识,刚开始预习时翻书会发现函数与平时编写的程序差不多又有点不同,跟高中时所学的数学函数很像,让我比较容易理解。但是书中的概念文字又很多,相近的概念如实参形参,局部变量,全局变量,静态变量等等我很容易搞混,但是课堂中遇到的问题上课时也会听老师讲解一遍。最后,我又抽时间看了一遍翁恺老师有关函数的视频,发现自己清晰了很多,所以学习还是要不断加深印象,不断动脑思考,动手编程,才会把知识真正的装到自己脑子里。
空心的数字金字塔
本题要求实现一个函数,输出n行空心的数字金字塔。
1.for(j=1;j<=n-i;j++)
{
printf(" ");
} 输入每行前面的空格
2.printf("%d",i); 输入第一个数字
3.for(m=1;m<=(2*i-3);m++)
{
printf(" ");
} 输入数字与数字间的空格
4.for(k=1;k<(2*n-1);k++)
{
printf("%d",i);
} 输入第二个数字
5.printf("\n"); 回车符,开始下一行的循环
Q1:第一次是编译错误。
A1:我在这个程序中用了很多的if判断还有for循环,但在运行时只显示1这个数字,后来我发现是我没有分清赋值与等于搞出的错误。
Q2:有两个答案正确。
A2:我请教了下同学,用了另一种方法,我的思路是一行一行的循环,在每一行中分别用几个循环,输出空格和数字。
首先定义数字number,产生随机数字,然后运用一个switch case 产生随机字符加减乘除进行运算,比较输入答案与正确答案的关系。
方法与第一级大致相同。
方法与上述相同
switch case还有我新学到的清屏功能。让整个界面看起来更舒服。
一个菜单函数,分别放在各个级别中,避免了代码重复也更加方便简单。
在写大作业的过程中我遇到了以下截图中的问题
这个是错误代码
这个是改正后的
原因是在我做完一个级别的程序后,一般会按回车进行下一次做题训练,而因为设置的都是字符型,系统会把回车当成非法字符。加入一个getchar();吃掉回车符,就不会出现上述毛病了。
1.我做大作业时的思路,首先是弄一个大的框架,再逐个填充函数进去,最后运行程序,对细节和bug进行调试。
2.该作业的第一步是显示级别,让做题人可以选择,这就需要一个printf。并且需要 switch case进行选择。然后需要定义一个函数用来让做题者选择题目数量。紧接着对第一级,第二级,第三级的函数进行填充,使之能够运行成功。
3.在写大作业时我碰到的问题是代码会出现重复,复杂但我又不知道如何改进。对于拓展的内容,我对于时间函数的写法不太理解。通过这次作业,也让我知道了编写一个程序,不管多小都需要细心,认真,不断调试改正。
原文:https://www.cnblogs.com/20000519yxn/p/9951756.html