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.