C语言——打卡(for循环)

在我们使用计算机解决问题是,不免要用到各种编程语言,在各类编程语言中,我们发现都会出现的一种程序结构——循环结构

循环结构的最大的一个特点就是可以重复执行某段代码(不知疲倦的当牛马),在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语言也会遇到,如何解决,就需要去学习调试技巧了

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值