学好嵌入式从每天做起加油!

发布时间:2024年01月21日

总结:

今天学习了如何定义变量的细节处理,学到了不同类型的赋值运算,还有各种语句的具体形式和概念;同时还重点学习了输入输出的定义和类型,以及其中所用到的占位符的使用方法和细节。

?一、定义变量(起名字)

1.尽量用单词

? 可以用单词或者用缩写形式

2.禁止用拼音

? 拼音在程序中会给人一种很模糊的意思 增加了程序的可读难度

3.格式

? 驼峰命名法:

? a.大驼峰 NewNumber? 两个单词的第一个字母都为大写 看着更具层次感

??b.小驼峰 newNumber? 第二个单词的第一个字母写成大写 在程序中更突出

? c.内核命名 New_Number? 再两个单词中间加上下划线

注意:

? 在整个程序编写中尽量使用一种命名法

二、赋值运算

一般要求:左右两边类型匹配

不同类型数据间混合赋值

a.高精度给低精度赋值 会出现精度丢失(损失:小数点后面位数变少) 低精度给高精度赋值 无影响

b.长类型给短类型赋值 会出现高位截断 (截断:短整型最多能放多少字节)只打印出低位数据

c.短类型赋值给长类型 会出现符号位扩展

? 无符号位: 结果会在前面补零

? 有符号位:?符号位扩展(最高位充当符号位)

? ? (1)最高位为0?则结果前面补0

? ? (2)最高位为1?则结果前面补1

拓展:

? 输出中%d,%o,%#x都默认为有符号int型

三、语句

1.控制语句

如:if()

? {

? }else

? ? ? ? {

? ? ? ? ?}

2.函数调用语句

? 如:printf("hello world");

3.表达式语句

? 如:1+2 ;2+3;

4.空语句

?如: ;? // 空? (只有一个分号 程序无法识别)

5.复合语句

如:{

? ? ? ? ? ?多条语组合 一起 表达一个意思

? ? ? ?}

6.赋值语句

如:a=1;? num1=36;? ?(将一个数值或者字符赋值为一个被初始化的变量)

四、输入输出

? 用过鼠标键盘将信息输入到计算器的(内存)中 再有由显示屏或外部显示器输出

注意:

1.c语言并不提供输入输出功能

? c语言中输入输出的语句都是通过标准库的调用实现的,比如我们常用的scanf、printf之类的都是编写好的库函数

2.我们用到的是已经写好的标准的输入输出库

? 如我们常用的#include? <stdio.h>这种类型的就是我们所用的库函数

3.三组函数

? a.单个字符输入输出
? ? getchar? //

int grtchar(void);? //? void? 表示空类型

功能

? 在键盘上获得一个单个字符? 他有一个整形型的返回值??成功读到是时会返回从键盘输入第一个字符的ASSCII码

? ? ???putchar? //

int putchar(void);? //

功能

? 向终端输出一个字符,把参数char指定的字符(无符号)写入到c的库函数中

? b.格式化的输入输出? *
? ? printf? //?
格式化输出函数

printf("格式控制字符串",输出列表);

格式控制字符串:

? %开头的成为占位符? 只要不是占位符其他都是普通字符(原样输出)

? 占位符 与 输出列表从左到右逐个匹配(如果占位符个数多余输出列表,多的输出随机值)

占位符:

//整型

%d: 是以有符号的十进制形式输出

%u:是以无符号的十进制形式输出

%x:是以十六进制形式输出

%o:是以八进制形式输出

//浮点数
%f:是以小数的形式输出 单数最多保留6位

%g:是以最简洁的形式输出 小数点后面的零位都会被省略

%e:是以科学计数法的形式输出

//字符

%c:是以字符的形式输出

%s:是以字符串的形式输出

辅助控制符

#:%[辅助控制符]x 输出十六进制的前缀

m(数字):输出宽度----默认右对齐;想要左对齐就在数字前加一个负号 如:%5d

.n(数字):控制输出小数的位数? 在字符串里输出固定前多少位 如:%.3f

l? //? long型

ll? //long long型

h? // 短整型 指的是一半的意思? 占两个字节? 如%hc? 只输出原来字符的一半? 本来输出abcd 结果输出ab? 在计算中本来要输出:

1111? 0100? 0010? 0100? 0000? 结果输出:

? ? ? ? ?0100? 0010? 0100? 0000? (刚好输出原来数据的低两位字节)

hh //? 占一个字节

? 注意:h和hh最后输出的结果也是有符号型 输出的结果的最高位为结果数值的符号

? ? scanf? //

格式:scanf(”格式控制字符串“,地址列表)

占位符:占了一个位置,将输入的数据,转换为 占位符指定的格式? 放的地址指定的空间上 所使用的占用符同时也决定能识别字符的范围

//整型

%d: 将输入的数据转换为有符号的十进制形式

%u:将输入的数据转换为无符号的十进制形式

%x:将输入的数据转换为十六进制形式

%o:将输入的数据转换为八进制形式

//浮点数
%f:将读入的数据转换成小数的形式

%g:将读入的数据转换成简洁的形式 小数点后面的零位都会被省略

%e:将读入的数据转换成科学计数法的形式

//字符

%c:将读入的数据转换成字符的形式

%s:将读入的数据转换成字符串的形式

注意:

? 1.参数一定要写取地址&

? 2.多个数据输入时以空白符号作为分隔符(空格 回车 TAB)

? 3.浮点数据输入时:

? ? dobule-------%lf

? ? int-------%d

? ? long------%ld

? ? long long------%lld

? ? (总结一句话就是类型要匹配)

? 4.辅助控制符m(数字):输入m个字符操作结束 正常读入m个字符 超过m个字符 则值读满m字符

? 5.scanf匹配结束条件:scanf ("%d%d%d",&a,&b,&c); 每个%d依次对应后面的字符 多一个字符的话 多余的不会读取 少一个字符的话 则%d会随机都除一个垃圾值

? ? a.空白符? b.指定宽度(%3d)? c.非法字符(特殊字符、字母)

? 6.%c字符占位符:几乎可以识别键盘上的任何字符

注:一个空白符可以匹配任意多个空白符

? ? %*c:跳过一个字符项

作业:

#include <stdio.h>
#include <math.h>

int main(void)
{
	double a,b,c,s,area;

	printf("输入三边长:\n");
	scanf("%lf %lf %lf",&a,&b,&c);

	if ((a+b)>c&&(a+c)>b&&(b+c)>a&&(a-b)<c&&(a-c)<b&&(b-c)<a)
	{
		s=(a+b+c)/2;
		area=sqrt(s*(s-a)*(s-b)*(s-c));
		printf("area=%g\n",area);
	}else
   	printf("三边不符合构成三角形的条件!\n");

	return 0;
}

文章来源:https://blog.csdn.net/2201_75392588/article/details/135666462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。