c语言中循环变量赋初值的一些问题

题目:求11--20之间的全部素数

//输入一个大于3的数,判断它是不是素数
#include<stdio.h>
int main()
{
	int mum = 11 , sign = 0;  //此处没有定义i
	for (mum; mum <= 20; mum = mum + 2) //偶数可被2整除,定不是素数,故只计算奇数即可
	{

		for (int i=2; i < mum; i++)   //for循环的循环变量赋初值中给出了i的定义及初值
		{
			if (mum%i == 0) {
				//printf("%d不是素数\n", mum);
				sign = 1;
				break;
			}
			printf("i===%d\n", i);
		}
		if (sign == 0)
		{
			printf("%d\n", mum);
		}
		sign = 0;
	}
	//printf("i===%d", i);
	return 0;
}



结果如下所示 可见程序正常运行了

下述代码同样可以正常运行

#include<stdio.h>
int main()
{
	int mum = 11, i, sign = 0;   //定义了 i
	for (mum; mum <= 20; mum = mum + 2)  //偶数可被2整除,定不是素数,故只计算奇数即可
	{
		for (i = 2; i < mum; i++)   //给出了每次循环的初始条件 即循环变量赋初值
		{
			//printf("i=%d\n", i);
			if (mum%i == 0) {
				sign = 1;
				break;
			}
		}
		//printf("最内层for循环结束 i=%d\n", i);
		if (sign == 0)
		{
			printf("%d\n", mum);
		}
		sign = 0;
	}
	printf("i===%d", i);  //i=199,即循环过程中
	return 0;
}

但如果在程序最初定义 i 时给出 i 的值为2,而在循环过程中未给循环变量 i 赋初值,则for循环执行下一次循环时不会从2开始,而是从上一次循环结束时 i 的值开始,如下图第二次for循环 i 是从11开始。

 如果在下出令 i =2,又可正常运行了,及与最开始的两个代码等价。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值