嵌入式入门学习笔记,遇到的问题以及心得体会!
DAY 3!
笔记:
复习:
1.数据类型
整形:int short long longlong
浮点型:float double
字符型:char
构造数据类型
空类型:void
2.变量:
存储类型 数据类型 变量名
3.运算符
算数
关系
逻辑
赋值
条件
sizeof
位:<< >> & | ~ ^
4.进制转换
二进制
八进制
十进制
十六进制
5.标准输入输出函数
scanf:赋值变量需要加&;“”中的内容都需要输入
printf:可以不用添加变量
int i = 5;
101--->010
day3
分支语句:
需要判断表达式真假的时候,并输出不同结果
分支语句分类:
单分支
if(表达式)
{
执行语句;
}
双分支
if(表达式)
{
执行语句1;
}
else
{
执行语句2;
}
多分支
if(表达式1)
{
执行语句1;
}
else if(表达式2)
{
执行语句2;
}
……
else if(表达式n)
{
执行语句n;
}
switch(表达式)
{
case 常量表达式1:
执行语句;
break;
case 常量表达式2:
执行语句
break;
case 常量表达式3:
执行语句
break;
……
case 常量表达式n:
执行语句
break;
default:
执行语句
break;
}
单分支语句:
if(表达式)
{
执行语句;
}
int i;
您是否饥饿,是请输入1
请您用餐
结束代码
练习
条件:上课天数>10或15<年龄 <20
结果:判定成功:需要上晚自习
判定失败:不需要上晚自习*
#include<stdio.h>
int main()
{
//定义变量
int day;
int age;
//输入赋值
printf("please input days:");
scanf("%d",&day);
printf("please input age:");
scanf("%d",&age);
//执行判断,分别输出结果
if(day > 10 || (age > 15 && age < 20))
{
printf("you need go to wanzixi\n");
}
else
{
printf("you do not need go to wanzixi \n");
}
return 0;
}
双分支语句:
if(表达式)
{
执行语句1;
}
else
{
执行语句2;
}
15 < age <20 15 < age--->真为1,假为0
练习
条件:6~12上小学 12~15上初中 15~18上高中其他结束
#include<stdio.h>
int main()
{
//定义变量
int age;
//变量赋值
printf("请输入年龄");
scanf("%d",&age);
//执行判断,输出结果
if (age >= 6 && age <= 12)
{
printf("上小学\n");
}
else if(age > 12 && age <= 15)
{
printf("上初中\n");
}
else if(age > 15 && age <= 18)
{
printf("上高中\n");
}
else
{
printf("毕业了\n");
}
return 0;
}
多分支语句:
if(age >= 6 && age <= 12)
{
执行语句1;
}
else if(age > 12 && age <=15)
{
执行语句2;
}
else if(age > 15 && age <=18)
{
执行语句n;
}
else
{
执行语句;
}
练习
税后工资计算
请输入您的税前工资
3000 以内 %3
3000~12000 %10
12000~25000 %20
超过25000 %25
注:
这部分代码逻辑不难理解,主要在编写时不了解税率如何计算。
例如工资3000元以内直接扣除%3的税款后就是税后工资,但是如果工资是5000元,则是5000减3000,高出三千的部分乘以90%,三千元依然是乘以97%,最后两者累加才是税后工资。
#include<stdio.h>
int main()
{
double i;//税前工资
double j;//税后工资
printf("请输入税前工资金额:");
scanf("%lf",&i);
if(i <= 3000)
{
j = i * (1 - 0.03);
}
else if(i > 3000 && i <= 12000)
{
j = 2910 + (i - 3000) * (1 - 0.1);
}
else if(i > 12000 && i <= 25000)
{
j = 2910 + 8100 + (i - 12000) * (1-0.2);
}
else
{
j = 11010 + 10400 + (i - 25000) * (1 - 0.5);
}
printf("您的税后工资是:%lf\n",j);
return 0;
}
int i;
switch,case
switch(表达式) 6 6.00000001
{
case 常量表达式1:
执行语句;
break;
case 常量表达式2:
执行语句
break;
case 常量表达式3:6
执行语句
break;
……
case 常量表达式n:
执行语句
break;
default:
执行语句
break;
}
练习:
标号1:查询服务
标号2:业务办理
标号0:人工服务
其他标号:退出
请输入标号:
#include<stdio.h>
int main()
{
int i = 0;
printf("请输入您要选择的服务\n");
printf("查询服务请按1\n");
printf("业务办理请按2\n");
printf("人工服务请按0\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("进入查询服务\n");
break;
case 2:
printf("进入业务办理\n");
break;
case 0:
printf("进入人工服务\n");
break;
default:
printf("再见\n");
break;
}
return 0;
}
练习
此处代码串用了今天所学的两种方法
方法一:多分支的 if else if 语句
方法二:用了switch case 语句 不过在定义好变量之后加入了一段if语句用来判定成绩输入格式是否正确。
#include<stdio.h>
int main()
{
int i = 0;//定义变量作为成绩
printf("请输入成绩:");
scanf("%d",&i);
if (i >= 0 && i < 60)
{
printf("E\n");
}
else if (i < 70 && i >= 60)
{
printf("D\n");
}
else if (i < 80 && i >= 70)
{
printf("C\n");
}
else if (i < 90 && i >= 80)
{
printf("B\n");
}
else if (i >= 90 && i <= 100)
{
printf("A\n");
}
else
{
printf("输入错误");
}
/*if(i >= 0 && i <=100)
{
int k = i / 10;
//printf("%d",k);
switch(k)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("E\n");
break;
case 6:
printf("D\n");
break;
case 7:
printf("C\n");
break;
case 8:
printf("B\n");
break;
case 9:
case 10:
printf("A\n");
break;
}
}
else
{
printf("error\n");
}*/
return 0;
}
练习
使用switch case实现简易计算器,可实现两个数字的+ - * / 即可
#include <stdio.h>
int main()
{
float a,b;
//char c;
//printf("请输入要进行的运算符:");
//scanf("%c",&c);
printf("请输入所要计算的两个数字:");
scanf("%f,%f",&a,&b);
char c;
printf("请输入要进行的运算符:");
//scanf("%*c%c",&c);
scanf("%c",&c);
//printf("%c",c);
switch(c)
{
case '+':
printf("%.2f + %.2f = %.2f\n",a,b,a+b);
break;
case '-':
printf("%.2f - %.2f = %.2f\n",a,b,a-b);
break;
case '*':
printf("%.2f * %.2f = %.2f\n",a,b,a*b);
break;
case '/':
printf("%.2f / %.2f = %.2f\n",a,b,a/b);
break;
default :
printf("error");
break;
}
return 0;
}
作业:
1.从键盘输入一个年份,输入月份,输出该年该月是多少天?
#include<stdio.h>
int main()
{
int year;
int month;
printf("please input year and month:");
scanf("%d,%d",&year,&month);
if(month < 1 && month > 12)
{
printf("error!\n");
return 0 ;
}
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
switch(month)
{
case 2:
printf("zai zhe yi nian de zhe ge yue you 29 DAy!\n");
break;
}
}
else
{
printf("zai zhe yi nian de zhe ge yue you 28 DAY!\n");
}
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("zai zhe yi nian de zhe ge yue you 31 DAY!\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("zai zhe yi nian de zhe ge yue you 30 DAY!\n");
break;
}
return 0;
}
2.将今天课上的代码自己再过一遍;