C语言中输入输出常用的格式化字符

目录

1、输出格式化

2、输入格式化

 3、常用转义字符

4、练习代码:


1、输出格式化

printf:将数据(字符串)输出(打印)到终端

用法:
#include <stdio.h>
printf("字符串");//字符串多个字符的序列,printf就会输出 字符串

由于使用printf可能会输出各种数据的值,而直接写入printf的输出 "字符串" 就会当作字符 原样输出,
所以在printf的 "字符串" 中 可以包含一种叫做格式化字符,表示其中要输出的类型值,之后再添加具体的值
格式化字符:
%d: int类型
%hd:short类型
%ld:long类型
%u:unsigned int类型
%hu:unsigned short类型
%lu:unsigned long类型
%nd:n代表宽度。以n的宽度输出。不足补空格,大于n按实际长度输出。且右对齐
	    %3d		以宽度为3的十进制格式输出,如果数据长度<3,在左边补空格,否则按实际长度输出。
%c:char类型
%f:float类型
%lf:double类型
%.mf 		保留m位小数,遵循四舍五入
%n.mf 		数据宽度为n,右对齐,且保留m位小数,遵循四舍五入
%o:以八进制格式
%x:以十六进行格式
%s:字符串格式
%e:浮点数的指数表示

printf("字符串+格式化字符",格式化字符的值1,格式化字符的值2,格式化字符的值3,格式化字符的值4,.....)

注意:格式化字符和值要对应起来

2、输入格式化

 scanf:从终端由用户输入数据(从终端获取数据)

格式:
#include <stdio.h>
scanf("字符串+格式化字符",&变量1,&变量2,&变量3,....)

终端输入时,必须按照scanf "字符串"格式进行输入,通过格式化字符来确定输入的数据类型

注意:格式化字符与变量类型匹配

注意:

1、scanf中,%d、%f、%s 在输入时是不会获取'\n'、'\t'、空格

2、scanf中的%c 会获取'\n'、'\t'、空格 

 3、常用转义字符

\n 		换行,使光标跳转到当前行的下一行的开头,
\r		回车,使光标跳转到当前行的开头位置;
\b 		回退,使光标回退一格;
\t 		水平制表符;
\v              垂直制表符
\\ 		打印\;
\" 		打印“
%% 		打印%
\ddd    三个八进制数 '\72'代表:八进制数072
\xdd    两个16进制数 '\xab'代表: 十六进制0xab

4、练习代码:

//计算90的十六进制,打印结果
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a=90,c,d;
	char b;
	b=90%16+55;
	c=90/16;
	//d=c/16;
	printf("90=0x%d%c\n",c,b);
	printf("\x5A\n");
    printf("b=%#x\n",90);//十六进制打印90,添加#打印十六进制的标示符0x
	printf("\x35\n");//打印十六进制35的字符
	printf("\x41\n");//打印十六进制41的字符

	return 0;
}

输出结果:

90=0x5A
Z
b=0x5a
5
A
//计算c=0xc0,打印十进制整数
#include<stdio.h>
int main(int argc, const char *argv[])
{
	char c=0xc0;
	int b;
	b=16*12;
	printf("b=%d\n",b);
	printf("%d\n",c);
	//无符号字符型取值范围-128-127,
	//192超过取值范围,应该转换为二进制补码取反+1得到-64
	return 0;
}

输出

b=192
-64
//实现两个数的交换
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a,b,c;
	printf("请输入两个数:");
	scanf("%d %d",&a,&b);
	c=a;
	a=b;
	b=c;
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

输出

请输入两个数:34 45
a=45,b=34
//看类型是不是转换为无符号类型
#include<stdio.h>
int main(int argc, const char *argv[])
{
	unsigned int a=10;
	int b=-100;
	printf("%d",a+b);
	char c=192;
	printf("%d",b+c);//c超过char类型取值范围,值为-64,
	return 0;
}

输出

-90 -164
//设置a和b都是double类型的数据,且a=5.5,b=2.5,表达式(int)a+b/b的结果是多少
#include<stdio.h>
int main(int argc, const char *argv[])
{
	double a,b;
	a=5.5;
	b=2.5;
	printf("%lf\n",(int)a+b/b);

	return 0;
}

输出

6.000000
//终端输入一个整形数据,判断是偶数还是奇数
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a,b;
	printf("请输入一个数字:");
    scanf("%d",&a);
	if (a%2==0 && a!=0)
		printf("%d是一个偶数\n",a);
	else if(a==0)

		printf("%d不是偶数也不是奇数\n",a);
	else
		printf("%d是奇数\n",a);
	return 0;
}
//设x=2.7,a=8,y=4.9,表达式x+a%3*(int)x+(int)(y/5)%3的结果
#include<stdio.h>
int main(int argc, const char *argv[])
{
	float x=2.7,y=4.9;
	int a=8;
	printf("%f",x+a%3*(int)x+(int)(y/5)%3);
	return 0;
//a是整型变量,则执行表达式a=25/3%3的值是多少
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a;
	a=25/3%3;
	printf("%d\n",a);
	return 0;
}
//输入一个数,看这个数是不是水仙花数
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a,b,c,d;
	printf("请输入三个数:");
	scanf("%d%d%d",&a,&b,&c);
	if ( a*a*a+b*b*b+c*c*c == a*100+b*10+c)
	{	
		printf("能构成水仙花数\n");
		d=a*100+b*10+c;
		printf("%d",d);

	}
	else
		printf("不能构成水仙花数\n");
	return 0;
}
//赋值运算
#include<stdio.h>
int main(int argc, const char *argv[])
{
	int a=12;
	a*=2+3/2;
	printf("%d\n",a);
	return 0;
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值