物联1234DX锋
1. 代码风格: C语言的编程规范和编程风格对于代码的可读性、可维护性和协作性都非常重要。
C++ 风格指南 - 内容目录:C++ 风格指南 - 内容目录 — Google 开源项目风格指南
要求:请浏览上方链接的内容,本门课程已学知识涉及到了哪些内容?请挑出其中3 个,并摘抄下来。重点浏览 「8. 注释」「9.8. 条件语句」「9.9. 循环和开关选择语 句」。
1.对基本条件语句有两种可以接受的格式。一种在圆括号和条件之间有空格,另一种没有。最常见的是没有空格的格式。哪一种都可以,最重要的是保持一致。注意所有情况下 if
和左圆括号间都有个空格. 右圆括号和左大括号之间也要有个空格。
2.switch
语句中的case
块可以使用大括号也可以不用,取决于你的个人喜好。如果用的话,要按照下文所述的方法。如果有不满足 case
条件的枚举值, switch
应该总是包含一个 default
匹配 (如果有输入值没有 case 去处理, 编译器将给出 warning)。如果 default
应该永远执行不到,简单的加条 assert。
空循环体应使用 {}
或 continue
, 而不是一个简单的分号.
3.不要描述显而易见的现象, 永远不要 用自然语言翻译代码作为注释, 除非即使对深入理解 C++ 的读者来说代码的行为都是不明显的. 要假设读代码的人 C++ 水平比你高, 即便他/她可能不知道你的用意:
你所提供的注释应当解释代码 为什么 要这么做和代码的目的, 或者最好是让代码自文档化.
思考:作为一名初学者,请描述一下什么是代码缩进,你平时是否有严格要求自己进行代码缩进呢?
代码缩进是通过规范代码格式体现出代码的层次结构和逻辑关系的语法规则。
是。
2. 编程题:
分别用 for while do-while 实现:计算并输出 n! = 1 × 2 × 3 × ⋯× n
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, sum = 1;
scanf ("%d",&n);
for (i=1; i <= n; i++) { //取i为1到n的各个值。
sum = sum * i; //将各个值相乘得到n的阶乘的值。
}
printf ("%d! = %d", n, sum);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i = 1, sum = 1;
scanf ("%d",&n);
while (i <= n) { //当i小于或等于n时循环。
sum = sum * i; //将1到n的各个值相乘。
i++; //i自增,即取1到n的各个值。
}
printf ("%d! = %d", n, sum);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i = 1, sum = 1;
scanf ("%d",&n);
do
{
sum = sum * i; //令1到n的各个值相乘。
i++; //i自增,即取1到n的各个值。
} while (i <= n); //当i小于或等于n时循环。
printf ("%d! = %d", n, sum);
return 0;
}
3. 编程题:
模仿PPT的课程内容,计算自然数 (直到最后一项的绝对值小于1e-7)的编程思路,计算圆周率 . 著名的莱布尼兹公式:
#include <stdio.h>
#include <stdlib.h>
main() {
double pai = 0.0, term = 1.0;
int n = 1, count = 1;
for (n=1; fabs(term) >= 1e-7; n = n + 2) { //n每次循环+2,n始终为奇数。
//当term足够小时不再循环
term = 1.0 / n; //使term为n的倒数
if (0 == count % 2) { //判断循环了偶数次还是奇数次,若是偶数次则减;
pai = pai - term;
}
else { //反之则加。
pai = pai + term;
}
count++; //计算循环的次数。
}
pai = 4 * pai; //将循环得出的值乘四即为圆周率的近似值。
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 num1 = 0, num2 = 1, numA = 0, numB = 1, count = 3;
printf ("%d %d ", num1, num2); //输出第一、二位数。
while (count <= 20) { //从第三位数开始,循环执行至输出第二十位数。
num2 = numA + numB; //此轮循环的后一位数等于上轮循环的前一位数和后一位数相加。
num1 = numB; //此轮循环的前一位数为上轮循环的后一位数。
numA = num1; //更新“上轮循环”的前一为数为此轮循环的前一位数。
numB = num2; //更新“上轮循环”的后一为数为此轮循环的后一位数。
count++; //计算输出了多少位数。
printf("%d ",num2); //输出此轮循环的后一位数。
}
return 0;
}
5. 附加题 编写一个程序,接受用户输入的整数,然后按照相反的顺序输出这些数字。例如,输入为 12345,输出应为 54321。
#include <stdio.h>
#include <stdlib.h>
int main() {
int num, count = 0;
scanf ("%d",&num);
while (num > 0) //当num为0,即已取num的各位数字时,循环结束。
{
count = num % 10; //通过求余得到最右边数。
num = num /10; //通过除以10,去掉最右边的数。
printf ("%d", count); //输出最右边的数。从右往左取值,即按相反顺序输出。
}
return 0;
}