求1到100的质数,又出现了BUG

参考1

异常信息
Run-Time Check Failure #3 - The variable 'b' is being used without being initialized.

在这里插入图片描述
异常代码:

#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include <stdio.h>	//输出1-100的所有质数

int main() {
    
    

	int a, b, i; 

	for (i = 2; i <= 100; i++) {
    
    
		for (a = 2; a < i; a++) {
    
    
			if (i != 2){
    
    
				if (i% a == 0)
					b = 1;
				//printf("%d是质数", i);
			}
			else
				printf("%d是质数\n", i);
		}
		if (b==1)
			printf("%d是质数\n", i);
	}
	
	return 0;
}

正确代码:

#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include <stdio.h>	//输出1-100的所有质数

int main() {
    
    

	int a, b, i=2; 

	for (i = 2; i <= 100; i++) {
    
    
		b = 0;	//目的是重置标志位,之前的BUG就是因为没有重置
		for (a = 2; a < i; a++) {
    
    		
				if (i % a == 0) {
    
    		//可以整除时。                让最后一个比较的数有特效
					b = 1;	//质数标志位
					break;
					//printf("%d是质数", i);
				}
		}
		if (b != 1)
			printf("%d是质数\n", i);
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42417585/article/details/105122195