从0开始学c语言-13-打印闰年、素数、goto语句、关机程序

这篇博客适合初学者,从0基础开始介绍C语言,涵盖闰年判断(1000-2000年)、素数打印(100-200之间)的简化代码实现,以及使用goto语句创建的关机程序。通过实例讲解了条件判断、循环和转向语句,并分享了将程序作为服务添加到电脑及打包分享的方法。
摘要由CSDN通过智能技术生成

本人0基础开始学编程,我能学会的,你也一定可以,学会多少写多少。

下载安装请从官网入手,社区版本即可,这里主要使用的软件是VS2019,图标如下。

上一篇:从0开始学c语言-过渡-练习之猜随机数字游戏、求最大公约数_阿秋的阿秋不是阿秋的博客-CSDN博客

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语言有九种控制语句,可以分为以下三类:
        1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
        2. 循环执行语句: do while 语句、 while 语句、 for 语句;
        3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。

目录

练习1:

代码:

简化代码

练习2:

1·直接写

2·自己加个条件判断

3·进一步优化

4.源头上减少数据

goto语句

关机程序


练习1:

输出1000-2000年之间的闰年
1、被4整除,不能被100整除
2、被400整除

代码:

#include <stdio.h>
int main()
{
	int year = 0;
	int times = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if (year % 4 == 0)
		{
			if (year % 100 != 0)
			{
				printf("%d ", year);
				times++;
			}
		}
		if (year % 400 == 0)
		{
			printf("%d ", year);
			times++;
		}
	}
	printf("\n个数=%d", times);
	return 0;
}

我们可以看到代码中用了三个if语句,前两个if是且的关系,后一个if与前两个if是或的关系,那么我们就可以

简化代码

int main()
{
	int year = 0;
	int times = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if (((year % 4 == 0)&&(year % 100 != 0))||(year % 400 == 0))
		{
			printf("%d ", year);
			times++;
		}
	}
	printf("\n个数=%d", times);
	return 0;
}

练习2:

打印100-200之间的素数

素数也就是质数:只能被1和它本身整除,也就是说它不能被2和它本身-1之间的数字整除

1·直接写

int main()
{
	int a = 0;
	int b = 0;
	for (a = 100; a <= 200; a++)   //循环100个数
	{
		for (b = 2; b < a; b++ )   //这就是2和它本身-1之间的数字
		{
			if (a % b == 0) //意思是如果能被整除就跳出循环,不能便继续b++验证能否被整除 
				break;	//从这里跳出循环意味着不是素数
		}
		//来到这里的有两种情况
		//1.循环到一半,break跳出来的不是素数的情况
		//2.全部情况循环之后(b=a),不能被2和它本身-1之间的数字整除的素数
		//第二种情况的素数需要被输出
		//而我们找到的条件是a==b
		if (a == b)
			printf("%d ", a);
	}
	return 0;
}

2·自己加个条件判断

int main()
{
	int a = 0;
	int b = 0;
	for (a = 100; a <= 200; a++)   
	{
		int aqiu = 1; //默认是素数
		for (b = 2; b < a; b++)   
		{
			if (a % b == 0)
			{
				aqiu = 0;  //不是素数
				break;
			}
		}
		//两种情况,aqiu==1的需要被输出
		if (aqiu == 1)
			printf("%d ", a);
	}
	return 0;
}

3·进一步优化

m=a*b
a和b一定至少有一个数字小于等于开平方m的。(sqrt开平方

从这个数的因数范围内去验证是否能被整除。

int main()
{
	int a = 0;
	int b = 0;
	for (a = 100; a <= 200; a++)
	{
		int aqiu = 1; //默认是素数
		for (b = 2; b <= sqrt(a); b++)  
		//sqtr()返回的是doublele类型的所以这里最好强转一下(int)sqtr()
		{
			if (a % b == 0)
			{
				aqiu = 0;  //不是素数
				break;
			}
		}
		//两种情况,aqiu==1的需要被输出
		if (aqiu == 1)
			printf("%d ", a);
	}
	return 0;
}

4.源头上减少数据

#include <math.h>
int main()
{
	int a = 0;
	int b = 0;
	for (a = 101; a <= 200; a+=2)  //源头上筛检奇数
	{
		int aqiu = 1; //默认是素数
		for (b = 2; b <= sqrt(a); b++)
			//sqtr()返回的是doublele类型的所以这里最好强转一下(int)sqtr()
		{
			if (a % b == 0)
			{
				aqiu = 0;  //不是素数
				break;
			}
		}
		//两种情况,aqiu==1的需要被输出
		if (aqiu == 1)
			printf("%d ", a);
	}
	return 0;
}

goto语句

goto语句多用于跳出两层或者多层循环

先简单认识一下它

int main()
{
silent: //可以写在goto后面,注意是冒号
        //不过写在后面就是其他用途,而不是循环了
	printf("想哭\n");
	printf("不准哭,成年人的世界没有哭声\n");
	goto silent;
	return 0;
}

上面这段代码会一直循环这两句话,如果把silent放在其他地方也可以。这里只是演示一下goto会跳到哪里去。

注意:goto只能在一个函数范围内跳出来,不能跨函数

关机程序

要求:电脑在一分钟后关机,输入要求内容即可停止关机,否则一直输入直到正确停止关机或者输入错误一分钟后关机!

system指令是专门访问你的计算机的,想知道自己电脑指令的用法,就在电脑搜索cmd,就会打开这个窗口。

 输入shutdown -s -t 60并回车

意思是准备在60s后执行关机程序,如果输入错误的话会直接告诉你怎么用。

 这段代码的意思是,电脑在一分钟后关机,输入要求内容即可停止关机,否则一直输入直到正确停止关机或者输入错误一分钟后关机!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char qiu[20] = { 0 };
	while (1)
	{
		system("shutdown /s /t 60");   
//system执行系统命令,搜索cmd试试输入“shutdown /s /t 60”摁下回车就知道了,有的是-s才可以
		printf("您的电脑即将在一分钟后关机,请立即输入:我爱你\n则可终止关机程序!\n");
		scanf("%s", qiu);
		if (strcmp(qiu, "我爱你") == 0)
		{
			system("shutdown /a"); //这是终止关机程序
			printf("我也爱你~");
			break;
		}
	}
	return 0;
}

 

 

 OK,就是这样!

想发给朋友玩的:

1、电脑搜一下服务
将编译后的代码,也就是.exe文件以服务的形式添加到电脑里去,改成自动启动,只要电脑开机就会执行。

2、release

弄成release运行一遍,在相应文件夹中找exe文件,改个名字换个图标,发给别人玩。

有机会我会出视频讲解,不过目前我也是小白呢,感觉不适合给大家乱梳理思路,今后重点放在知识点上,练习题就……放文章里存个档吧哈哈哈

下一篇:从0开始学c语言-14-关于(1)函数定义、函数分类、函数参数、函数调用以及函数练习_阿秋的阿秋不是阿秋的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值