在我们使用计算机解决问题是,不免要用到各种编程语言,在各类编程语言中,我们发现都会出现的一种程序结构——循环结构
循环结构的最大的一个特点就是可以重复执行某段代码(不知疲倦的当牛马),在C语言中提供三种循环语句——for循环、while循环、do—while循环,今天我们介绍一下for循环
for循环非常适合循环次数已知的循环
第一题:用for循环实现累加运算
int main()
{
int i = 0, sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
printf("%d\n", sum);
}
第二题:从键盘输入整形变量n的值,然后计算并输入1~n所有数的阶乘值(1!,2!,3!,4!,……,n!)的累加和
int main()
{
int n = 0, i = 0;
int sum = 0;
long p = 1;
scanf("%d", &n);
for (i = 1; i <= n; i += 1)
{
p *= i;
sum += p;
}
printf("%d\n", sum);
return 0;
}
第三题:你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)
int main()
{
long sum = 0, i = 0;
for (i = 0; i <= 64; i++)
{
sum += pow(2, i);
}
printf("%d\n", sum / (1.42 * pow(10, 8)));
return 0;
}
问题
在我们刚学习这些题目一定会出现各种情况,特别是初学C语言会出现各种各样的问题,那么现在我们分析这些题目,并分享一下我在开始学习C语言时出现的问题
1.读不懂题目含义,不知道题目说什么意思
例如第一题中的累加,第二题中的阶乘,这是你数学出了问题,和C语言无关
2.无法找到一个数学表达去描述问题
这是一个开始学习C语言的一个通病,在开始学习C语言时,需要我们解决数学问题,这时候会出现找不到数学表达式的情况,例如在第三题中国王需要给大臣多少麦子,这个数学表达式就是2的n次方,n的范围就是0<n<64,
3.出现一些Bug,但是编译器无法报错,自己也检查不出来
比如第二题我用第二种解法给你们看一下,各位宝子们,看一看下面的代码,有啥错误(哈哈哈,这是我刚开始学C语言写的一个有Bug的程序,当然大佬肯定能看出来),其实我是运行时发现的这个错误
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
int ret = 1;
int sum = 0;
for (j = 1; j <= n; j++)
{
for (i = 1; i <= j; i++)
{
ret *= i;
}
sum += ret;
}
printf("%d\n", ret);
return 0;
}
这个错误需要用调试去看,不然看不不出来,正确的代码在下面
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
int sum = 0;
for (j = 1; j <= n; j++)
{
int ret = 1;
for (i = 1; i <= j; i++)
{
ret *= i;
}
sum += ret;
}
printf("%d\n", ret);
return 0;
}
这种错误在开始学习C语言也会遇到,如何解决,就需要去学习调试技巧了