变量的初始化问题(初学必犯错误之一):日志(四)

引言:

        在学习C语言的过程中:我们通常会犯一定的错误,在此我将大家普遍会犯的错误分享给大家,以供大家参考!以下题为参考:

【问题描述】依次输入一个整型数组的元素值,然后将该数组前n个元素中的值按逆序重新存放。例如,输入值的顺序为8,6,5,4,1,2,逆序存放后的顺序为2,1,4,5,6,8的顺序存放(注意是逆序存放而不是逆序输出)。

【输入形式】第一行输入数组的元素个数,第二行输入依次输入元素值,用空格分开
【输出形式】逆序存放后的输入元素,用空格分开
【样例输入】

5

12 23 8 76 10

【样例输出】10 76 8 23 12
【样例说明】输入中的第一行的5表示对数组的前5个元素进行逆序存放,第二行依次为前5个元素的值;输出结果为逆序存放后数组的前n个元素值。

开始题解:

                

#include <stdio.h>
int main()
{	
	int a[999], j,i,k,b;
	scanf ("%d",&j);
	for (i = 0;i < j; i++)
	{
		scanf ("%d",&a[i]);
	}
	for (i = 0 ;i < (j / 2);i++)
	{
		b = a[i];
		a[i] = a[j -1 - k];
		a[j -1 - k] =b;
		k++;
	}
	for (i = 0;i < j ; i++)
	{
	printf("%d ",a[i]);
	}

	return 0;
}

  这算是正确的题解:但是我们会发现这个程序不会输出任何东西!

    然后我们调试, 就会发现它的k的值是这样的:

这样的情况一般就是k值的初始化问题!在开始之处加上k = 0就能完美解决问题:

【思考】:我们这时候就想,对于变量的值是否是必要进行初始化呢?是不是所有的变量都需要初始化呢?

        回过来看平时所做的题(一下想不到什么例子,就在这给你们写一下总结):

【解决思考】:

               1.首先对于  所有变量在需要直接调用的情况下需要初始化:尤其是对于运算符的右边的量要进行操作的时候,尤其容易犯错!当然对于'<' 和'>' ‘||’  ‘&&’等等运算符的情况下一般不会出什么错误。但是对于循环操作数组的下标时容易犯错!没有对其进行初始化,结果出现错误!

              2.然后是对于自加,‘ += ’  ‘ *= ’ ‘ /= ’ ‘ -= ’这一类运算符贼容易犯错!

【总结】:

               首先,我们发现,对于必需要初始化的数值,一般都会是需要出现在左边的情况下以及使用这类‘+=’运算符时容易犯错!  比如    x += y;也就是  x  = x + y;这时候需要x  具有初始化值才能对其正确的运算;

              还有以及 需要进行直接使用的情况下需要进行初始化等等;

##这里差不多结束了,欢迎大家补充,和大佬纠正,谢谢;

##在这里分享一下关于递归的学习点击就可以访问:递归折半算法的简单实现

                                                                                青蛙跳阶的递归实现

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值