第一题
要求:请浏览上⽅链接的内容,本门课程已学知识涉及到了哪些内容?请挑出其中3个,并摘抄下来。重点浏览「8.注释」「9.8. 条件语句」「9.9. 循环和开关选择语句」。
思考:作为⼀名初学者,请描述⼀下什么是代码缩进,你平时是否有严格要求⾃⼰进
⾏代码缩进呢?
总述
倾向于不在圆括号内使用空格. 关键字
if
和else
另起一行.说明
对基本条件语句有两种可以接受的格式. 一种在圆括号和条件之间有空格, 另一种没有。
注意所有情况下
if
和左圆括号间都有个空格. 右圆括号和左大括号之间也要有个空格。但如果语句中某个
if-else
分支使用了大括号的话, 其它分支也必须使用。
总述
switch
语句可以使用大括号分段, 以表明 cases 之间不是连在一起的. 在单语句循环里, 括号可用可不用. 空循环体应使用{}
或continue
.说明
switch
语句中的case
块可以使用大括号也可以不用, 取决于你的个人喜好. 如果用的话, 要按照下文所述的方法.如果有不满足
case
条件的枚举值,switch
应该总是包含一个default
匹配 (如果有输入值没有 case 去处理, 编译器将给出 warning). 如果default
应该永远执行不到, 简单的加条assert
空循环体应使用
{}
或continue
, 而不是一个简单的分号.
使用
//
或/* */
, 统一就好.如果一个
.h
文件声明了多个概念, 则文件注释应当对文件的内容做一个大致的说明, 同时说明各概念之间的联系. 一个一到两行的文件注释就足够了, 对于每个概念的详细文档应当放在各个概念中, 而不是文件注释中.不要在
.h
和.cc
之间复制注释, 这样的注释偏离了注释的实际意义.函数声明
基本上每个函数声明处前都应当加上注释, 描述函数的功能和用途. 只有在函数的功能简单而明显时才能省略这些注释(例如, 简单的取值和设值函数). 注释使用叙述式 (“Opens the file”) 而非指令式 (“Open the file”); 注释只是为了描述函数, 而不是命令函数做什么. 通常, 注释不会描述函数如何工作. 那是函数定义部分的事情.
函数声明处注释的内容:
- 函数的输入输出.
- 对类成员函数而言: 函数调用期间对象是否需要保持引用参数, 是否会释放这些参数.
- 函数是否分配了必须由调用者释放的空间.
- 参数是否可以为空指针.
- 是否存在函数使用上的性能隐患.
- 如果函数是可重入的, 其同步前提是什么?
- 不要 从
.h
文件或其他地方的函数声明处直接复制注释. 简要重述函数功能是可以的, 但注释重点要放在如何实现上.
代码缩进就是通过在每一行代码前面插入一定数量的空格,使得代码块之间的关系更加清晰、可读性更高
以前没有,现在开始严格要求自己
第二题
分别⽤ for while do-while 实现:计算并输出:
n! = 1 × 2 × 3 × … × n
for循环
#include<stdio.h>
int main(){
int n=0;
int sum=1;
int i;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum *=i;
}
printf("%d!=%d",n,sum);
return 0;
}
while循环
#include<stdio.h>
int main()
{
int n;
int i=1,sum=1;
scanf("%d",&n);
while(i<=n)
{
sum=sum*i;
i++;
}
printf("%d!=%d",n,sum);
return 0;
}
do - while 循环
#include<stdio.h>
int main()
{
int n;
int i=1,sum=1;
scanf("%d",&n);
do{
sum=sum*i;
i++;
}
while(i<=n);
printf("%d!=%d",n,sum);
return 0;
}
3. 编程题(二):
计算圆周率π.
著名的莱布尼兹公式:3.14...4=∑∞k=0(−1)k2k+1=1−13+15−17+...+(−1)k2k+1
#include <stdio.h>
int main(){
double y =0;
int i =0;
while (i<1000){
if (i%2==0){
y+=1.0/(2*i+1);
} else {
y-=1.0/(2*i+1);
}
i++;
}
double pi =4*y;
printf("圆周率π的值为:%lf", pi);
return 0;
}
4.编程题(三):
编写⼀个程序,使⽤ while 循环计算斐波那契数列的前20个数字,并将它们输出到屏幕上。
斐波那契数列是⼀个数学上的经典数列,起始于0和1,之后的 每⼀项都是前两项的和。它的前⼋项为:0,1,1,2,3,5,8,13,……
#include <stdio.h>
int main() {
int a = 0, b = 1;
int count = 0;
while (count < 20) {
printf("%d ", a);
int temp = b;
b = a + b;
a = temp;
count++;
}
return 0;
}
5.编程题(附加题):
编写⼀个程序,接受⽤户输⼊的整数,然后按照相反的顺序输出这些数字。例如,输⼊为 12345,输出应为 54321。
int main()
{
int n;
int t = 0;
int d;
scanf("%d", &n);
do {
d = n % 10;
t = t * 10 + d;
n/=10;
} while (n > 0);
printf("%d",t);
return 0;
}