嵌入式学习第四天!(printf、scanf、if的运用)

1. printf 函数的运用

        1. 打印非输出控制符:

printf("Hello World!");

        转义字符:

\n换行符换行,将当前位置移到下一行开头
\t横向制表符水平制表(跳到下一个 Tab 位置)
\b退格符退格,将当前位置移到前一列
\r回车符回车,将当前位置移到本行开头
\\\字符代表一个反斜杠字符 “ \ ”
\""字符代表一个双引号字符
\''字符代表一个单引号字符

        利用上诉不同符

        2.打印单个输出控制符:

int Num = 0;
double f = 3.14;
printf("Num = %d\n",Num);

        printf 格式字符:

%d按照十进制打印
%o按照八进制打印
%x按照十六进制打印
%c按照字符打印
%f按照浮点数类型打印
%s按照字符串打印
%p按照指针类型打印
%u按照无符号类型打印
%e按照科学计数法打印浮点数类型
%%打印%号

                int:整型使用 %d 打印

                unsigned:无符号类型使用 %u 打印;

                char:字符型使用 %c 打印;

                float: 单精度浮点型使用 %f 打印;

        3. 打印多个输出控制符

int Num1 = 100;
int Num2 = 200;

printf("Num2 = %d, Num1 = %d\n", Num2, Num1);

        注意:输出控制符的个数必须与后面的表达式个数一一匹配

        4. printf 格式化打印

%ndn:域宽,数据不足域宽,高位用空格补齐
%0nd0:数据不足域宽,高位用 0 补齐
%-nd-:左对齐
%.mfm:保留小数点后 m 位有效数字

        练习:

        设a,b为int型变量,x,y为 float 型变量,c1,c2为 char 型变量,且设a = 5,b = 10,x = 3.5,y = 10.8,c1 = 'A',c2 = 'B'。为了得到以下的输出格式和结果,请写出对应的printf语句。

        (1)a = 5,b = 10,x + y = 14.3

printf("a = %d, b = %d, x + y = %.1f\n", a, b, x+y);

        (2)x - y = -7.3,a - b = -5

printf("x - y = %.1f, a - b = %d\n", x-y, a-b);

        (3)c1 = ’A’ or 65(ASCII) c2 = ’B’ or 66(ASCII)

printf("c1 = '%c' or %d(ASCII) c2 = '%c' or %d(ASCII)\n", c1, c1, c2, c2);

2. scanf 函数的运用:

        1. 接收非输入控制符

scanf("m");

        非输入控制符需要原封不动的从终端输入

        2. 接收输入控制符

%d按照有符号十进制接收数据
%c按照字符接收数据
 %c接收一个 '  ' 和 '\n' 的字符
%f按照 float 接收数据
%lf按照 double 接收数据
%s按照字符串接收数

        练习

                从终端接收圆的半径,打印圆的周长和面积

vim test2.c
gcc test2.c -o test2
./test2

#include <stdio.h>
#define PI 3.1415926


int main()
{
	double r = 0;
	double s = 0;
	double c = 0;

	printf("请输出一个圆的半径值:\nr = ");

	scanf("%lf",&r);

	s = PI * r * r;
	c = 2 * PI * r;

	printf("圆的面积为:s = %.3lf\n",s);
	printf("圆的周长为:c = %.3lf\n",c);

	return 0;

}

        3. 接收多个输入控制符:

int Num1 = 0;
int Num2 = 0;
float f = 0;

scanf("%d %d", &Num1. &Num2);
scanf("%d %f", &Num1. &f);

        练习:

                 从终端接收两个数,打印出这两个数四则运算的结果

vim test3.c
gcc test3.c -o test3
./test3

#include <stdio.h>

int main(void)
{
	double Num1 = 0;
	double Num2 = 0;

	scanf("%lf %lf",&Num1,&Num2);

	printf("Num1 + Num2 = %.3lf\n",Num1+Num2);
	printf("Num1 - Num2 = %.3lf\n",Num1-Num2);
	printf("Num1 * Num2 = %.3lf\n",Num1*Num2);
	printf("Num1 / Num2 = %.3lf\n",Num1/Num2);

	return 0;
}

        注意:

                1. scanf 如果输入数据与想要接收的数据不匹配,从不匹配的位置开始不再向后读取;

                2. scanf 除了 %s 形式外,都需要加 &;

                3. scanf 除了 %c 形式外,均无法接收 ' ' 和 '\n' 字符

                4. scanf 中  %c 可以接收非 ' ' 和 '\n' 字符

                5. scanf 中严禁\n

3. puts函数的运用:

        功能:在终端打印一行字符串

        示例:

puts("Hello World!");

        注意: puts会在字符串末尾多打印一个\n字符

4. gets函数的运用:

        功能:从终端接收一行字符串

        示例:

    char str1[32] = {0};
	char str2[32] = {0};

	gets(str1);
	scanf("%s",str2);
	
	puts(str1);
	printf("%s\n",str2);

        从输出结果可知:与 scanf 函数相比 gets 可以输入带空格的字符串,但 scanf 函数接收到空格后自动停止输入。(报错属于正常现象,不用理会!)

        注意:

                1. gets 会去掉从终端接收的 \n 字符

                2. gets 可以接收带 ' ' 的字符串,scanf 无法接收带 ' ' 的字符串

C语言流程控制:

      1. 顺序结构:

                从main函数开始执行,执行到main结束

      2. 分支结构

                1. 逻辑表达式:

                        1. 关系运算符:

>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于

                        2. 逻辑运算符:

&&逻辑与一假为假,全真为真(既...又...)
||逻辑或一真为真,全假为假(要么...要么...)
  !逻辑非真取非得加,假取非得真

                                截断特性:

                                        1. 逻辑与左边为假值,右边不再计算

                                        2. 逻辑或左边为真值,右边不再计算

                2.  if 

                        简单分支:

if(逻辑表达式)
{
    语句块1;
}
else
{
    语句块2;
}

                注意:

                1. if 后面必须加判断条件 else 不能加判断条件;

                2. if 可以脱离 else 单独使用,但是 else 不能脱离if单独使用;

                3. if 和 else 不加括号,默认控制一句代码,为了保证程序不出错,一句代码也要加括号;

作业:

1.从终端接收三角形三边的长,计算三角形的周长和面积(提示:海伦公式)

        根号:sqrt函数,在代码前加入#inclued <math.h>

        编译时在后面加 -lm

2. 从终端输入一个数,利用if判断,打印出该为为奇数还是偶数

3. 从终端输入一个年份,打印出该年是闰年还是平年?

        普通闰年:   4的倍数却不是100的倍数

        世纪闰年:   400的倍数 

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值