作者:Meng Kai
1. 代码⻛格
· C语⾔的编程规范和编程⻛格对于代码的可读性、可维护性和协作性都⾮常重要
C++ ⻛格指南 - 内容⽬录: https://zh-googlestyleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/
· 要求:请浏览上⽅链接的内容,本门课程已学知识涉及到了哪些内容?请挑出其中3个,并摘抄下来。重点浏览 「8. 注释」「9.8. 条件语句」「9.9. 循环和开关选择语句」。
` 思考:作为⼀名初学者,请描述⼀下什么是代码缩进,你平时是否有严格要求⾃⼰进⾏代码缩进呢?
答:
已学过内容:
①注释: 注释虽然写起来很痛苦, 但对保证代码可读性至关重要。同时要注意注释固然很重要, 但最好的代码应当本身就是文档。有意义的类型名和变量名, 要远胜过要用注释解释的含糊不清的名字。
②条件语句: 最常见的是没有空格的格式。最重要的是保持一致。如果是在修改一个文件, 参考当前已有格式。如果是写新的代码, 参考目录下或项目中其它文件。
③循环和开关选择语句: switch
语句可以使用大括号分段, 以表明 cases
之间不是连在一起的。在单语句循环里, 括号可用可不用。空循环体应使用 {}
或 continue
。
代码缩进: 是指在每一行代码左端空出一定长度的空白。其目的是能更加清晰地从外观上看出程序的逻辑结构同时也防止出现错误的缩进而导致结果错误或者运行不出结果。
2. 编程题
· 分别⽤ for
while
do-while
实现:计算并输出 n! = 1 × 2 × 3 × ⋯× n 。
答:
for:
代码如下:
#include<stdio.h>
int main()
{
int n, count, sum = 1;
scanf("%d", &n);
for(count = 1; count <= n; count++) //运用for循环语句求阶乘
{
sum = sum * count;
}
printf("%d", sum);
return 0;
}
运行结果如下:
while:
代码如下:
#include<stdio.h>
int main()
{
int n, count = 1, sum = 1;
scanf("%d", &n);
while(count <= n) //运用while循环语句求阶乘
{
sum = sum * count;
count++;
}
printf("%d", sum);
return 0;
}
运行结果如下:
do-while:
代码如下:
#include<stdio.h>
int main()
{
int n, count = 1, sum = 1;
scanf("%d", &n);
do //运用do-while循环语句求阶乘
{
sum = sum * count;
count++;
}
while(count <= n);
printf("%d", sum);
return 0;
}
运行结果如下:
3. 编程题
· 模仿PPT的课程内容,计算⾃然数e = 1 + 1/1! + 1/2! + 1/3! + · · · + 1/n!(直到最后⼀项的绝对值⼩于1e − 7)的编程思路,计算圆周率。
著名的莱布尼兹公式:
答:
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, count = 1;
double sum, term = 1, pai;
for(n = 1; fabs(term) >= 1e-7; n = n + 2) //直到最后一项小于1e-7
{
term = 1.0 / n;
if(count % 2 == 0) //实现一项“+”一项“-”
{
sum = sum - term;
}
else
{
sum = sum + term;
}
count++;
}
pai = sum * 4;
printf("%f", pai);
return 0;
}
运行结果如下:
4. 编程题
编写⼀个程序,使⽤ while
循环计算斐波那契数列的前20个数字,并将它们输出到屏幕上。
什么是斐波那契数列?斐波那契数列是⼀个数学上的经典数列,起始于0和1,之后的每⼀项都是前两项的和。它的前⼋项为:0,1,1,2,3,5,8,13,……
答:
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count = 1, num1 = 0, num2 = 1;
printf("%d ", num1); //第一项:0
count++;
printf("%d ", num2); //第二项:1
count++;
num1 = num1 + num2;
while(count <= 20) //表示输出20项
{
if(count % 2 != 0) //num1与num2相互成为前几项和,达成循环
{
printf("%d ", num1);
num2 = num1 + num2;
}
else
{
printf("%d ", num2);
num1 = num1 + num2;
}
count++;
}
return 0;
}
运行结果如下:
5. 编程题 (附加题)
编写⼀个程序,接受⽤户输⼊的整数,然后按照相反的顺序输出这些数字。例如,输⼊为 12345,输出应为 54321。
答:
代码如下:
#include <stdio.h>
int main()
{
int num;
scanf("%d", &num);
for(num; num; num /= 10) //for循环语句将数字取余后再除以10,以求下一位的数字
{
printf("%d", num % 10);
}
return 0;
}
运行结果如下: