C语言常见问题及其解决方法

    这篇文章用于记录我初学c以来遇到的一些问题,及我后续的解决方法,并会持续更新(会带有我个人的思考过程,可能较为冗长

下面是一个可能不太常见的问题,请看下面一串代码

int main()//打印1000到2000年的闰年数量
{
    int year = 0;
    int sum = 0;
    for (year = 1000; year <= 2000; year++)
    {
        if (year % 4 == 0 && year % 100 != 0)//闰年年份能被4整除,但不能被100整除 
        {
            sum = sum + 1;
        }
        else if (year % 400 == 0)//闰年另一个定义是“能被400整除”
        {
            sum = sum + 1;
        }
        printf("%d", sum);
        return 0;
    }

}

一眼看过去目的是为了打印1000-2000年的闰年数量,看起来代码也似乎没打错,但输出的结果

为什么会是0呢,一开始我以为是return 0的问题,因为学到现在只知道return有着返回值的作用,于是把0改为了sum以返回sum的值,但经过更改后输出的值仍然是0,很明显,并非是return的问题,仔细一看我想了一下会不会是for后大括号的遗漏,看了一眼,并没有,最后我们发现return 0放在的for的大括号中。所以此处代码的错误在于在结束时请勿把return错放在其他的大括号中

第二个和第三个的问题就放在一起讲了,第二个就是使用scanf函数时,如scanf("%d",a) ,在此处经常会容易将取地址符号&给遗忘,导致出现“返回值被忽略”的报错。第三个问题就是符号的问题,初学c语言者会受数学思维的影响,在需要用到相等条件时只用一个=号,然后发生“左值被忽略”的报错,所以在后续学习c语言的过程里,要改正这个想法。=号为赋值符号,==号为判断相等的符号。

下面有一些代码,我们的目的是“编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。

int main()//【一维数组】输入10个整数,求平均值
{
	int arr1[] = { 0 };
	int i = 0;
	int mid = 0;
	for (i = 0; i <= 9; i++)
	{
		scanf("%d",&arr1[i]);
		mid += arr1[i];
	}
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	printf("平均值是%d", mid / sz);
	return 0;

}

这个是一个关于初始化数组的问题,如果我们运行,并输入十个数字时,会发生一下报错(debug)。

对比答案的代码我发现在int arr1[]时没有规定数组的长度,所以当求mid的值时没有一个确定的数组长度,因此在后续需要数组时,需要定义一个数组的长度。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是指针? 答:指针是一个变量,它存储了一个内存地址。通过指针可以访问存储在该内存地址中的数据。 2. 什么是数组? 答:数组是一种存储相同类型数据的数据结构。数组中的每个元素都有一个唯一的索引,可以通过索引来访问数组中的元素。 3. 什么是结构体? 答:结构体是一种用户自定义的数据类型,它可以包含多个不同类型的数据成员。结构体的每个成员可以通过点操作符来访问。 4. 什么是位域? 答:位域是一种将多个变量存储在同一个字节中的技术。通过位域可以控制每个变量占用的位数,从而节省内存空间。 5. 什么是宏定义? 答:宏定义是一种将常量或代码片段替换为预定义文本的技术。通过宏定义可以提高代码的可读性和可维护性。 6. 什么是枚举? 答:枚举是一种定义一组命名常量的技术。枚举中的每个常量都有一个唯一的整数值,可以通过常量名来访问。 7. 什么是递归? 答:递归是一种函数调用自身的技术。通过递归可以解决一些复杂的计算问题,但需要注意递归的终止条件,否则会导致死循环。 8. 什么是指针数组? 答:指针数组是一个数组,其中的每个元素都是指针类型。通过指针数组可以保存多个指针,从而实现对多个变量的引用。 9. 什么是动态内存分配? 答:动态内存分配是一种在程序运行时动态分配内存的技术。通过动态内存分配可以根据需要为变量分配内存空间,从而提高程序的灵活性和效率。 10. 什么是文件操作? 答:文件操作是一种对磁盘文件进行读写操作的技术。通过文件操作可以将程序运行时的数据保存到文件中,或从文件中读取数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值