蓝桥杯单片机必学——C语言例题(一)


前言

更新单片机学习者必学的C语言例题解析.


一、题目

1.输入x,y的值,如果x大于等于y,输出其积,否则输出其商。
2.判断闰年
3.输入一个分数,判断其等级:A,B,C,D,E
4.输入一个等级,输出其对应的分数区间(如:A—>(90-100))

二、解析

1.要求输入两个变量的值,再判断,判断后再求结果:所以想到有scanf,if等语句的使用,至于定义什么类型的变量,这边建议是定义实数型。
2.闰年的判断:一般方法是用年份数去除4或400,如果除得的商是整数而没有余数,那么这一年是闰年,也是用if,主要就是判断余数喽。
3,4:两个都是选择性的题目,所以都可以用switch或者if来写。

三、代码

#include <stdio.h>
int main()
{
	float x,y,value;
	printf("请输入x,y的值,并用空格隔开再回车确定\n");
	scanf("%f %f",&x,&y);
	if(x>y)
	{
		value=x*y;
	}
	else value=x/y;
	
	printf("value=%f",value);
}
#include <stdio.h>

int main()
{
	int year;
	while(1)
	{
		printf("请输入年份\n\n");
		scanf("%d",&year);
		if(((year%4==0)&&(year%100!=0))||(year%400==0))
		{
			printf("%d是闰年\n",year);
		}
		else printf("%d是平年\n\n",year);
	}
}
#include <stdio.h>
int main()
{
		float fenshu;

		printf("请输入你的分数并按回车确定\n");
		scanf("%f",&fenshu);
		if(fenshu<=20)
		{
			printf("您的分数等级为 E\n");
		}
		else if(fenshu<=40)
		{
			printf("您的分数等级为 D\n");
		}
		else if(fenshu<=60)
		{
			printf("您的分数等级为 C\n");
		}
		else if(fenshu<=80)
		{
			printf("您的分数等级为 B\n");
		}
		else if(fenshu<=100)
		{
			printf("您的分数等级为 A\n");
		}
	
}
#include <stdio.h>
int main()
{
	char dengji;
	printf("请输入你的等级\n");
	scanf("%c",&dengji);
	switch(dengji)
	{
		case 'A':
			printf("您的分数区间为90-100");
		break; 
		case 'B':
			printf("您的分数区间为80-90");
		break; 
		case 'C':
			printf("您的分数区间为70-80");
		break; 
		case 'D':
			printf("您的分数区间为60-70");
		break; 
		case 'E':
			printf("您的分数区间为0-60");
		break; 
	}
}

总结

后面两个题目的方法我只写了一个,大家试着写另一个方法,下期也会更新另外的方法.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以帮您解答单片机定时器的C语言编程题。请问您有具体的题目或要求吗?如果没有,我可以提供一个简单的例子。 假设您使用的是STC89C52单片机,我们可以编写一个程序,利用定时器中断实现LED灯的闪烁。具体步骤如下: 1. 设置定时器的初值和重装载值,使得定时器中断周期为1秒。 ``` TMOD = 0x01; // 设置定时器0为模式1 TH0 = 0x3C; // 设置计数初值为0x3C TL0 = 0xAF; // 设置计数初值为0xAF ET0 = 1; // 使能定时器0中断 TR0 = 1; // 启动定时器0 ``` 这里的计数初值是通过一个公式计算得出的,公式为:计数初值 = 65536 - (定时器中断周期 / 12 / 晶振频率)。假设晶振频率为12MHz,定时器中断周期为1秒,则计数初值为0x3CAF。 2. 在中断服务函数中控制LED灯的状态翻转。 ``` void timer0_isr() interrupt 1 { static unsigned char led_state = 0; // LED灯状态,初始为关闭状态 TH0 = 0x3C; // 重装载计数初值 TL0 = 0xAF; led_state = !led_state; // 翻转LED灯状态 P1_0 = led_state; // 控制LED灯的输出 } ``` 这里的中断服务函数是定时器0的中断服务函数,当定时器0计数达到重装载值时,会触发中断。在中断服务函数中,我们重装载计数初值,然后翻转LED灯的状态,最后控制LED灯的输出。 3. 在主函数中等待中断发生。 ``` void main() { EA = 1; // 全局中断使能 while (1) { // 等待中断发生 } } ``` 在主函数中,我们打开全局中断使能,并且等待中断发生。因为定时器0的中断周期为1秒,所以LED灯会每秒翻转一次。 以上就是一个简单的单片机定时器的C语言编程例子,希望能够对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

通信好难学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值