C语言学习笔记1(含错题等)


今天学了第一章1.1和1.2节

讲了c语言程序设计的概念相关

错题:

1,C程序由函数组成,函数是一种子程序;

2,上机运行以下程序,

#include /* 编译预处理命令 */
int main(void) /* 主函数 */
{
int n; /* 变量定义 */
int factorial(int n); /* 函数声明 */

scanf("%d", &n); /* 输入一个整数 */
printf("%d\n", factorial(n)); /* 调用函数计算阶乘 */

return 0;
}

int factorial(int n) /* 定义计算 n! 的函数 */
{
int i, fact = 1;

for(i = 1; i <= n; i++){
fact = fact * i;
}

return fact;
}

问:输入整数13,输出结果是错误的,其原因是什么?

答:运算结果超出了整数的取值范围(答的时候没看到,直接0分,算一个错题吧。要是是真实考试,我直接当场去世。)

个人思考:

执行while循环的时候,计算1到100的累加和,i++放在sum前后有什么区别:

①i++在sum后:

②i++在sum前:

 为了显示区别,我添加了语句输出i和s的值:

前:

 后:

发现程序多执行了一次循环,

得出结论:

如果i++在前面 最后i=100时 i<=100还是成立,还会再执行一次循环 ,i 就变成101 然后sum=sum+101; 再加101的结果不是我们要的 如果i++在sum=sum+i;后面 当i=100时 就不会执行循环了

比如i = 0;如果写前面的话,sum将加1,2,3,4....101.

写后面就是sum加0,1,2,3,4...100.