#include <stdio.h>
/*
printf函数
printf("格式控制”,输出列表);
如:printf("%d, %c\n",a,b);
一、“格式控制是” 由""所括起来的,称为格式字符串,
格式控制包含两个信息——格式声明和普通字符,
(1)格式声明——由%和格式字符组成,如%d和%C,作用是将输出的数据转换为指定的格式输出
(2)普通字符——双引号内的逗号、空格和换行符\n等,也可以包含其他字符
二、”输出表列“是程序需要输出的一些数据a,b
*/
int main()
{
int a_data = 3; // ;一个分号代表一个语句的结束
float f_data = 2.3; //float 浮点数的数据类型
char c_data = '#'; //字符型数据类型
int dividend = 10; //整数型 被除数
float divisor = 3.14; //浮点数 除数
float result;
result = (float)dividend / divisor; //所得的商,强制转换,将整数转换为小数
printf("打印一个结果,***爱编程\n");
printf("***一定能学会嵌入式,一定能找到嵌入式的工作\n");
printf("A_Data=%d\n",a_data);
a_data = 100;
printf("修改后的: A_Data=%d\n",a_data); //占位符以%开头
printf("16进制输出A_Data=0x%x\n",a_data);
printf("输出小数f=%f\n",f_data);
printf("输出一个字符c=%c_data",c_data);
printf("输出a_data的地址%p\n",&a_data); //&取值符
printf("result=%f\n",result);
printf("result2=%f\n",(float)dividend / divisor);
//两种不同的输出方式,一种是用变量名,一种是用其赋的值
return 0;
}
#include <stdio.h>
//(1)用%f输出实数,只能得到6位小数,结果是0.333333
int main()
{
double num1 = 1.0;
// printf("%f\n",num1/3);
/*
(2)格式说明符%m.nf的作用:
m:指定输出的总最小宽度(包括整数部分、小数点和小数部分)
n:指定小数部分的位数,控制四舍五入和精度。
若数值的实际宽度小于m,左侧补空格;若大于m,按实际宽度输出;
若小数位数不足n,右侧补零;若超过n,四舍五入到第n位。
*/
double data1 = 3.1415926;
printf("default: %f\n",data1); //输出3.141593(默认6位小数)
printf("总宽度7位,保留两位小数(左侧补3个空格):%7.2f\n",data1); //输出 3.14
printf("%3.2f\n",data1); //输出3.14
printf("保留两位小数:%.2f\n",data1);
//如果把小数部分指定为0,则不仅不输出小数,小数点也不输出
printf("输出结果为1,左侧补2个空格:%3.0f\n",num1);
/*
(3)输出的数据向左对齐,用%-m.nf
在m.n的前面加一个负号,其作用与%m.nf形式作用基本相同,但当数据不超过m时,
数据向左靠,右端补空格
*/
// 注意:必须使用半角减号"-",而非全角符号"-"
printf("%%-25.15f : |%-25.15f|\n", num1); // 左对齐,右侧补空格
printf("%%25.15f : |%25.15f|\n", num1); // 右对齐,左侧补空格
// %%用于在printf系列函数中输出一个百分号字符%
return 0;
}
put_get的输入输出方法
#include <stdio.h>
/*
puts和printf都是用于输出内容的函数,其区别是:
(1)puts会自动加入换行符,无需添加\n
(2)printf支持多种数据类型的输出,而puts只支持字符串输出
*/
int main()
{
char c;
puts("请输入一个字符");
c = getchar(); // get用于输入字符或字符串,读取单个字符
puts("你输入的字符是");
putchar(c); // 用于输出字符或字符串,输出单个字符,并且不用添加格式声明符
return 0;
}
关于字母大小写转换的小练习:
#include <stdio.h>
//将大写字母转换成小写字母
int main()
{
char a = 'a';
char b = 'b';
char A = 'A';
char B = 'B';
printf("%c,%c,%c,%c\n",a,b,A,B);
printf("a=%d,b=%d,A=%d,B=%d\n",a,b,A,B); //不同字母对应的ASCII码值(差值为32)
/*
小写字母a-z:对应的ASCII值范围是97-122
大写字母A-Z:对应的ASCII值范围是65-90
*/
puts("请输入一个大写字母");
scanf("%c",&a);
b = a+32; // 大小写转换:通过加减 32 实现大小写字母的相互转换
printf("你输入的字母对应的小写字母是 %c\n",b);
/*
scanf("%c", &a);的副作用:
当用scanf("%c", &a);输入一个大写字母(例如 A)后,会按下回车键(Enter),
此时输入缓冲区中会包含两个字符:
输入的字母(如 A),换行符\n(由回车键产生),scanf 会读取字母 A,但换行符 \n 仍残留在输入缓冲区中。
getchar() 的行为:
第38行的第一个 getchar():它的作用是读取缓冲区中残留的 \n 并丢弃,防止其影响后续输入。
第39行的 putchar(getchar()+32); 此时输入缓冲区已为空,程序会等待用户输入一个新的字符。
*/
printf("测试\n");
getchar();
putchar(getchar()+32);
return 0;
}